[pypy-svn] r61034 - in pypy/trunk/pypy/module/__builtin__: . test

antocuni at codespeak.net antocuni at codespeak.net
Fri Jan 16 14:50:27 CET 2009


Author: antocuni
Date: Fri Jan 16 14:50:25 2009
New Revision: 61034

Modified:
   pypy/trunk/pypy/module/__builtin__/importing.py
   pypy/trunk/pypy/module/__builtin__/test/test_import.py
Log:
fix relative __import__s when the global dict contains __name__ and __path__
 


Modified: pypy/trunk/pypy/module/__builtin__/importing.py
==============================================================================
--- pypy/trunk/pypy/module/__builtin__/importing.py	(original)
+++ pypy/trunk/pypy/module/__builtin__/importing.py	Fri Jan 16 14:50:25 2009
@@ -172,9 +172,13 @@
                     ctxt_name_prefix_parts = [ ctxt_name_prefix_parts[i] 
                                                for i in range(len(cnpp)-level) ]
                 if ctxt_name_prefix_parts:
-                    rel_modulename = '.'.join(ctxt_name_prefix_parts+[modulename])
+                    rel_modulename = '.'.join(ctxt_name_prefix_parts)
+                    if modulename:
+                        rel_modulename += '.' + modulename
             else: # context is a package module
-                rel_modulename = ctxt_name+'.'+modulename
+                rel_modulename = ctxt_name
+                if modulename:
+                    rel_modulename += '.' + modulename
             baselevel = len(ctxt_name_prefix_parts)
         if rel_modulename is not None:
             w_mod = check_sys_modules(space, w(rel_modulename))

Modified: pypy/trunk/pypy/module/__builtin__/test/test_import.py
==============================================================================
--- pypy/trunk/pypy/module/__builtin__/test/test_import.py	(original)
+++ pypy/trunk/pypy/module/__builtin__/test/test_import.py	Fri Jan 16 14:50:25 2009
@@ -313,15 +313,19 @@
         raises(ValueError, imp)
 
     def test_relative_import_with___name__(self):
-        skip("fixme")
+        import sys
+        mydict = {'__name__': 'sys.foo'}
+        res = __import__('', mydict, mydict, ('bar',), 1)
+        assert res is sys
+
+    def test_relative_import_with___name__and___path__(self):
         import sys
         import imp
-        mod = imp.new_module("foo")
-        mod.xxx = 42
-        sys.modules['foo'] = mod
-        mydict = {'__name__': 'foo.bar'}
-        exec "from . import xxx" in mydict
-        assert mydict['xxx'] == 42
+        foo = imp.new_module('foo')
+        sys.modules['sys.foo'] = foo
+        mydict = {'__name__': 'sys.foo', '__path__': '/some/path'}
+        res = __import__('', mydict, mydict, ('bar',), 1)
+        assert res is foo
 
     def test_universal_newlines(self):
         import pkg_univnewlines



More information about the Pypy-commit mailing list