]> git.decadent.org.uk Git - dak.git/blobdiff - tests/test_lintian.py
Merge remote-tracking branch 'jcristau/formatone-no-tar-sig'
[dak.git] / tests / test_lintian.py
index 99d5e93ab33d3653a20257faeeec9778b4aeceda..f4ed98efa45cde2f9f0e655e10ead4778b2bd765 100755 (executable)
@@ -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__':