[pypy-svn] r17346 - in pypy/dist/pypy/module/__builtin__/test: . impsubdir

arigo at codespeak.net arigo at codespeak.net
Thu Sep 8 10:47:20 CEST 2005


Author: arigo
Date: Thu Sep  8 10:47:20 2005
New Revision: 17346

Removed:
   pypy/dist/pypy/module/__builtin__/test/impsubdir/
Modified:
   pypy/dist/pypy/module/__builtin__/test/test_import.py
Log:
Replaced the large directory substructure 'impsubdir' used in test_import
with a couple of pages of py.path code that creates the same structure
temporarily.  Cleaner, especially because of this .pyc file that was
checked in.


Modified: pypy/dist/pypy/module/__builtin__/test/test_import.py
==============================================================================
--- pypy/dist/pypy/module/__builtin__/test/test_import.py	(original)
+++ pypy/dist/pypy/module/__builtin__/test/test_import.py	Thu Sep  8 10:47:20 2005
@@ -9,13 +9,71 @@
 
 from pypy.module.__builtin__ import importing
 
-def get_import_path():
-    j = os.path.join
-    p = os.path.abspath(j(os.path.dirname(__file__), 'impsubdir'))
+def setuppkg(pkgname, **entries):
+    p = udir.join('impsubdir')
+    if pkgname:
+        p = p.join(*pkgname.split('.'))
+    p.ensure(dir=1)
+    f = p.join("__init__.py").open('w')
+    print >> f, "# package"
+    f.close()
+    for filename, content in entries.items():
+        filename += '.py'
+        f = p.join(filename).open('w')
+        print >> f, '#', filename
+        print >> f, content
+        f.close()
     return p
 
+def setup_directory_structure(space):
+    root = setuppkg("",
+                    a = "imamodule = 1\ninpackage = 0",
+                    b = "imamodule = 1\ninpackage = 0",
+                    ambig = "imamodule = 1",
+                    )
+    root.ensure("notapackage", dir=1)    # empty, no __init__.py
+    setuppkg("pkg",
+             a          = "imamodule = 1\ninpackage = 1",
+             relative_a = "import a",
+             abs_b      = "import b",
+             abs_x_y    = "import x.y",
+             )
+    setuppkg("pkg.pkg1", a='')
+    setuppkg("pkg.pkg2", a='', b='')
+    setuppkg("pkg_r", inpkg = "import x.y")
+    setuppkg("pkg_r.x")
+    setuppkg("x", y='')
+    setuppkg("ambig", __init__ = "imapackage = 1")
+    setuppkg("pkg_relative_a",
+             __init__ = "import a",
+             a        = "imamodule = 1\ninpackage = 1",
+             )
+    setuppkg("pkg_substituting",
+             __init__ = "import sys, pkg_substituted\n"
+                        "sys.modules[__name__] = pkg_substituted")
+    setuppkg("pkg_substituted", mod='')
+
+    # create compiled/x.py and a corresponding pyc file
+    p = setuppkg("compiled", x = "x = 84")
+    w = space.wrap
+    w_modname = w("compiled.x")
+    filename = str(p.join("x.py"))
+    fd = os.open(filename, os.O_RDONLY, 0666)
+    osfile = importing.OsFileWrapper(fd)
+    try:
+        importing.load_source_module(space,
+                                     w_modname,
+                                     w(importing.Module(space, w_modname)),
+                                     filename,
+                                     osfile)
+    finally:
+        osfile.close()
+
+    return str(root)
+
+
 def _setup(space):
-    dn = get_import_path()
+    dn = setup_directory_structure(space)
     return space.appexec([space.wrap(dn)], """
         (dn): 
             import sys



More information about the Pypy-commit mailing list