
In #7712 I was trying to change regrtest to always run the tests in a temporary CWD (e.g. /tmp/@test_1234_cwd/). The patches attached to the issue add a context manager that changes the CWD, and it works fine when I run ./python -m test.regrtest from trunk/. However, when I try from trunk/Lib/ it fails with ImportErrors (note that the latest patch by Florent Xicluna already tries to workaround the problem). The traceback points to "the_package = __import__(abstest, globals(), locals(), [])" in runtest_inner (in regrtest.py), and a "print __import__('test').__file__" there returns 'test/__init__.pyc'. This can be reproduced quite easily: trunk$ ./python Python 2.7a2+ (trunk:77941M, Feb 3 2010, 06:40:49) [GCC 4.4.1] on linux2 Type "help", "copyright", "credits" or "license" for more information.
import os, sys os.getcwd() '/home/wolf/dev/trunk' import test test.__file__ # absolute '/home/wolf/dev/trunk/Lib/test/__init__.pyc' os.chdir('/tmp') test.__file__ '/home/wolf/dev/trunk/Lib/test/__init__.pyc' from test import test_unicode # works test_unicode.__file__ '/home/wolf/dev/trunk/Lib/test/test_unicode.pyc'
[21]+ Stopped ./python
trunk$ cd Lib/ trunk/Lib$ ../python Python 2.7a2+ (trunk:77941M, Feb 3 2010, 06:40:49) [GCC 4.4.1] on linux2 Type "help", "copyright", "credits" or "license" for more information.
import os, sys os.getcwd() '/home/wolf/dev/trunk/Lib' import test test.__file__ # relative 'test/__init__.pyc' os.chdir('/tmp') from test import test_unicode # fails Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: cannot import name test_unicode
Is there a reason why in the second case test.__file__ is relative?