diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/mailman/bin/tests/test_master.py | 5 | ||||
| -rw-r--r-- | src/mailman/testing/nose.py | 2 | ||||
| -rw-r--r-- | src/mailman/utilities/modules.py | 2 | ||||
| -rw-r--r-- | src/mailman/utilities/string.py | 8 | ||||
| -rw-r--r-- | src/mailman/utilities/tests/test_import.py | 10 | ||||
| -rw-r--r-- | src/mailman/utilities/tests/test_string.py | 36 |
6 files changed, 53 insertions, 10 deletions
diff --git a/src/mailman/bin/tests/test_master.py b/src/mailman/bin/tests/test_master.py index 371f48502..d0c3279ac 100644 --- a/src/mailman/bin/tests/test_master.py +++ b/src/mailman/bin/tests/test_master.py @@ -27,6 +27,7 @@ import errno import tempfile import unittest +from datetime import timedelta from flufl.lock import Lock from mailman.bin import master @@ -60,8 +61,8 @@ class TestMasterLock(unittest.TestCase): state, lock = master.master_state(self.lock_file) self.assertEqual(state, master.WatcherState.none) # Acquire the lock as if another process had already started the - # master. - my_lock.lock() + # master. Use a timeout to avoid this test deadlocking. + my_lock.lock(timedelta(seconds=60)) try: state, lock = master.master_state(self.lock_file) finally: diff --git a/src/mailman/testing/nose.py b/src/mailman/testing/nose.py index 1e96e643f..e3ce9c3c7 100644 --- a/src/mailman/testing/nose.py +++ b/src/mailman/testing/nose.py @@ -43,7 +43,7 @@ class NosePlugin(Plugin): configSection = 'mailman' def __init__(self): - super(NosePlugin, self).__init__() + super().__init__() self.patterns = [] self.stderr = False def set_stderr(ignore): diff --git a/src/mailman/utilities/modules.py b/src/mailman/utilities/modules.py index 7fb695afe..35b9a752b 100644 --- a/src/mailman/utilities/modules.py +++ b/src/mailman/utilities/modules.py @@ -78,7 +78,7 @@ def scan_module(module, interface): for name in module.__all__: component = getattr(module, name, missing) assert component is not missing, ( - '%s has bad __all__: %s' % (module, name)) + '%s has bad __all__: %s' % (module, name)) # pragma: no cover if interface.implementedBy(component): yield component diff --git a/src/mailman/utilities/string.py b/src/mailman/utilities/string.py index 478fd6574..4e7e5c0ad 100644 --- a/src/mailman/utilities/string.py +++ b/src/mailman/utilities/string.py @@ -117,8 +117,10 @@ def wrap(text, column=70, honor_leading_ws=True): # This line does not constitute a paragraph break. paragraph.append(line) # We've consumed all the lines in the original text. Transfer the last - # paragraph we were collecting to the full set of paragraphs. - paragraphs.append(EMPTYSTRING.join(paragraph)) + # paragraph we were collecting to the full set of paragraphs, but only if + # it's not empty. + if len(paragraph) > 0: + paragraphs.append(EMPTYSTRING.join(paragraph)) # Now iterate through all paragraphs, wrapping as necessary. wrapped_paragraphs = [] # The dedented wrapper. @@ -150,7 +152,7 @@ def wrap(text, column=70, honor_leading_ws=True): # dedented. The leading whitespace on the first line of the # original text will be used as the indentation for all lines # in the wrapped text. - for i, ch in enumerate(paragraph_text): + for i, ch in enumerate(paragraph_text): # pragma: no branch if ch not in whitespace: break leading_ws = paragraph[:i] diff --git a/src/mailman/utilities/tests/test_import.py b/src/mailman/utilities/tests/test_import.py index e687e8a00..d83e42bc8 100644 --- a/src/mailman/utilities/tests/test_import.py +++ b/src/mailman/utilities/tests/test_import.py @@ -52,7 +52,8 @@ from mailman.interfaces.usermanager import IUserManager from mailman.testing.helpers import LogFileMark from mailman.testing.layers import ConfigLayer from mailman.utilities.filesystem import makedirs -from mailman.utilities.importer import import_config_pck, Import21Error +from mailman.utilities.importer import ( + Import21Error, check_language_code, import_config_pck) from mailman.utilities.string import expand from pickle import load from pkg_resources import resource_filename @@ -294,7 +295,7 @@ class TestBasicImport(unittest.TestCase): except Import21Error as error: # Check the message. self.assertIn('[language.xx_XX]', str(error)) - else: # pragma: no cover + else: self.fail('Import21Error was not raised') def test_encode_ascii_prefixes(self): @@ -865,7 +866,7 @@ class TestRosterImport(unittest.TestCase): import_config_pck(self._mlist, self._pckdict) except Import21Error as error: self.assertIn('[language.xx_XX]', str(error)) - else: # pragma: no cover + else: self.fail('Import21Error was not raised') def test_username(self): @@ -1136,3 +1137,6 @@ class TestPreferencesImport(unittest.TestCase): receive_list_copy=False, delivery_mode=DeliveryMode.plaintext_digests, )) + + def test_language_code_none(self): + self.assertIsNone(check_language_code(None)) diff --git a/src/mailman/utilities/tests/test_string.py b/src/mailman/utilities/tests/test_string.py new file mode 100644 index 000000000..dbbc28754 --- /dev/null +++ b/src/mailman/utilities/tests/test_string.py @@ -0,0 +1,36 @@ +# 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/>. + +"""Test the string utilities.""" + +__all__ = [ + 'TestString', + ] + + +import unittest + +from mailman.utilities import string + + + +class TestString(unittest.TestCase): + def test_oneline_bogus_charset(self): + self.assertEqual(string.oneline('foo', 'bogus'), 'foo') + + def test_wrap_blank_paragraph(self): + self.assertEqual(string.wrap('\n\n'), '\n\n') |
