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 ParseFormat(unittest.TestCase):
109 def assertFormat(self, input, expected, **kwargs):
110 format = srcformats.SourceFormat.parse_format(input)
111 self.assertEqual(format, expected)
112 srcformats.SourceFormat.validate_format(format, **kwargs)
114 def assertInvalidFormat(self, input, **kwargs):
116 format = srcformats.SourceFormat.parse_format(input)
117 srcformats.SourceFormat.validate_format(format, **kwargs)
118 except UnknownFormatError:
122 self.assertInvalidFormat('')
123 self.assertInvalidFormat(' ')
124 self.assertInvalidFormat(' ')
126 def testBroken(self):
127 self.assertInvalidFormat('.0')
128 self.assertInvalidFormat('.1')
129 self.assertInvalidFormat('format')
131 class ParseSourceFormat(ParseFormat):
132 def assertFormat(self, *args, **kwargs):
133 kwargs['is_a_dsc'] = kwargs.get('is_a_dsc', True)
134 super(ParseSourceFormat, self).assertFormat(*args, **kwargs)
136 def assertInvalidFormat(self, *args, **kwargs):
137 kwargs['is_a_dsc'] = kwargs.get('is_a_dsc', True)
138 super(ParseSourceFormat, self).assertInvalidFormat(*args, **kwargs)
140 def testSimple(self):
141 self.assertFormat('1.0', (1, 0))
144 self.assertInvalidFormat('0.0')
146 def testNative(self):
147 self.assertFormat('3.0 (native)', (3, 0, 'native'))
150 self.assertFormat('3.0 (quilt)', (3, 0, 'quilt'))
152 def testUnknownThree(self):
153 self.assertInvalidFormat('3.0 (cvs)')
155 class ParseBinaryFormat(ParseFormat):
156 def assertFormat(self, *args, **kwargs):
157 kwargs['is_a_dsc'] = kwargs.get('is_a_dsc', False)
158 super(ParseBinaryFormat, self).assertFormat(*args, **kwargs)
160 def assertInvalidFormat(self, *args, **kwargs):
161 kwargs['is_a_dsc'] = kwargs.get('is_a_dsc', False)
162 super(ParseBinaryFormat, self).assertInvalidFormat(*args, **kwargs)
164 def testSimple(self):
165 self.assertFormat('1.5', (1, 5))
168 self.assertInvalidFormat('1.0')
169 self.assertFormat('1.5', (1, 5))
170 self.assertFormat('1.8', (1, 8))
171 self.assertInvalidFormat('1.9')
173 def testFilesField(self):
174 self.assertInvalidFormat('1.7', field='notfiles')
175 self.assertFormat('1.8', (1, 8), field='notfiles')
177 if __name__ == '__main__':