Update to genscripts rev 382. This has more fixes for py3k and the modular rewrite...
[gentoolkit.git] / pym / gentoolkit / test / test_query.py
1 import unittest
2 import warnings
3 from tempfile import NamedTemporaryFile, mktemp
4 try:
5         from test import test_support
6 except ImportError:
7         from test import support as test_support
8
9 from portage import os
10
11 from gentoolkit import query
12 from gentoolkit import errors
13
14
15 class TestQuery(unittest.TestCase):
16
17         def setUp(self):
18                 pass
19
20         def tearDown(self):
21                 pass
22
23         def test_init(self):
24                 # valid queries must have at least one ascii letter or '*'
25                 invalid_queries = [
26                         '',
27                         '1',
28                         '/',
29                         '-1',
30                         '1/1',
31                 ]
32                 for q in invalid_queries:
33                         self.failUnlessRaises(errors.GentoolkitInvalidPackage,
34                                 query.Query, q
35                         )
36
37                 q1 = query.Query('gentoolkit')
38                 q1_tests = [
39                         (q1.query, 'gentoolkit'),
40                         (q1.is_regex, False),
41                         (q1.repo_filter, None),
42                         (q1.query_type, "simple")
43                 ]
44                 for t in q1_tests:
45                         self.failUnlessEqual(t[0], t[1])
46
47                 q2 = query.Query('gentoolkit-.*', is_regex=True)
48                 q2_tests = [
49                         (q2.query, 'gentoolkit-.*'),
50                         (q2.is_regex, True),
51                         (q2.repo_filter, None),
52                         (q2.query_type, "complex")
53                 ]
54                 for t in q2_tests:
55                         self.failUnlessEqual(t[0], t[1])
56
57                 q3 = query.Query('*::gentoo')
58                 q3_tests = [
59                         (q3.query, '*'),
60                         (q3.is_regex, False),
61                         (q3.repo_filter, 'gentoo'),
62                         (q3.query_type, "complex")
63                 ]
64                 for t in q3_tests:
65                         self.failUnlessEqual(t[0], t[1])
66
67                 q4 = query.Query('gcc:4.3')
68                 q4_tests = [
69                         (q4.query, 'gcc:4.3'),
70                         (q4.is_regex, False),
71                         (q4.repo_filter, None),
72                         (q4.query_type, "simple")
73                 ]
74                 for t in q4_tests:
75                         self.failUnlessEqual(t[0], t[1])
76
77                 q5 = query.Query('@system')
78                 q5_tests = [
79                         (q5.query, '@system'),
80                         (q5.is_regex, False),
81                         (q5.repo_filter, None),
82                         (q5.query_type, "set")
83                 ]
84                 for t in q5_tests:
85                         self.failUnlessEqual(t[0], t[1])
86
87         def test_uses_globbing(self):
88                 globbing_tests = [
89                         ('sys-apps/portage-2.1.6.13', False),
90                         ('>=sys-apps/portage-2.1.6.13', False),
91                         ('<=sys-apps/portage-2.1.6.13', False),
92                         ('~sys-apps/portage-2.1.6.13', False),
93                         ('=sys-apps/portage-2*', False),
94                         ('sys-*/*-2.1.6.13', True),
95                         ('sys-app?/portage-2.1.6.13', True),
96                         ('sys-apps/[bp]ortage-2.1.6.13', True),
97                         ('sys-apps/[!p]ortage*', True)
98                 ]
99
100                 for gt in globbing_tests:
101                         self.failUnless(
102                                 query.Query(gt[0]).uses_globbing() == gt[1]
103                         )
104
105
106 def test_main():
107         test_support.run_unittest(TestGentoolkitHelpers2)
108
109
110 if __name__ == '__main__':
111         test_main()