summaryrefslogtreecommitdiffstats
path: root/Lib/unittest/test
diff options
context:
space:
mode:
authorMichael Foord <fuzzyman@voidspace.org.uk>2010-05-07 18:18:14 (GMT)
committerMichael Foord <fuzzyman@voidspace.org.uk>2010-05-07 18:18:14 (GMT)
commit01984e962973f60221cbaf38bf8770c0a33d3471 (patch)
tree2362d0f2b496b88fb4d2234204791e895b4d1cf2 /Lib/unittest/test
parent8956271f11a135e33b0ba99bac48118e337304f6 (diff)
downloadcpython-01984e962973f60221cbaf38bf8770c0a33d3471.zip
cpython-01984e962973f60221cbaf38bf8770c0a33d3471.tar.gz
cpython-01984e962973f60221cbaf38bf8770c0a33d3471.tar.bz2
Merged revisions 80932 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r80932 | michael.foord | 2010-05-07 20:16:19 +0200 (Fri, 07 May 2010) | 1 line Issue 8547 - detecting and reporting that modules have been imported from the wrong location under test discovery. ........
Diffstat (limited to 'Lib/unittest/test')
-rw-r--r--Lib/unittest/test/test_discovery.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/Lib/unittest/test/test_discovery.py b/Lib/unittest/test/test_discovery.py
index 1b0f08b..8253580 100644
--- a/Lib/unittest/test/test_discovery.py
+++ b/Lib/unittest/test/test_discovery.py
@@ -294,6 +294,45 @@ class TestDiscovery(unittest.TestCase):
self.assertTrue(program.failfast)
self.assertTrue(program.catchbreak)
+ def test_detect_module_clash(self):
+ class Module(object):
+ __file__ = 'bar/foo.py'
+ sys.modules['foo'] = Module
+ full_path = os.path.abspath('foo')
+ original_listdir = os.listdir
+ original_isfile = os.path.isfile
+ original_isdir = os.path.isdir
+
+ def cleanup():
+ os.listdir = original_listdir
+ os.path.isfile = original_isfile
+ os.path.isdir = original_isdir
+ del sys.modules['foo']
+ if full_path in sys.path:
+ sys.path.remove(full_path)
+ self.addCleanup(cleanup)
+
+ def listdir(_):
+ return ['foo.py']
+ def isfile(_):
+ return True
+ def isdir(_):
+ return True
+ os.listdir = listdir
+ os.path.isfile = isfile
+ os.path.isdir = isdir
+
+ loader = unittest.TestLoader()
+
+ mod_dir = os.path.abspath('bar')
+ expected_dir = os.path.abspath('foo')
+ msg = (r"^'foo' module incorrectly imported from %r\. Expected %r\. "
+ "Is this module globally installed\?$") % (mod_dir, expected_dir)
+ self.assertRaisesRegexp(
+ ImportError, msg, loader.discover,
+ start_dir='foo', pattern='foo.py'
+ )
+ self.assertEqual(sys.path[0], full_path)
if __name__ == '__main__':
unittest.main()