summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBarry Warsaw2014-03-02 17:59:30 -0500
committerBarry Warsaw2014-03-02 17:59:30 -0500
commitb2212b052aa80376e0a42aaee87306dd43fe4608 (patch)
tree55d7e246009289457a00e5360839fe1b4661b4c5
parent703cd02ce0dd891d04d635513af74e24e4a9615c (diff)
downloadmailman-b2212b052aa80376e0a42aaee87306dd43fe4608.tar.gz
mailman-b2212b052aa80376e0a42aaee87306dd43fe4608.tar.zst
mailman-b2212b052aa80376e0a42aaee87306dd43fe4608.zip
-rw-r--r--src/mailman/config/config.py6
-rw-r--r--src/mailman/config/mailman.cfg2
-rw-r--r--src/mailman/config/tests/test_configuration.py47
3 files changed, 44 insertions, 11 deletions
diff --git a/src/mailman/config/config.py b/src/mailman/config/config.py
index 67884f8b2..e8c8ebc8b 100644
--- a/src/mailman/config/config.py
+++ b/src/mailman/config/config.py
@@ -259,12 +259,6 @@ class Configuration:
yield archiver
@property
- def style_configs(self):
- """Iterate over all the style configuration sections."""
- for section in self._config.getByCategory('style', []):
- yield section
-
- @property
def language_configs(self):
"""Iterate over all the language configuration sections."""
for section in self._config.getByCategory('language', []):
diff --git a/src/mailman/config/mailman.cfg b/src/mailman/config/mailman.cfg
index f518881d0..24e81ec91 100644
--- a/src/mailman/config/mailman.cfg
+++ b/src/mailman/config/mailman.cfg
@@ -89,5 +89,3 @@ class: mailman.runners.virgin.VirginRunner
[runner.digest]
class: mailman.runners.digest.DigestRunner
-
-[style.default]
diff --git a/src/mailman/config/tests/test_configuration.py b/src/mailman/config/tests/test_configuration.py
index 3009e384c..3c623c005 100644
--- a/src/mailman/config/tests/test_configuration.py
+++ b/src/mailman/config/tests/test_configuration.py
@@ -22,19 +22,22 @@ from __future__ import absolute_import, print_function, unicode_literals
__metaclass__ = type
__all__ = [
'TestConfiguration',
+ 'TestConfigurationErrors',
'TestExternal',
]
+import os
+import tempfile
import unittest
-from pkg_resources import resource_filename
-
-from mailman.config.config import external_configuration, load_external
+from mailman.config.config import (
+ Configuration, external_configuration, load_external)
from mailman.interfaces.configuration import (
ConfigurationUpdatedEvent, MissingConfigurationFileError)
from mailman.testing.helpers import configuration, event_subscribers
from mailman.testing.layers import ConfigLayer
+from pkg_resources import resource_filename
@@ -99,3 +102,41 @@ class TestExternal(unittest.TestCase):
with self.assertRaises(MissingConfigurationFileError) as cm:
external_configuration('path:mailman.config.missing')
self.assertEqual(cm.exception.path, 'path:mailman.config.missing')
+
+
+
+class TestConfigurationErrors(unittest.TestCase):
+ layer = ConfigLayer
+
+ def test_bad_path_layout_specifier(self):
+ # Using a [mailman]layout name that doesn't exist is a fatal error.
+ fd, filename = tempfile.mkstemp()
+ self.addCleanup(os.remove, filename)
+ os.close(fd)
+ with open(filename, 'w') as fp:
+ print("""\
+[mailman]
+layout: nonesuch
+""", file=fp)
+ # Use a fake sys.exit() function that records that it was called, and
+ # that prevents further processing.
+ config = Configuration()
+ with self.assertRaises(SystemExit) as cm:
+ config.load(filename)
+ self.assertEqual(cm.exception.args, (1,))
+
+ def test_path_expansion_infloop(self):
+ # A path expansion never completes because it references a
+ # non-existent substitution variable.
+ fd, filename = tempfile.mkstemp()
+ self.addCleanup(os.remove, filename)
+ os.close(fd)
+ with open(filename, 'w') as fp:
+ print("""\
+[paths.dev]
+log_dir: $nopath/log_dir
+""", file=fp)
+ config = Configuration()
+ with self.assertRaises(SystemExit) as cm:
+ config.load(filename)
+ self.assertEqual(cm.exception.args, (1,))