]> git.decadent.org.uk Git - dak.git/blob - tests/test_srcformats.py
dak heresy
[dak.git] / tests / test_srcformats.py
1 #!/usr/bin/env python
2
3 import unittest
4
5 import os, sys
6 sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
7
8 from collections import defaultdict
9
10 from daklib import srcformats
11
12 class SourceFormatTestCase(unittest.TestCase):
13     def get_rejects(self, has_vars):
14         has = defaultdict(lambda: 0)
15         has.update(has_vars)
16         return list(self.fmt.reject_msgs(has))
17
18     def assertAccepted(self, has):
19         self.assertEqual(self.get_rejects(has), [])
20
21     def assertRejected(self, has):
22         self.assertNotEqual(self.get_rejects(has), [])
23
24 class FormatOneTestCase(SourceFormatTestCase):
25     fmt = srcformats.FormatOne
26
27     def testEmpty(self):
28         self.assertRejected({})
29
30     def testNative(self):
31         self.assertAccepted({'native_tar': 1, 'native_tar_gz': 1})
32
33     def testStandard(self):
34         self.assertAccepted({
35             'orig_tar': 1,
36             'orig_tar_gz': 1,
37             'debian_diff': 1,
38         })
39
40     def testDisallowed(self):
41         self.assertRejected({
42             'native_tar': 1,
43             'native_tar_gz': 1,
44             'debian_tar': 1,
45         })
46         self.assertRejected({
47             'orig_tar': 1,
48             'orig_tar_gz': 1,
49             'debian_diff': 0,
50         })
51         self.assertRejected({
52             'native_tar': 1,
53             'native_tar_gz': 1,
54             'more_orig_tar': 1,
55         })
56
57 class FormatTreeTestCase(SourceFormatTestCase):
58     fmt = srcformats.FormatThree
59
60     def testEmpty(self):
61         self.assertRejected({})
62
63     def testSimple(self):
64         self.assertAccepted({'native_tar': 1})
65
66     def testDisallowed(self):
67         self.assertRejected({'native_tar': 1, 'orig_tar': 1})
68         self.assertRejected({'native_tar': 1, 'debian_diff': 1})
69         self.assertRejected({'native_tar': 1, 'debian_tar': 1})
70         self.assertRejected({'native_tar': 1, 'more_orig_tar': 1})
71
72 class FormatTreeQuiltTestCase(SourceFormatTestCase):
73     fmt = srcformats.FormatThreeQuilt
74
75     def testEmpty(self):
76         self.assertRejected({})
77
78     def testSimple(self):
79         self.assertAccepted({'orig_tar': 1, 'debian_tar': 1})
80
81     def testMultipleTarballs(self):
82         self.assertAccepted({
83             'orig_tar': 1,
84             'debian_tar': 1,
85             'more_orig_tar': 42,
86         })
87
88     def testDisallowed(self):
89         self.assertRejected({
90             'orig_tar': 1,
91             'debian_tar': 1,
92             'debian_diff': 1
93         })
94         self.assertRejected({
95             'orig_tar': 1,
96             'debian_tar': 1,
97             'native_tar': 1,
98         })
99
100 if __name__ == '__main__':
101     unittest.main()