[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