6 sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
8 from collections import defaultdict
10 from daklib import srcformats
11 from daklib.dak_exceptions import UnknownFormatError
13 class SourceFormatTestCase(unittest.TestCase):
14 def get_rejects(self, has_vars):
15 has = defaultdict(lambda: 0)
17 return list(self.fmt.reject_msgs(has))
19 def assertAccepted(self, has):
20 self.assertEqual(self.get_rejects(has), [])
22 def assertRejected(self, has):
23 self.assertNotEqual(self.get_rejects(has), [])
25 class FormatOneTestCase(SourceFormatTestCase):
26 fmt = srcformats.FormatOne
29 self.assertRejected({})
32 self.assertAccepted({'native_tar': 1, 'native_tar_gz': 1})
34 def testStandard(self):
41 def testDisallowed(self):
63 class FormatTreeTestCase(SourceFormatTestCase):
64 fmt = srcformats.FormatThree
67 self.assertRejected({})
70 self.assertAccepted({'native_tar': 1})
72 def testDisallowed(self):
73 self.assertRejected({'native_tar': 1, 'orig_tar': 1})
74 self.assertRejected({'native_tar': 1, 'debian_diff': 1})
75 self.assertRejected({'native_tar': 1, 'debian_tar': 1})
76 self.assertRejected({'native_tar': 1, 'more_orig_tar': 1})
78 class FormatTreeQuiltTestCase(SourceFormatTestCase):
79 fmt = srcformats.FormatThreeQuilt
82 self.assertRejected({})
85 self.assertAccepted({'orig_tar': 1, 'debian_tar': 1})
87 def testMultipleTarballs(self):
94 def testDisallowed(self):
100 self.assertRejected({
108 class ParseFormatTestCase(unittest.TestCase):
109 def assertParse(self, format, expected):
110 self.assertEqual(srcformats.parse_format(format), expected)
112 def assertParseFail(self, format):
115 lambda: srcformats.parse_format(format)
119 self.assertParse('1.0', (1, 0))
122 self.assertParseFail('')
123 self.assertParseFail(' ')
124 self.assertParseFail(' ')
127 self.assertParse('1.2 (three)', (1, 2, 'three'))
128 self.assertParseFail('0.0 ()')
130 class ParseSourceFormat(ParseFormat):
131 def assertFormat(self, *args, **kwargs):
132 kwargs['is_a_dsc'] = kwargs.get('is_a_dsc', True)
133 super(ParseSourceFormat, self).assertFormat(*args, **kwargs)
135 def assertInvalidFormat(self, *args, **kwargs):
136 kwargs['is_a_dsc'] = kwargs.get('is_a_dsc', True)
137 super(ParseSourceFormat, self).assertInvalidFormat(*args, **kwargs)
139 def testSimple(self):
140 self.assertFormat('1.0', (1, 0))
143 self.assertInvalidFormat('0.0')
145 def testNative(self):
146 self.assertFormat('3.0 (native)', (3, 0, 'native'))
149 self.assertFormat('3.0 (quilt)', (3, 0, 'quilt'))
151 def testUnknownThree(self):
152 self.assertInvalidFormat('3.0 (cvs)')
154 class ParseBinaryFormat(ParseFormat):
155 def assertFormat(self, *args, **kwargs):
156 kwargs['is_a_dsc'] = kwargs.get('is_a_dsc', False)
157 super(ParseBinaryFormat, self).assertFormat(*args, **kwargs)
159 def assertInvalidFormat(self, *args, **kwargs):
160 kwargs['is_a_dsc'] = kwargs.get('is_a_dsc', False)
161 super(ParseBinaryFormat, self).assertInvalidFormat(*args, **kwargs)
163 def testSimple(self):
164 self.assertFormat('1.5', (1, 5))
167 self.assertInvalidFormat('1.0')
168 self.assertFormat('1.5', (1, 5))
169 self.assertFormat('1.8', (1, 8))
170 self.assertInvalidFormat('1.9')
172 def testFilesField(self):
173 self.assertInvalidFormat('1.7', field='notfiles')
174 self.assertFormat('1.8', (1, 8), field='notfiles')
176 if __name__ == '__main__':