Barry Warsaw pushed to branch coverage at mailman / Mailman Core

Commits:
bf2897a6 by Barry Warsaw at 2017-07-23T08:42:25-05:00
Boost coverage and modernize.

- - - - -


3 changed files:

- src/mailman/rules/docs/suspicious.rst
- src/mailman/rules/suspicious.py
- src/mailman/rules/tests/test_suspicious.py


Changes:

=====================================
src/mailman/rules/docs/suspicious.rst
=====================================
--- a/src/mailman/rules/docs/suspicious.rst
+++ b/src/mailman/rules/docs/suspicious.rst
@@ -6,7 +6,7 @@ Suspicious headers are a way for Mailman to hold messages that 
match a
 particular regular expression.  This mostly historical feature is fairly
 confusing to users, and the list attribute that controls this is misnamed.
 
-    >>> mlist = create_list('_xt...@example.com')
+    >>> mlist = create_list('a...@example.com')
     >>> rule = config.rules['suspicious-header']
     >>> print(rule.name)
     suspicious-header
@@ -16,9 +16,9 @@ Set the so-called suspicious header configuration variable.
     >>> mlist.bounce_matching_headers = 'From: .*person@(blah.)?example.com'
     >>> msg = message_from_string("""\
     ... From: aper...@example.com
-    ... To: _xt...@example.com
+    ... To: a...@example.com
     ... Subject: An implicit message
-    ... 
+    ...
     ... """)
     >>> rule.check(mlist, msg, {})
     True
@@ -28,9 +28,9 @@ This one comes from a ``.org`` address.
 
     >>> msg = message_from_string("""\
     ... From: aper...@example.org
-    ... To: _xt...@example.com
+    ... To: a...@example.com
     ... Subject: An implicit message
-    ... 
+    ...
     ... """)
     >>> rule.check(mlist, msg, {})
     False


=====================================
src/mailman/rules/suspicious.py
=====================================
--- a/src/mailman/rules/suspicious.py
+++ b/src/mailman/rules/suspicious.py
@@ -60,7 +60,7 @@ def _parse_matching_header_opt(mlist):
             # This didn't look like a header line.  BAW: should do a
             # better job of informing the list admin.
             log.error('bad bounce_matching_header line: %s\n%s',
-                      mlist.display_name, line)
+                      mlist.list_id, line)
         else:
             header = line[:i]
             value = line[i+1:].lstrip()
@@ -71,7 +71,7 @@ def _parse_matching_header_opt(mlist):
                 # job of informing the list admin.
                 log.error("""\
 bad regexp in bounce_matching_header line: %s
-\n%s (cause: %s)""", mlist.display_name, value, error)
+"%s" (cause: %s)""", mlist.list_id, value, error)
             else:
                 all.append((header, cre, line))
     return all


=====================================
src/mailman/rules/tests/test_suspicious.py
=====================================
--- a/src/mailman/rules/tests/test_suspicious.py
+++ b/src/mailman/rules/tests/test_suspicious.py
@@ -24,17 +24,24 @@ from email.header import Header
 from mailman.app.lifecycle import create_list
 from mailman.email.message import Message
 from mailman.rules import suspicious
+from mailman.testing.helpers import (
+    LogFileMark, specialized_message_from_string as mfs)
 from mailman.testing.layers import ConfigLayer
 
 
 class TestSuspicious(unittest.TestCase):
-    """Test the suspicious rule."""
-
     layer = ConfigLayer
+    maxDiff = None
 
     def setUp(self):
-        self._mlist = create_list('t...@example.com')
+        self._mlist = create_list('a...@example.com')
         self._rule = suspicious.SuspiciousHeader()
+        self._msg = mfs("""\
+From: aper...@example.com
+To: a...@example.com
+Subject: A message
+
+""")
 
     def test_header_instance(self):
         msg = Message()
@@ -42,3 +49,29 @@ class TestSuspicious(unittest.TestCase):
         self._mlist.bounce_matching_headers = 'from: s...@example.com'
         result = self._rule.check(self._mlist, msg, {})
         self.assertFalse(result)
+
+    def test_bounce_matching_header_not_a_header(self):
+        mark = LogFileMark('mailman.error')
+        self._mlist.bounce_matching_headers = 'This is not a header'
+        result = self._rule.check(self._mlist, self._msg, {})
+        self.assertFalse(result)
+        log_lines = mark.read().splitlines()
+        self.assertEqual(
+            log_lines[0][-48:],
+            'bad bounce_matching_header line: ant.example.com')
+        self.assertEqual(
+            log_lines[1][-20:],
+            'This is not a header')
+
+    def test_bounce_matching_header_not_a_regexp(self):
+        mark = LogFileMark('mailman.error')
+        self._mlist.bounce_matching_headers = 'From: [a-z'
+        result = self._rule.check(self._mlist, self._msg, {})
+        self.assertFalse(result)
+        log_lines = mark.read().splitlines()
+        self.assertEqual(
+            log_lines[0][-58:],
+            'bad regexp in bounce_matching_header line: ant.example.com')
+        self.assertEqual(
+            log_lines[1][-56:],
+            '"[a-z" (cause: unterminated character set at position 0)')



View it on GitLab: 
https://gitlab.com/mailman/mailman/commit/bf2897a6de0dd93f2a0a870ac3059632cc0fc163

---
View it on GitLab: 
https://gitlab.com/mailman/mailman/commit/bf2897a6de0dd93f2a0a870ac3059632cc0fc163
You're receiving this email because of your account on gitlab.com.
_______________________________________________
Mailman-checkins mailing list
Mailman-checkins@python.org
Unsubscribe: 
https://mail.python.org/mailman/options/mailman-checkins/archive%40jab.org

Reply via email to