From: Barry Warsaw <barry@python.org>
Date: Thu, 16 Aug 2001 20:42:38 +0000 (+0000)
Subject: Added a test for module repr truncation when the package name is
X-Git-Tag: v2.2a3~488
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f6365e01076d3b9ab7de171c07622f21710206d5;p=python

Added a test for module repr truncation when the package name is
really long.  Closes SF bug #437984.
---

diff --git a/Lib/test/test_import.py b/Lib/test/test_import.py
index b2e3fb6d3d..e2fbc5c022 100644
--- a/Lib/test/test_import.py
+++ b/Lib/test/test_import.py
@@ -69,3 +69,38 @@ try:
             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` <> \
+       "<module 'areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation' from '%s'>" % 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)