X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=tests%2Ftest_srcformats.py;h=f6d7215fc8daabcd179543ff59691263ccbb9d23;hb=05c002afb12f077d753234de45753062fa54ce02;hp=9fec4a8765fd0db46d86fc636feee6773dcce542;hpb=68ef7be81d7e958d0147d92ee5f6919746448377;p=dak.git diff --git a/tests/test_srcformats.py b/tests/test_srcformats.py index 9fec4a87..f6d7215f 100755 --- a/tests/test_srcformats.py +++ b/tests/test_srcformats.py @@ -8,6 +8,7 @@ sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from collections import defaultdict from daklib import srcformats +from daklib.dak_exceptions import UnknownFormatError class SourceFormatTestCase(unittest.TestCase): def get_rejects(self, has_vars): @@ -102,5 +103,110 @@ class FormatTreeQuiltTestCase(SourceFormatTestCase): 'native_tar': 1, }) +## + +class ParseFormatTestCase(unittest.TestCase): + def assertParse(self, format, expected): + self.assertEqual(srcformats.parse_format(format), expected) + + def assertParseFail(self, format): + self.assertRaises( + UnknownFormatError, + lambda: srcformats.parse_format(format) + ) + + def testParse(self): + self.assertParse('1.0', (1, 0)) + + def testEmpty(self): + self.assertParseFail('') + self.assertParseFail(' ') + self.assertParseFail(' ') + + def textText(self): + self.assertParse('1.2 (three)', (1, 2, 'three')) + self.assertParseFail('0.0 ()') + +class ValidateFormatTestCase(unittest.TestCase): + def assertValid(self, format, **kwargs): + kwargs['is_a_dsc'] = kwargs.get('is_a_dsc', True) + self.fmt.validate_format(format, **kwargs) + + def assertInvalid(self, *args, **kwargs): + self.assertRaises( + UnknownFormatError, + lambda: self.assertValid(*args, **kwargs), + ) + +class ValidateFormatOneTestCase(ValidateFormatTestCase): + fmt = srcformats.FormatOne + + def testValid(self): + self.assertValid((1, 0)) + + def testInvalid(self): + self.assertInvalid((0, 1)) + self.assertInvalid((3, 0, 'quilt')) + + ## + + def testBinary(self): + self.assertValid((1, 5), is_a_dsc=False) + self.assertInvalid((1, 0), is_a_dsc=False) + + def testRange(self): + self.assertInvalid((1, 3), is_a_dsc=False) + self.assertValid((1, 5), is_a_dsc=False) + self.assertValid((1, 8), is_a_dsc=False) + self.assertInvalid((1, 9), is_a_dsc=False) + + def testFilesField(self): + self.assertInvalid((1, 7), is_a_dsc=False, field='notfiles') + self.assertValid((1, 8), is_a_dsc=False, field='notfiles') + +class ValidateFormatThreeTestCase(ValidateFormatTestCase): + fmt = srcformats.FormatThree + + def testValid(self): + self.assertValid((3, 0, 'native')) + + def testInvalid(self): + self.assertInvalid((1, 0)) + self.assertInvalid((0, 0)) + self.assertInvalid((3, 0, 'quilt')) + +class ValidateFormatThreeQuiltTestCase(ValidateFormatTestCase): + fmt = srcformats.FormatThreeQuilt + + def testValid(self): + self.assertValid((3, 0, 'quilt')) + + def testInvalid(self): + self.assertInvalid((1, 0)) + self.assertInvalid((0, 0)) + self.assertInvalid((3, 0, 'native')) + +class FormatFromStringTestCase(unittest.TestCase): + def assertFormat(self, txt, klass): + self.assertEqual(srcformats.get_format_from_string(txt), klass) + + def assertInvalid(self, txt): + self.assertRaises( + UnknownFormatError, + lambda: srcformats.get_format_from_string(txt), + ) + + def testFormats(self): + self.assertFormat('1.0', srcformats.FormatOne) + self.assertFormat('3.0 (native)', srcformats.FormatThree) + self.assertFormat('3.0 (quilt)', srcformats.FormatThreeQuilt) + + def testInvalidFormats(self): + self.assertInvalid('') + self.assertInvalid('.') + self.assertInvalid('3.0 (cvs)') + self.assertInvalid(' 1.0 ') + self.assertInvalid('8.4 (hardy)') + if __name__ == '__main__': unittest.main()