[pypy-svn] r10758 - in pypy/dist/pypy/module: builtin test test/impsubdir/pkg/pkg2

pedronis at codespeak.net pedronis at codespeak.net
Sun Apr 17 02:07:50 CEST 2005


Author: pedronis
Date: Sun Apr 17 02:07:50 2005
New Revision: 10758

Added:
   pypy/dist/pypy/module/test/impsubdir/pkg/pkg2/
   pypy/dist/pypy/module/test/impsubdir/pkg/pkg2/__init__.py   (contents, props changed)
   pypy/dist/pypy/module/test/impsubdir/pkg/pkg2/a.py   (contents, props changed)
   pypy/dist/pypy/module/test/impsubdir/pkg/pkg2/b.py   (contents, props changed)
Modified:
   pypy/dist/pypy/module/builtin/importing.py
   pypy/dist/pypy/module/test/test_import.py
Log:
fix failure behavior of import in case a package __path__ has been deleted; with test



Modified: pypy/dist/pypy/module/builtin/importing.py
==============================================================================
--- pypy/dist/pypy/module/builtin/importing.py	(original)
+++ pypy/dist/pypy/module/builtin/importing.py	Sun Apr 17 02:07:50 2005
@@ -156,19 +156,21 @@
         w_mod = space.sys.getmodule(modulename) 
         if w_mod is not None:
             return w_mod
-        for path in space.unpackiterable(w_path):
-            dir = os.path.join(space.str_w(path), partname)
-            if os.path.isdir(dir):
-                f = os.path.join(dir,'__init__.py')
+        
+        if w_path is not None:
+            for path in space.unpackiterable(w_path):
+                dir = os.path.join(space.str_w(path), partname)
+                if os.path.isdir(dir):
+                    f = os.path.join(dir,'__init__.py')
+                    w_mod = try_import_mod(space, w_modulename, f, w_parent,
+                                           w(partname), pkgdir=dir)
+                    if w_mod is not None:
+                        return w_mod
+                f = os.path.join(space.str_w(path), partname + '.py')
                 w_mod = try_import_mod(space, w_modulename, f, w_parent,
-                                       w(partname), pkgdir=dir)
+                                       w(partname))
                 if w_mod is not None:
                     return w_mod
-            f = os.path.join(space.str_w(path), partname + '.py')
-            w_mod = try_import_mod(space, w_modulename, f, w_parent,
-                                   w(partname))
-            if w_mod is not None:
-                return w_mod
 
     if tentative:
         return None

Added: pypy/dist/pypy/module/test/impsubdir/pkg/pkg2/__init__.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/module/test/impsubdir/pkg/pkg2/__init__.py	Sun Apr 17 02:07:50 2005
@@ -0,0 +1 @@
+# package

Added: pypy/dist/pypy/module/test/impsubdir/pkg/pkg2/a.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/module/test/impsubdir/pkg/pkg2/a.py	Sun Apr 17 02:07:50 2005
@@ -0,0 +1 @@
+# a.py

Added: pypy/dist/pypy/module/test/impsubdir/pkg/pkg2/b.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/module/test/impsubdir/pkg/pkg2/b.py	Sun Apr 17 02:07:50 2005
@@ -0,0 +1 @@
+# b.py

Modified: pypy/dist/pypy/module/test/test_import.py
==============================================================================
--- pypy/dist/pypy/module/test/test_import.py	(original)
+++ pypy/dist/pypy/module/test/test_import.py	Sun Apr 17 02:07:50 2005
@@ -144,3 +144,11 @@
     def test_substituting_import(self):
         from pkg_substituting import mod
         assert mod.__name__ =='pkg_substituting.mod'
+
+    def test_proper_failure_on_killed__path__(self):
+        import pkg.pkg2.a
+        del pkg.pkg2.__path__
+        def imp_b():
+            import pkg.pkg2.b
+        raises(ImportError,imp_b)
+        



More information about the Pypy-commit mailing list