]> git.decadent.org.uk Git - dak.git/blobdiff - tests/test_lintian.py
Generate lintian reject messages in daklib.lintian + tests
[dak.git] / tests / test_lintian.py
index 99d5e93ab33d3653a20257faeeec9778b4aeceda..27d13680bf8855bae44b0e9a11e09ddafb334b71 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):
@@ -41,5 +41,58 @@ class ParseLintianTestCase(DakTestCase):
             [('W', 'pkgname source', 'some-tag', 'path/to/file')]
         )
 
+class GenerateRejectMessages(DakTestCase):
+    def assertNumReject(self, input, defs, num):
+        self.assertEqual(len(generate_reject_messages(input, defs)), num)
+
+    def testUnknownTag(self):
+        self.assertNumReject(
+            [('W', 'pkgname', 'unknown-tag', '')],
+            {'fatal': ['known-tag'], 'nonfatal': []},
+            0,
+        )
+
+    def testFatalTags(self):
+        self.assertNumReject([
+                ('W', 'pkgname', 'fatal-tag-1', ''),
+                ('W', 'pkgname', 'fatal-tag-2', ''),
+            ],
+            {'fatal': ['fatal-tag-1', 'fatal-tag-2'], 'nonfatal': []},
+            2,
+        )
+
+    def testMixture(self):
+        self.assertNumReject([
+                ('W', 'pkgname', 'fatal-tag', ''),
+                ('W', 'pkgname', 'unknown-tag', ''),
+            ],
+            {'fatal': ['fatal-tag'], 'nonfatal': []},
+            1,
+        )
+
+    def testOverridable(self):
+        self.assertNumReject([
+                ('W', 'pkgname', 'non-fatal-tag', ''),
+            ],
+            {'fatal': [], 'nonfatal': ['non-fatal-tag']},
+            1 + 1, # We add an extra 'reject' hint message
+        )
+
+    def testOverrideAllowed(self):
+        self.assertNumReject([
+                ('O', 'pkgname', 'non-fatal-tag', ''),
+            ],
+            {'fatal': [], 'nonfatal': ['non-fatal-tag']},
+            0,
+        )
+
+    def testOverrideNotAllowed(self):
+        self.assertNumReject([
+                ('O', 'pkgname', 'fatal-tag', ''),
+            ],
+            {'fatal': ['fatal-tag'], 'nonfatal': []},
+            1,
+        )
+
 if __name__ == '__main__':
     unittest.main()