diff --git a/Lib/test/test_import.py b/Lib/test/test_import.py index b2e3fb6d3d4..e2fbc5c022c 100644 --- a/Lib/test/test_import.py +++ b/Lib/test/test_import.py @@ -69,3 +69,38 @@ def test_with_extension(ext): # ext normally ".py"; perhaps ".pyw" test_with_extension(ext) finally: del sys.path[0] + +def touch(path): + fp = open(path, 'w') + fp.close() + +# test imports of packages with really long names, but specifically that their +# reprs include the full name +try: + longname = 'areallylongpackageandmodulenametotestreprtruncation' + os.mkdir(longname) + touch(os.path.join(longname, '__init__.py')) + os.mkdir(os.path.join(longname, longname)) + touch(os.path.join(longname, longname, '__init__.py')) + touch(os.path.join(longname, longname, longname + '.py')) + sys.path.insert(0, os.getcwd()) + from areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation import areallylongpackageandmodulenametotestreprtruncation + if `areallylongpackageandmodulenametotestreprtruncation` <> \ + "" % areallylongpackageandmodulenametotestreprtruncation.__file__: + raise TestFailed, 'module name truncation' +finally: + # Delete recursively + del sys.path[0] + def zap(actions, dirname, names): + for name in names: + actions.append(os.path.join(dirname, name)) + actions = [] + os.path.walk(longname, zap, actions) + actions.append(longname) + actions.sort() + actions.reverse() + for p in actions: + if os.path.isdir(p): + os.rmdir(p) + else: + os.remove(p)