[TIP] [Distutils] RFC: Barely minimal CI + tests + packaging in Python WAS: Guidelines for where to put tests & how to package them

Michael Foord fuzzyman at voidspace.org.uk
Mon Mar 1 11:43:31 PST 2010

On 01/03/2010 19:22, Chris Withers wrote:
> P.J. Eby wrote:
>> At 10:41 AM 2/25/2010 -0500, Olemis Lang wrote:
>>> PS: BTW, how could I trigger easy_install(ation) at a given point
>>> while implementing a distutils command, and let the command perform
>>> further actions if deps are installed correctly ?
>> Setuptools' "Distribution" object has a method for fetching 
>> dependencies. See setuptools' "test" command for an example. (This 
>> doesn't install the dependencies globally, just drops eggs into the 
>> build directory. But they're there and available to be reused for 
>> installation in a later phase, under normal circumstances.)
> ...which is all pretty grim. If you use this with other packaging 
> tools, like, say, buildout, the testing dependencies just get dumped 
> into your buildout, which is a bit yucky to put it mildly.
> How about putting them where other eggs get put but only making them 
> available for the tests?
> Failing that, how about putting them somewhere temporary?

For distutils 2 / distribute I think the idea is something along the 
lines of:

There will be a Test-Requires-Dist (or equivalent) field for specifying 
test dependencies - still to be confirmed

distutils2 by default won't install any dependencies for you - so 
neither "setup.py install" nor "setup.py test" will install test 

distribute will install standard dependencies but not test dependencies 
by default

with distribute "setup.py test" will *not* install test dependencies - 
there will be a new parameter for install to tell it to fetch test 
dependencies (if necessary)

This is all still subject to discussion and really belongs on the 
distutils mailing list rather than here. It may be possible for 
"setup.py test" with distribute to have another parameter telling it to 
install test dependencies temporarily and then uninstall them afterwards...

All the best,


> Chris


READ CAREFULLY. By accepting and reading this email you agree, on behalf of your employer, to release me from all obligations and waivers arising from any and all NON-NEGOTIATED agreements, licenses, terms-of-service, shrinkwrap, clickwrap, browsewrap, confidentiality, non-disclosure, non-compete and acceptable use policies (”BOGUS AGREEMENTS”) that I have entered into with your employer, its partners, licensors, agents and assigns, in perpetuity, without prejudice to my ongoing rights and privileges. You further represent that you have the authority to release me from any BOGUS AGREEMENTS on behalf of your employer.

More information about the testing-in-python mailing list