summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBarry Warsaw2015-05-04 21:25:35 -0400
committerBarry Warsaw2015-05-04 21:25:35 -0400
commitd2f972fc46407da28f2b30efbba3ad3bf95392d5 (patch)
tree7afc886e100ce1b47fdc029f2246e8476cf980d7
parent18683868449fd855fcf68a82aef36a7c808e916e (diff)
downloadmailman-d2f972fc46407da28f2b30efbba3ad3bf95392d5.tar.gz
mailman-d2f972fc46407da28f2b30efbba3ad3bf95392d5.tar.zst
mailman-d2f972fc46407da28f2b30efbba3ad3bf95392d5.zip
-rw-r--r--.gitignore2
-rw-r--r--src/mailman/core/tests/test_switchboard.py58
2 files changed, 60 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index c94c86d1c..016da6bf2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
*.egg-info
var
+.coverage
+htmlcov
diff --git a/src/mailman/core/tests/test_switchboard.py b/src/mailman/core/tests/test_switchboard.py
new file mode 100644
index 000000000..b59218795
--- /dev/null
+++ b/src/mailman/core/tests/test_switchboard.py
@@ -0,0 +1,58 @@
+# Copyright (C) 2015 by the Free Software Foundation, Inc.
+#
+# This file is part of GNU Mailman.
+#
+# GNU Mailman is free software: you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or (at your option)
+# any later version.
+#
+# GNU Mailman is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Mailman. If not, see <http://www.gnu.org/licenses/>.
+
+"""Switchboard tests."""
+
+__all__ = [
+ 'TestSwitchboard',
+ ]
+
+
+import unittest
+
+from mailman.config import config
+from mailman.testing.helpers import (
+ LogFileMark,
+ specialized_message_from_string as mfs)
+from mailman.testing.layers import ConfigLayer
+from unittest.mock import patch
+
+
+class TestSwitchboard(unittest.TestCase):
+ layer = ConfigLayer
+
+ def test_log_exception_in_finish(self):
+ # If something bad happens in .finish(), the traceback should get
+ # logged. LP: #1165589.
+ msg = mfs("""\
+From: anne@example.com
+To: test@example.com
+Message-ID: <ant>
+
+""")
+ switchboard = config.switchboards['shunt']
+ # Enqueue the message.
+ filebase = switchboard.enqueue(msg)
+ error_log = LogFileMark('mailman.error')
+ msg, data = switchboard.dequeue(filebase)
+ # Now, cause .finish() to throw an exception.
+ with patch('mailman.core.switchboard.os.rename',
+ side_effect=OSError('Oops!')):
+ switchboard.finish(filebase, preserve=True)
+ traceback = error_log.read().splitlines()
+ self.assertEqual(traceback[1], 'Traceback (most recent call last):')
+ self.assertEqual(traceback[-1], 'OSError: Oops!')