From 4727bb4523486b0023aa3e1ca8766c2077c5d55a Mon Sep 17 00:00:00 2001
From: Abhilash Raj
Date: Sun, 22 May 2016 20:04:40 -0700
Subject: add test for module import failure in the presence of emacs lock
files
---
src/mailman/utilities/tests/test_modules.py | 46 +++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)
create mode 100644 src/mailman/utilities/tests/test_modules.py
(limited to 'src')
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 .
+
+"""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 .#.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)
--
cgit v1.2.3-70-g09d2