Kaydet (Commit) e87b7eaf authored tarafından Benjamin Peterson's avatar Benjamin Peterson

fix windows tests (#16662)

From Robert Collins.
üst cdfb7691
import os import os.path
from os.path import abspath
import re import re
import sys import sys
import types import types
...@@ -250,7 +251,7 @@ class TestDiscovery(unittest.TestCase): ...@@ -250,7 +251,7 @@ class TestDiscovery(unittest.TestCase):
def restore_isdir(): def restore_isdir():
os.path.isdir = original_isdir os.path.isdir = original_isdir
self.addCleanup(restore_isdir) self.addCleanup(restore_isdir)
self.addCleanup(sys.path.remove, '/foo') self.addCleanup(sys.path.remove, abspath('/foo'))
# Test data: we expect the following: # Test data: we expect the following:
# a listdir to find our package, and a isfile and isdir check on it. # a listdir to find our package, and a isfile and isdir check on it.
...@@ -263,8 +264,8 @@ class TestDiscovery(unittest.TestCase): ...@@ -263,8 +264,8 @@ class TestDiscovery(unittest.TestCase):
# the module load tests for both package and plain module called, # the module load tests for both package and plain module called,
# and the plain module result nested by the package module load_tests # and the plain module result nested by the package module load_tests
# indicating that it was processed and could have been mutated. # indicating that it was processed and could have been mutated.
vfs = {'/foo': ['my_package'], vfs = {abspath('/foo'): ['my_package'],
'/foo/my_package': ['__init__.py', 'test_module.py']} abspath('/foo/my_package'): ['__init__.py', 'test_module.py']}
def list_dir(path): def list_dir(path):
return list(vfs[path]) return list(vfs[path])
os.listdir = list_dir os.listdir = list_dir
...@@ -301,10 +302,10 @@ class TestDiscovery(unittest.TestCase): ...@@ -301,10 +302,10 @@ class TestDiscovery(unittest.TestCase):
loader._get_module_from_name = lambda name: Module(name) loader._get_module_from_name = lambda name: Module(name)
loader.suiteClass = lambda thing: thing loader.suiteClass = lambda thing: thing
loader._top_level_dir = '/foo' loader._top_level_dir = abspath('/foo')
# this time no '.py' on the pattern so that it can match # this time no '.py' on the pattern so that it can match
# a test package # a test package
suite = list(loader._find_tests('/foo', 'test*.py')) suite = list(loader._find_tests(abspath('/foo'), 'test*.py'))
# We should have loaded tests from both my_package and # We should have loaded tests from both my_package and
# my_pacakge.test_module, and also run the load_tests hook in both. # my_pacakge.test_module, and also run the load_tests hook in both.
...@@ -404,8 +405,8 @@ class TestDiscovery(unittest.TestCase): ...@@ -404,8 +405,8 @@ class TestDiscovery(unittest.TestCase):
test.test_this_does_not_exist() test.test_this_does_not_exist()
def test_discover_with_init_modules_that_fail_to_import(self): def test_discover_with_init_modules_that_fail_to_import(self):
vfs = {'/foo': ['my_package'], vfs = {abspath('/foo'): ['my_package'],
'/foo/my_package': ['__init__.py', 'test_module.py']} abspath('/foo/my_package'): ['__init__.py', 'test_module.py']}
self.setup_import_issue_package_tests(vfs) self.setup_import_issue_package_tests(vfs)
import_calls = [] import_calls = []
def _get_module_from_name(name): def _get_module_from_name(name):
...@@ -413,9 +414,9 @@ class TestDiscovery(unittest.TestCase): ...@@ -413,9 +414,9 @@ class TestDiscovery(unittest.TestCase):
raise ImportError("Cannot import Name") raise ImportError("Cannot import Name")
loader = unittest.TestLoader() loader = unittest.TestLoader()
loader._get_module_from_name = _get_module_from_name loader._get_module_from_name = _get_module_from_name
suite = loader.discover('/foo') suite = loader.discover(abspath('/foo'))
self.assertIn('/foo', sys.path) self.assertIn(abspath('/foo'), sys.path)
self.assertEqual(suite.countTestCases(), 1) self.assertEqual(suite.countTestCases(), 1)
test = list(list(suite)[0])[0] # extract test from suite test = list(list(suite)[0])[0] # extract test from suite
with self.assertRaises(ImportError): with self.assertRaises(ImportError):
...@@ -439,8 +440,8 @@ class TestDiscovery(unittest.TestCase): ...@@ -439,8 +440,8 @@ class TestDiscovery(unittest.TestCase):
self.assertEqual(len(result.skipped), 1) self.assertEqual(len(result.skipped), 1)
def test_discover_with_init_module_that_raises_SkipTest_on_import(self): def test_discover_with_init_module_that_raises_SkipTest_on_import(self):
vfs = {'/foo': ['my_package'], vfs = {abspath('/foo'): ['my_package'],
'/foo/my_package': ['__init__.py', 'test_module.py']} abspath('/foo/my_package'): ['__init__.py', 'test_module.py']}
self.setup_import_issue_package_tests(vfs) self.setup_import_issue_package_tests(vfs)
import_calls = [] import_calls = []
def _get_module_from_name(name): def _get_module_from_name(name):
...@@ -448,9 +449,9 @@ class TestDiscovery(unittest.TestCase): ...@@ -448,9 +449,9 @@ class TestDiscovery(unittest.TestCase):
raise unittest.SkipTest('skipperoo') raise unittest.SkipTest('skipperoo')
loader = unittest.TestLoader() loader = unittest.TestLoader()
loader._get_module_from_name = _get_module_from_name loader._get_module_from_name = _get_module_from_name
suite = loader.discover('/foo') suite = loader.discover(abspath('/foo'))
self.assertIn('/foo', sys.path) self.assertIn(abspath('/foo'), sys.path)
self.assertEqual(suite.countTestCases(), 1) self.assertEqual(suite.countTestCases(), 1)
result = unittest.TestResult() result = unittest.TestResult()
suite.run(result) suite.run(result)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment