mirror of
https://github.com/python/cpython.git
synced 2024-11-30 21:34:17 +08:00
#11078: test___all__ now checks for duplicates in __all__. Initial patch by R. David Murray.
This commit is contained in:
parent
4c09c2cbd5
commit
ed52f6cb73
@ -29,17 +29,20 @@ class AllTest(unittest.TestCase):
|
||||
if not hasattr(sys.modules[modname], "__all__"):
|
||||
raise NoAll(modname)
|
||||
names = {}
|
||||
try:
|
||||
exec("from %s import *" % modname, names)
|
||||
except Exception as e:
|
||||
# Include the module name in the exception string
|
||||
self.fail("__all__ failure in {}: {}: {}".format(
|
||||
modname, e.__class__.__name__, e))
|
||||
if "__builtins__" in names:
|
||||
del names["__builtins__"]
|
||||
keys = set(names)
|
||||
all = set(sys.modules[modname].__all__)
|
||||
self.assertEqual(keys, all)
|
||||
with self.subTest(module=modname):
|
||||
try:
|
||||
exec("from %s import *" % modname, names)
|
||||
except Exception as e:
|
||||
# Include the module name in the exception string
|
||||
self.fail("__all__ failure in {}: {}: {}".format(
|
||||
modname, e.__class__.__name__, e))
|
||||
if "__builtins__" in names:
|
||||
del names["__builtins__"]
|
||||
keys = set(names)
|
||||
all_list = sys.modules[modname].__all__
|
||||
all_set = set(all_list)
|
||||
self.assertCountEqual(all_set, all_list, "in module {}".format(modname))
|
||||
self.assertEqual(keys, all_set, "in module {}".format(modname))
|
||||
|
||||
def walk_modules(self, basedir, modpath):
|
||||
for fn in sorted(os.listdir(basedir)):
|
||||
|
Loading…
Reference in New Issue
Block a user