bpo-39003: Make sure all test are the same when using -R in test_unparse (GH-17537)

This commit is contained in:
Pablo Galindo 2019-12-09 17:57:50 +00:00 committed by GitHub
parent c18b805ac6
commit ac229116a3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 14 additions and 7 deletions

View File

@ -288,15 +288,17 @@ class DirectoryTestCase(ASTTestCase):
test_directories = (lib_dir, lib_dir / "test") test_directories = (lib_dir, lib_dir / "test")
skip_files = {"test_fstring.py"} skip_files = {"test_fstring.py"}
@functools.cached_property _files_to_test = None
def files_to_test(self):
# bpo-31174: Use cached_property to store the names sample @classmethod
# to always test the same files. It prevents false alarms def files_to_test(cls):
# when hunting reference leaks.
if cls._files_to_test is not None:
return cls._files_to_test
items = [ items = [
item.resolve() item.resolve()
for directory in self.test_directories for directory in cls.test_directories
for item in directory.glob("*.py") for item in directory.glob("*.py")
if not item.name.startswith("bad") if not item.name.startswith("bad")
] ]
@ -304,10 +306,15 @@ class DirectoryTestCase(ASTTestCase):
# Test limited subset of files unless the 'cpu' resource is specified. # Test limited subset of files unless the 'cpu' resource is specified.
if not test.support.is_resource_enabled("cpu"): if not test.support.is_resource_enabled("cpu"):
items = random.sample(items, 10) items = random.sample(items, 10)
# bpo-31174: Store the names sample to always test the same files.
# It prevents false alarms when hunting reference leaks.
cls._files_to_test = items
return items return items
def test_files(self): def test_files(self):
for item in self.files_to_test: for item in self.files_to_test():
if test.support.verbose: if test.support.verbose:
print(f"Testing {item.absolute()}") print(f"Testing {item.absolute()}")