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