]> git.decadent.org.uk Git - dak.git/blob - tests/test_srcformats.py
Merge commit 'ftpmaster/master'
[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         self.assertRejected({
57             'native_tar': 1,
58             'native_tar_gz': 1,
59             'debian_diff': 1,
60         })
61
62 class FormatTreeTestCase(SourceFormatTestCase):
63     fmt = srcformats.FormatThree
64
65     def testEmpty(self):
66         self.assertRejected({})
67
68     def testSimple(self):
69         self.assertAccepted({'native_tar': 1})
70
71     def testDisallowed(self):
72         self.assertRejected({'native_tar': 1, 'orig_tar': 1})
73         self.assertRejected({'native_tar': 1, 'debian_diff': 1})
74         self.assertRejected({'native_tar': 1, 'debian_tar': 1})
75         self.assertRejected({'native_tar': 1, 'more_orig_tar': 1})
76
77 class FormatTreeQuiltTestCase(SourceFormatTestCase):
78     fmt = srcformats.FormatThreeQuilt
79
80     def testEmpty(self):
81         self.assertRejected({})
82
83     def testSimple(self):
84         self.assertAccepted({'orig_tar': 1, 'debian_tar': 1})
85
86     def testMultipleTarballs(self):
87         self.assertAccepted({
88             'orig_tar': 1,
89             'debian_tar': 1,
90             'more_orig_tar': 42,
91         })
92
93     def testDisallowed(self):
94         self.assertRejected({
95             'orig_tar': 1,
96             'debian_tar': 1,
97             'debian_diff': 1
98         })
99         self.assertRejected({
100             'orig_tar': 1,
101             'debian_tar': 1,
102             'native_tar': 1,
103         })
104
105 if __name__ == '__main__':
106     unittest.main()