diff options
| author | Abhilash Raj | 2016-05-22 20:04:40 -0700 |
|---|---|---|
| committer | Abhilash Raj | 2016-05-22 20:04:40 -0700 |
| commit | 4727bb4523486b0023aa3e1ca8766c2077c5d55a (patch) | |
| tree | 7eb2167a9d7712ed345decb32f184016e5f00458 | |
| parent | ea7336fe7b642922e6dc3499b5cd6316786b6024 (diff) | |
| download | mailman-4727bb4523486b0023aa3e1ca8766c2077c5d55a.tar.gz mailman-4727bb4523486b0023aa3e1ca8766c2077c5d55a.tar.zst mailman-4727bb4523486b0023aa3e1ca8766c2077c5d55a.zip | |
| -rw-r--r-- | src/mailman/utilities/tests/test_modules.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/mailman/utilities/tests/test_modules.py b/src/mailman/utilities/tests/test_modules.py new file mode 100644 index 000000000..7d99cbd25 --- /dev/null +++ b/src/mailman/utilities/tests/test_modules.py @@ -0,0 +1,46 @@ +# Copyright (C) 2016 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/>. + +"""Tests for mailman.utilities.modules.""" + +import os +import unittest + +from mailman.interfaces.styles import IStyle +from mailman.utilities.modules import find_components +from pkg_resources import resource_filename + + +class TestModuleImports(unittest.TestCase): + + def test_find_modules_with_dotfiles(self): + # Emacs creates lock files when a single file is opened by more than + # one user. These files look like .#<filename>.py because of which + # find_components tries to import them but fails. All such files should + # be ignored by default. + bad_file = resource_filename('mailman.styles', '.#bad_file.py') + # create the bad file by opening it. + fd = os.open(bad_file, os.O_CREAT) + # Check if the file was created. + self.assertNotEqual(fd, 0) + os.close(fd) + # try importing all modules from this path i.e. iterate over the + # iterator returned by find_components. + list(find_components('mailman.styles', IStyle)) + # remove the bad file. + errno = os.remove(bad_file) + self.assertNotEqual(errno, 0) |
