cpython: #11078: test___all__ now checks for duplicates in __all__. Initial patch by R.
http://hg.python.org/cpython/rev/3f1bcfbed022 changeset: 83580:3f1bcfbed022 parent: 83577:4e186581fea7 user: Ezio Melotti <ezio.melotti@gmail.com> date: Wed May 01 14:58:09 2013 +0300 summary: #11078: test___all__ now checks for duplicates in __all__. Initial patch by R. David Murray. files: Lib/test/test___all__.py | 25 ++++++++++++++----------- Misc/NEWS | 3 +++ 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/Lib/test/test___all__.py b/Lib/test/test___all__.py --- a/Lib/test/test___all__.py +++ b/Lib/test/test___all__.py @@ -29,17 +29,20 @@ 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)): diff --git a/Misc/NEWS b/Misc/NEWS --- a/Misc/NEWS +++ b/Misc/NEWS @@ -176,6 +176,9 @@ Tests ----- +- Issue #11078: test___all__ now checks for duplicates in __all__. + Initial patch by R. David Murray. + - Issue #17712: Fix test_gdb failures on Ubuntu 13.04. - Issue #17835: Fix test_io when the default OS pipe buffer size is larger -- Repository URL: http://hg.python.org/cpython
participants (1)
-
ezio.melotti