X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=tests%2Ftest_lintian.py;h=f4ed98efa45cde2f9f0e655e10ead4778b2bd765;hb=7c5adcf962fe99d6a42307595f263f47d0112fbc;hp=99d5e93ab33d3653a20257faeeec9778b4aeceda;hpb=6929479f75234f9a4c88ce6f297d6a7b070753f6;p=dak.git diff --git a/tests/test_lintian.py b/tests/test_lintian.py index 99d5e93a..f4ed98ef 100755 --- a/tests/test_lintian.py +++ b/tests/test_lintian.py @@ -4,7 +4,7 @@ from base_test import DakTestCase import unittest -from daklib.lintian import parse_lintian_output +from daklib.lintian import parse_lintian_output, generate_reject_messages class ParseLintianTestCase(DakTestCase): def assertParse(self, output, expected): @@ -15,8 +15,12 @@ class ParseLintianTestCase(DakTestCase): def testSimple(self): self.assertParse( - 'W: pkgname: some-tag path/to/file', - [('W', 'pkgname', 'some-tag', 'path/to/file')], + 'W: pkgname: some-tag path/to/file', [{ + 'level': 'W', + 'package': 'pkgname', + 'tag': 'some-tag', + 'description': 'path/to/file', + }], ) self.assertParse('', []) @@ -25,20 +29,119 @@ class ParseLintianTestCase(DakTestCase): def testBinaryNoDescription(self): self.assertParse( - 'W: pkgname: some-tag', - [('W', 'pkgname', 'some-tag', '')], + 'W: pkgname: some-tag', [{ + 'level': 'W', + 'package': 'pkgname', + 'tag': 'some-tag', + 'description': '', + }], ) def testSource(self): self.assertParse( - 'W: pkgname source: some-tag', - [('W', 'pkgname source', 'some-tag', '')] + 'W: pkgname source: some-tag', [{ + 'level': 'W', + 'package': 'pkgname source', + 'tag': 'some-tag', + 'description': '', + }] ) def testSourceNoDescription(self): self.assertParse( - 'W: pkgname source: some-tag path/to/file', - [('W', 'pkgname source', 'some-tag', 'path/to/file')] + 'W: pkgname source: some-tag path/to/file', [{ + 'level': 'W', + 'package': 'pkgname source', + 'tag': 'some-tag', + 'description': 'path/to/file', + }] + ) + +class GenerateRejectMessages(DakTestCase): + def assertNumReject(self, input, defs, num): + msgs = list(generate_reject_messages(input, defs)) + self.assertEqual(len(msgs), num) + + def testUnknownTag(self): + self.assertNumReject([ + { + 'level': 'W', + 'package': 'pkgname', + 'tag': 'unknown-tag', + 'description': '', + } + ], {'fatal': ['known-tag'], 'nonfatal': []}, + 0, + ) + + def testFatalTags(self): + self.assertNumReject([ + { + 'level': 'W', + 'package': 'pkgname', + 'tag': 'fatal-tag-1', + 'description': '', + }, + { + 'level': 'W', + 'package': 'pkgname', + 'tag': 'fatal-tag-2', + 'description': '', + }, + ], {'fatal': ['fatal-tag-1', 'fatal-tag-2'], 'nonfatal': []}, + 2, + ) + + def testMixture(self): + self.assertNumReject([ + { + 'level': 'W', + 'package': 'pkgname', + 'tag': 'fatal-tag', + 'description': '', + }, + { + 'level': 'W', + 'package': 'pkgname', + 'tag': 'unknown-tag', + 'description': '', + }, + ], {'fatal': ['fatal-tag'], 'nonfatal': []}, + 1, + ) + + def testOverridable(self): + self.assertNumReject([ + { + 'level': 'W', + 'package': 'pkgname', + 'tag': 'non-fatal-tag', + 'description': '', + }, + ], {'fatal': [], 'nonfatal': ['non-fatal-tag']}, + 1 + 1, # We add an extra 'reject' hint message + ) + + def testOverrideAllowed(self): + self.assertNumReject([ + {'level': 'O', + 'package': 'pkgname', + 'tag': 'non-fatal-tag', + 'description': ''}, + ], {'fatal': [], 'nonfatal': ['non-fatal-tag']}, + 0, + ) + + def testOverrideNotAllowed(self): + self.assertNumReject([ + { + 'level': 'O', + 'package': 'pkgname', + 'tag': 'fatal-tag', + 'description': '', + }, + ], {'fatal': ['fatal-tag'], 'nonfatal': []}, + 1, ) if __name__ == '__main__':