Commit ecd53838 authored by Robert Collins's avatar Robert Collins

#25320: Handle sockets in directories unittest discovery is scanning.

Patch from Victor van den Elzen.
parent 87d6e136
......@@ -479,6 +479,8 @@ class TestLoader(object):
return tests, True
finally:
self._loading_packages.discard(name)
else:
return None, False
defaultTestLoader = TestLoader()
......
......@@ -90,6 +90,46 @@ class TestDiscovery(unittest.TestCase):
('test3', 'test4')])
self.assertEqual(suite, expected)
def test_find_tests_socket(self):
# A socket is neither a directory nor a regular file.
# https://bugs.python.org/issue25320
loader = unittest.TestLoader()
original_listdir = os.listdir
def restore_listdir():
os.listdir = original_listdir
original_isfile = os.path.isfile
def restore_isfile():
os.path.isfile = original_isfile
original_isdir = os.path.isdir
def restore_isdir():
os.path.isdir = original_isdir
path_lists = [['socket']]
os.listdir = lambda path: path_lists.pop(0)
self.addCleanup(restore_listdir)
os.path.isdir = lambda path: False
self.addCleanup(restore_isdir)
os.path.isfile = lambda path: False
self.addCleanup(restore_isfile)
loader._get_module_from_name = lambda path: path + ' module'
orig_load_tests = loader.loadTestsFromModule
def loadTestsFromModule(module, pattern=None):
# This is where load_tests is called.
base = orig_load_tests(module, pattern=pattern)
return base + [module + ' tests']
loader.loadTestsFromModule = loadTestsFromModule
loader.suiteClass = lambda thing: thing
top_level = os.path.abspath('/foo')
loader._top_level_dir = top_level
suite = list(loader._find_tests(top_level, 'test*.py'))
self.assertEqual(suite, [])
def test_find_tests_with_package(self):
loader = unittest.TestLoader()
......
......@@ -393,6 +393,7 @@ Lance Ellinghaus
Daniel Ellis
Phil Elson
David Ely
Victor van den Elzen
Jeff Epler
Tom Epperly
Gökcen Eraslan
......
......@@ -91,6 +91,9 @@ Core and Builtins
Library
-------
- Issue #25320: Handle sockets in directories unittest discovery is scanning.
Patch from Victor van den Elzen.
- Issue #16181: cookiejar.http2time() now returns None if year is higher than
datetime.MAXYEAR.
......
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