[Zope-dev] RFC: adding support for testing from bare setuptools

Marius Gedminas marius at gedmin.as
Wed Sep 17 14:47:47 EDT 2008


On Wed, Sep 17, 2008 at 12:52:49PM -0400, Tres Seaver wrote:
> Proposal
> --------
> 
> Instead, what I *am* proposing is adding metadata which allows consumers
> of such packages to verify that the package is downloaded / installed
> correctly.  In particular, I want for the following scenario to work
> seamlessly::
> 
>  $ /path/to/virtualenv --no-site-packges sandbox
>  ...
>  $ cd sandbox
>  $ tar xzf zope.foo.bar-3.5.6.tar.gz
>  $ cd zope.foo.bar-3.5.6           # [1]
> 
>  $ ../bin/python setup.py test     # [2]
>  # Runs egg_info, installs regular and testing dependencies, and
>  # runs all unit (non-layer) tests

I don't like the idea that running the tests installs additional
packages into my environment without me explicitly asking for it.

>  $ ../bin/python setup.py test    # [3]
>  # Runs egg_info, installs regular and t

This is truncated.

>  # runs *all* tests

...
> [3] In the second method, we use the setuptools entry point mechanism to
> register a custom 'test' command[5].  This is a wee bit fragile, as
> running 'setup.py test' without first generating the egg_info will use
> the "standard" testrunner (but only the first time).  If such fragility
> is an issue, we can register a separate command, e.g. 'ftest';  in
> either case, we have to document that you need to run 'setup.py
> egg_info' one time before running the custom command.

(The more I learn about setuptools, the less I like them.)

> If the ideal
> installation outlined in [1] above worked, that would solve the problem,
> too, because the egg-info would be generated by easy_install.
> 
> This techniquie drives the zope.testing.testrunner via an entry point,
> which is cool, but it cannot expose all of testrunner's features.
> In particular, the configuration knobs which the testrunner expects to
> get on the command-line clash with distutils' own command-line syntax
> (yes, I've tried to make it work).  The command I have provided just
> runs all the tests, unit and functional, which seems to be reasonable
> assurance for the package conumer that the package installed cleanly.

*nod*

> Implementation
> --------------
> 
> The intent is to add the attached module as
> 'zope.testing.testrunner.eggsupport',

At this point I'm wondering whether we shouldn't split out the
testrunner into a separate zope.testrunner package.

> and then to modify our packages
> (opportunistically, or through a 'geddon) as follows:
...
> The second attachment is a diff showing the changes to a typical Zope2
> product's setup.py to support this proposal.

I'm +0.5 for the idea, although the amount of ritual dancing in the
setup.py seems a bit excessive.

Marius Gedminas
-- 
99 little bugs in the code,
99 bugs in the code,
fix one bug, compile it again...
101 little bugs in the code....
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://mail.zope.org/pipermail/zope-dev/attachments/20080917/584f6686/attachment.bin 


More information about the Zope-Dev mailing list