diff options
author | Jannis Pohlmann <jannis.pohlmann@codethink.co.uk> | 2013-09-27 18:35:15 +0100 |
---|---|---|
committer | Jannis Pohlmann <jannis.pohlmann@codethink.co.uk> | 2013-09-27 18:35:15 +0100 |
commit | 0a3b1a065257109295f9322f5a7e199d157acfe6 (patch) | |
tree | 8f7a25d69fe3728d23bfe7b5bbaef0957bbf3184 /subdir | |
parent | d7b5706244fca58d8a2564ba6394cb460d2ca2c6 (diff) | |
download | coverage-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')
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) |