summaryrefslogtreecommitdiff
path: root/subdir
diff options
context:
space:
mode:
authorJannis Pohlmann <jannis.pohlmann@codethink.co.uk>2013-09-27 18:35:15 +0100
committerJannis Pohlmann <jannis.pohlmann@codethink.co.uk>2013-09-27 18:35:15 +0100
commit0a3b1a065257109295f9322f5a7e199d157acfe6 (patch)
tree8f7a25d69fe3728d23bfe7b5bbaef0957bbf3184 /subdir
parentd7b5706244fca58d8a2564ba6394cb460d2ca2c6 (diff)
downloadcoverage-test-runner-0a3b1a065257109295f9322f5a7e199d157acfe6.tar.gz
Fix importing submodules with the same basenames
This patch fixes a bug in CoverageTestRunner.py, where submodules with the same basenames were not loaded into separate module objects. Because the module names passed to imp.load_module() were the same, previously loaded modules would be reloaded in place, causing different problems: 1. Imports of the affected modules in the test and tested code would sometimes import a different module and cause AttributeError exceptions when expected symbols were not present in the imported module. 2. Sometimes, all but one of the imported modules would incorrectly be considered to have zero test coverage.
Diffstat (limited to 'subdir')
-rw-r--r--subdir/__init__.py2
-rw-r--r--subdir/foo_tests.py4
-rw-r--r--subdir/modules_with_same_names_but_different_symbols/__init__.py2
-rw-r--r--subdir/modules_with_same_names_but_different_symbols/module1/__init__.py1
-rw-r--r--subdir/modules_with_same_names_but_different_symbols/module1/duplicate.py4
-rw-r--r--subdir/modules_with_same_names_but_different_symbols/module1/duplicate_tests.py11
-rw-r--r--subdir/modules_with_same_names_but_different_symbols/module2/__init__.py1
-rw-r--r--subdir/modules_with_same_names_but_different_symbols/module2/duplicate.py4
-rw-r--r--subdir/modules_with_same_names_but_different_symbols/module2/duplicate_tests.py11
9 files changed, 39 insertions, 1 deletions
diff --git a/subdir/__init__.py b/subdir/__init__.py
new file mode 100644
index 0000000..cd02b72
--- /dev/null
+++ b/subdir/__init__.py
@@ -0,0 +1,2 @@
+import foo
+import modules_with_same_names_but_different_symbols
diff --git a/subdir/foo_tests.py b/subdir/foo_tests.py
index a8a9740..ce10d5c 100644
--- a/subdir/foo_tests.py
+++ b/subdir/foo_tests.py
@@ -1,4 +1,6 @@
-import unittest, foo
+import unittest
+
+from subdir import foo
class FooTests(unittest.TestCase):
diff --git a/subdir/modules_with_same_names_but_different_symbols/__init__.py b/subdir/modules_with_same_names_but_different_symbols/__init__.py
new file mode 100644
index 0000000..909cf90
--- /dev/null
+++ b/subdir/modules_with_same_names_but_different_symbols/__init__.py
@@ -0,0 +1,2 @@
+import module1
+import module2
diff --git a/subdir/modules_with_same_names_but_different_symbols/module1/__init__.py b/subdir/modules_with_same_names_but_different_symbols/module1/__init__.py
new file mode 100644
index 0000000..e1dd07e
--- /dev/null
+++ b/subdir/modules_with_same_names_but_different_symbols/module1/__init__.py
@@ -0,0 +1 @@
+import duplicate
diff --git a/subdir/modules_with_same_names_but_different_symbols/module1/duplicate.py b/subdir/modules_with_same_names_but_different_symbols/module1/duplicate.py
new file mode 100644
index 0000000..02aa6a1
--- /dev/null
+++ b/subdir/modules_with_same_names_but_different_symbols/module1/duplicate.py
@@ -0,0 +1,4 @@
+class DuplicateClass(object):
+
+ def a_function(self):
+ return True
diff --git a/subdir/modules_with_same_names_but_different_symbols/module1/duplicate_tests.py b/subdir/modules_with_same_names_but_different_symbols/module1/duplicate_tests.py
new file mode 100644
index 0000000..232c510
--- /dev/null
+++ b/subdir/modules_with_same_names_but_different_symbols/module1/duplicate_tests.py
@@ -0,0 +1,11 @@
+import unittest
+
+from subdir.modules_with_same_names_but_different_symbols.module1 \
+ import duplicate
+
+
+class DuplicateClassTests(unittest.TestCase):
+
+ def test_a_function_works(self):
+ o = duplicate.DuplicateClass()
+ self.assertEqual(o.a_function(), True)
diff --git a/subdir/modules_with_same_names_but_different_symbols/module2/__init__.py b/subdir/modules_with_same_names_but_different_symbols/module2/__init__.py
new file mode 100644
index 0000000..e1dd07e
--- /dev/null
+++ b/subdir/modules_with_same_names_but_different_symbols/module2/__init__.py
@@ -0,0 +1 @@
+import duplicate
diff --git a/subdir/modules_with_same_names_but_different_symbols/module2/duplicate.py b/subdir/modules_with_same_names_but_different_symbols/module2/duplicate.py
new file mode 100644
index 0000000..75ea503
--- /dev/null
+++ b/subdir/modules_with_same_names_but_different_symbols/module2/duplicate.py
@@ -0,0 +1,4 @@
+class DifferentClass(object):
+
+ def a_function(self):
+ return True
diff --git a/subdir/modules_with_same_names_but_different_symbols/module2/duplicate_tests.py b/subdir/modules_with_same_names_but_different_symbols/module2/duplicate_tests.py
new file mode 100644
index 0000000..dd3abf4
--- /dev/null
+++ b/subdir/modules_with_same_names_but_different_symbols/module2/duplicate_tests.py
@@ -0,0 +1,11 @@
+import unittest
+
+from subdir.modules_with_same_names_but_different_symbols.module2 \
+ import duplicate
+
+
+class DifferentClassTests(unittest.TestCase):
+
+ def test_a_function_works(self):
+ o = duplicate.DifferentClass()
+ self.assertEqual(o.a_function(), True)