[Python-bugs-list] [ python-Bugs-798274 ] absolute import patch breaks external users of test.regrtest

SourceForge.net noreply at sourceforge.net
Wed Sep 17 18:53:57 EDT 2003

Bugs item #798274, was opened at 2003-08-31 16:39
Message generated for change (Comment added) made by nriley
You can respond by visiting: 

Category: Extension Modules
Group: Python 2.3
Status: Open
Resolution: None
Priority: 5
Submitted By: Nicholas Riley (nriley)
Assigned to: Barry A. Warsaw (bwarsaw)
Summary: absolute import patch breaks external users of test.regrtest

Initial Comment:
I've built a test system using Python's test.regrtest 

mechanism, and it worked very well under Python 2.2.  In 

Python 2.3, the output looks like this:


test_inttypes skipped -- No module named test_inttypes



test_unittest skipped -- No module named test_unittest


I've tracked the problem down to a change made about a 

year ago.



test.regrtest is finding the modules, but is failing to import 

them because it is prepending 'test.' to the module names, 

in a mistaken assumption that all tests will be in a package 

named test.

As it happened, I had my test modules inside a directory 

named 'test', and I tried making the directory a module and 

futzing with sys.path to get it to work, but now 

test.regrtest can't find the system implementation of 

test.test_support.  I've also now got the problem of 

namespace pollution - the "test_string" above is Python's 

version, not my version with the same name.

So, it appears non-Python users of test.regrtest are broken 

by this change in Python 2.3.  I was pretty careful to make 

sure that I was doing something supported - the docstring 

for test.regrtest.main explicitly refers to non-Python test 

suite users - and ran into some weird cases like test.* not 

being installed on Mac OS X by default, but it worked very 

well otherwise.

One potential solution would be that if 'testdir' is specified, 

test.regrtest.main() does not attempt to prepend 'test.' to 

the module names.  This seems to match pretty well with 

the spirit of the documentation for that method.


>Comment By: Nicholas Riley (nriley)
Date: 2003-09-17 17:53

Logged In: YES 

Thanks for the helpful response.

Sorry I didn't get around to writing any documentation, but a 

patch is here:




Comment By: Barry A. Warsaw (bwarsaw)
Date: 2003-09-01 22:54

Logged In: YES 

IIRC, this patch was necessary because some tests required

absolute imports and we cannot mix relative and absolute

imports in the test suite.  IMO, regrtest's primary mission

in life is to support Python's test suite and any other use

is secondary (for example, it isn't documented in the

standard library manual).  OTOH, you might think about

contributing a patch that allows regrtest to be used outside

the Python test suite, but doesn't break the absolute import

requirement while in the test suite.  (You might also

consider adding some standard lib documentation to your

patch <wink>).

The other problems you mention are inherent in Python's

import machinery.  If you have two packages named "test" on

your sys.path, Python will not by default search them both

for submodules.


Comment By: Raymond Hettinger (rhettinger)
Date: 2003-09-01 11:51

Logged In: YES 

Barry, this was your change.

Would you take a look at this bug report?


You can respond by visiting: 

More information about the Python-bugs-list mailing list