[py-dev] setuptools

holger krekel holger at merlinux.eu
Mon Feb 1 17:30:21 CET 2010


Hi Joan,

On Mon, Feb 01, 2010 at 16:14 +0000, Joan Miller wrote:
> The ideal would be to pass a collector to the option 'test_suite' in
> setuptools, i.e. for nose [1] is used:
> 
>   test_suite = "nose.collector",
> 
> This way has been added too to Pip [2]. Here the info. about that option [3]

This expects a unittest loader which py.test doesn't provide (yet).  Your [2] also 
has some critical comments btw - and in general i think the current 
"test-during-setup/install-time" needs more thought.  I'd rather fancy a 
mechanism to run a script with some developer-defined arguments 
and to allow specification of "packages needed for testing". 

On a practical note, did you try out the solution i sketched?
It basically implements exactly that in few lines of code
with the current setuptools/distribute infrastructure. 

If anybody wants to chime in - feel free to :) 

holger

> 
> [1] http://somethingaboutorange.com/mrl/projects/nose/0.11.1/setuptools_integration.html
> [2] http://ericholscher.com/blog/2009/nov/5/adding-testing-pip/
> [3] http://peak.telecommunity.com/DevCenter/setuptools#test
> 
> 
> 2010/2/1 holger krekel <holger at merlinux.eu>:
> > On Mon, Feb 01, 2010 at 12:22 +0000, Joan Miller wrote:
> >> Are there plans for the integration with setuptools/distribute?
> >>
> >> So I would that py.test were run using *python setup.py py.test* or
> >> anything so, as is made with nosetools
> >
> > I've seen some discussions, haven't played much with it myself yet.
> > Googled a bit and came up with the below patch to one of my
> > (non-py) packages.  With it I could successfully do:
> >
> >    python setup.py test # will run "py.test"
> >
> > and it would also take care to temporarily install "py" just for the
> > testing and not as a general dependency.  Happy to hear if this works
> > for you and others as well.
> >
> > cheers,
> > holger
> >
> >
> > diff --git a/setup.py b/setup.py
> > --- a/setup.py
> > +++ b/setup.py
> > @@ -3,6 +3,7 @@ if sys.version_info >= (3,0):
> >     from distribute_setup import use_setuptools
> >     use_setuptools()
> >  from setuptools import setup
> > +from setuptools.command.test import test
> >
> >  long_description = """
> >  ciss: code-centered single-file "ISSUES.txt" issue tracking
> >         license='MIT license',
> >         platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],
> >         author='holger krekel',
> >         author_email='holger at merlinux.eu',
> > +        cmdclass = {'test': PyTest},
> > +        tests_require = ['py'],
> >         entry_points={'console_scripts': [
> >             'ciss = ciss:main',
> >         ]},
> > @@ -39,6 +42,15 @@ def main():
> >         zip_safe=False,
> >     )
> >
> > +class PyTest(test):
> > +    user_options = []
> > +    def initialize_options(self):
> > +        test.initialize_options(self)
> > +        self.test_suite = "."
> > +    def run_tests(self):
> > +        import py
> > +        py.cmdline.pytest(['.'])
> > +
> >  if __name__ == '__main__':
> >     main()
> >
> >
> 

-- 



More information about the Pytest-dev mailing list