[Distutils] [zc.buildout] building a testrunner

Marius Gedminas marius at pov.lt
Fri Jul 25 12:02:54 CEST 2008


Context: Test runner gets confused by the egg cache that lives under its
--test-path.

On Thu, Jul 24, 2008 at 05:14:33PM -0400, Jim Fulton wrote:
> Arguably, the test runner recipe should be able to deal with this  
> case.  I view this as a bug. It would be great if someone reported  
> it. :)

I'll report it.

On Thu, Jul 24, 2008 at 10:33:31PM +0100, Chris Withers wrote:
> Marius Gedminas wrote:
> >>if __name__ == '__main__':
> >>    zope.testing.testrunner.run([
> >>  '--test-path', '/home/chris/twiddler',
> 
> >You don't want the test runner to look for tests
> >under /home/chris/twiddler/, which contains the egg cache directly under
> >it, as well as your Python packages.
> 
> But these module names don't match any test pattern so why would they be 
> found?

Because they contain submodules that do match the test pattern, IIUC.

> >* you want to be able to import 'twiddler', which means
> >  /home/chris/twiddler/ must be in you sys.path
> 
> Right.
> 
> >* you don't want setup.py or bootstrap.py to be in your sys.path, which
> >  contradicts the above requirement
> 
> Why don't I want them in my sys.path?

Uh, because otherwise my argument breaks down completely.  ;-)

I suppose it's a matter of purity.  I feel about extra files lying on my
sys.path about the same as I feel about ending statements with
semicolons in Python.

> I'm not sure I quite by this, I don't understand why zope.testing is 
> trying to import something like:
> 
> eggs.zc.buildout-1.1.0-py2.5.egg.zc.buildout.tests

It found a directory named 'tests' under

  eggs/zc.buildout-1.1.0-py2.5.egg/zc/buildout/tests

and naively converted the slashes to periods, assuming that the root of
the search three (i.e. the path passed with --test-path) is on your
$PYTHONPATH.

I agree that this is a bug.  It can be fixed by:

  - not recursing into subdirectories with names that are invalid Python
    module names

  - not recursing into subdirectories that don't have a __init__ (and
    eggs/ certainly doesn't, I hope)

> That sounds like a good idea, but I'd prefer to solve this problem for 
> anyone who might want to develop packages of mine.

Agreed.  Bug filed as https://bugs.launchpad.net/zope.testing/+bug/251759

Marius Gedminas
-- 
The memory management on the PowerPC can be used to frighten small children.
                -- Linus Torvalds
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://mail.python.org/pipermail/distutils-sig/attachments/20080725/73eb852c/attachment.pgp>


More information about the Distutils-SIG mailing list