Hello community, here is the log from the commit of package python-detox for openSUSE:Factory checked in at 2018-08-31 10:43:43 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-detox (Old) and /work/SRC/openSUSE:Factory/.python-detox.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-detox" Fri Aug 31 10:43:43 2018 rev:6 rq:631544 version:0.13 Changes: -------- --- /work/SRC/openSUSE:Factory/python-detox/python-detox.changes 2015-05-11 19:48:41.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.python-detox.new/python-detox.changes 2018-08-31 10:44:18.227192439 +0200 @@ -1,0 +2,15 @@ +Sat Aug 25 18:18:33 UTC 2018 - jeng...@inai.de + +- Use noun phrase in summary. + +------------------------------------------------------------------- +Thu Aug 23 10:03:05 UTC 2018 - tchva...@suse.com + +- Switch to singlespec +- Run tests +- Update to 0.13: + * get compatible again to tox-2.0 + * Add support for running detox as python -m detox + * use pytest for testing + +------------------------------------------------------------------- Old: ---- detox-0.9.4.tar.gz New: ---- detox-0.13.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-detox.spec ++++++ --- /var/tmp/diff_new_pack.4NZjVr/_old 2018-08-31 10:44:18.859193194 +0200 +++ /var/tmp/diff_new_pack.4NZjVr/_new 2018-08-31 10:44:18.863193199 +0200 @@ -1,7 +1,7 @@ # # spec file for package python-detox # -# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,31 +16,27 @@ # +%{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-detox -Version: 0.9.4 +Version: 0.13 Release: 0 -Summary: Distributing activities of the tox tool +Summary: Distributed variant of the tox tool License: MIT Group: Development/Languages/Python -Url: http://bitbucket.org/hpk42/detox -Source: https://pypi.python.org/packages/source/d/detox/detox-%{version}.tar.gz -BuildRequires: python-devel -BuildRequires: python-setuptools -# Test requirements: -BuildRequires: python-eventlet >= 0.15.0 -BuildRequires: python-nose -BuildRequires: python-py >= 1.4.13 -BuildRequires: python-pytest -BuildRequires: python-tox >= 1.9.0 +URL: http://bitbucket.org/hpk42/detox +Source: https://files.pythonhosted.org/packages/source/d/detox/detox-%{version}.tar.gz +BuildRequires: %{python_module eventlet >= 0.15.0} +BuildRequires: %{python_module py >= 1.4.27} +BuildRequires: %{python_module pytest} +BuildRequires: %{python_module setuptools} +BuildRequires: %{python_module tox >= 2} +BuildRequires: fdupes +BuildRequires: python-rpm-macros Requires: python-eventlet >= 0.15.0 -Requires: python-py >= 1.4.13 -Requires: python-tox >= 1.9.0 -BuildRoot: %{_tmppath}/%{name}-%{version}-build -%if 0%{?suse_version} && 0%{?suse_version} <= 1110 -%{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} -%else +Requires: python-py >= 1.4.2713 +Requires: python-tox >= 2 BuildArch: noarch -%endif +%python_subpackages %description detox is the distributed version of "tox". It makes efficient use of multiple @@ -56,18 +52,21 @@ %setup -q -n detox-%{version} %build -python setup.py build +%python_build %install -python setup.py install --prefix=%{_prefix} --root=%{buildroot} +%python_install +%python_expand %fdupes %{buildroot}%{$python_sitelib} -#%%check -#nosetests - -%files -%defattr(-,root,root,-) -%doc LICENSE CHANGELOG -%{_bindir}/detox +%check +export PATH="$PATH:%{buildroot}%{_bindir}" +# All 3 skipped tests just timeout in OBS +%python_expand PYTHONPATH=%{buildroot}%{$python_sitelib} py.test-%{$python_version} -k 'not (test_getvenv or test_test or test_runtests)' + +%files %{python_files} +%license LICENSE +%doc CHANGELOG +%python3_only %{_bindir}/detox %{python_sitelib}/* %changelog ++++++ detox-0.9.4.tar.gz -> detox-0.13.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/detox-0.9.4/CHANGELOG new/detox-0.13/CHANGELOG --- old/detox-0.9.4/CHANGELOG 2015-02-24 15:51:26.000000000 +0100 +++ new/detox-0.13/CHANGELOG 2018-08-20 17:51:42.000000000 +0200 @@ -1,3 +1,38 @@ +0.13.0 +----------------------- +- (fix `#283 <https://github.com/tox-dev/tox/issues/283>`_) detox creates virtualenvs + repeatedly and unnecessarily - by Thomas Steinke + +0.12.0 +----------------------- + +- (fix `#792 <https://github.com/tox-dev/tox/issues/792>`_) bump tox version constraint + to <4.0 - by Pi Delport +- support and test with Python 2.7, 3.4+ - by Miro Hrončok +- fix project url to point ot github - by Neil Halelamien +- remove some unused imports - by Nir Soffer + + +0.11.0 +----------------------- + +- #406: Add support for running detox as python -m detox + Thanks André Caron (@AndreLouisCaron). + +- (infrastructure) add Travis CI setup. + Thanks Timothée Mazzucotelli (@Pawamoy). + +- add "-n NUMPROC" option to set number of processes. The default + is the number of CPUs as determined by multiprocessing.cpu_count() + or "2" if the call does not work (e.g. on py27/windows). + Thanks Timothée Mazzucotelli (@Pawamoy). + + +0.10.0 +----------------------- + +- get compatible again to tox-2.0 + 0.9.4 ----------------------- @@ -30,7 +65,7 @@ 0.9.1 ----------------------- -- fix issue5 - small adjustments to work with latest tox-1.4.3 version +- fix issue5 - small adjustments to work with latest tox-1.4.3 version 0.9 ----------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/detox-0.9.4/MANIFEST.in new/detox-0.13/MANIFEST.in --- old/detox-0.9.4/MANIFEST.in 2015-02-24 15:51:26.000000000 +0100 +++ new/detox-0.13/MANIFEST.in 2018-04-20 13:34:23.000000000 +0200 @@ -3,3 +3,6 @@ include tox.ini include LICENSE graft tests + +global-exclude __pycache__ +global-exclude *.py[cod] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/detox-0.9.4/PKG-INFO new/detox-0.13/PKG-INFO --- old/detox-0.9.4/PKG-INFO 2015-02-24 15:51:27.000000000 +0100 +++ new/detox-0.13/PKG-INFO 2018-08-20 18:49:39.000000000 +0200 @@ -1,10 +1,10 @@ Metadata-Version: 1.1 Name: detox -Version: 0.9.4 -Summary: distributing activities of the tox tool (py2 only) -Home-page: http://bitbucket.org/hpk42/detox +Version: 0.13 +Summary: distributing activities of the tox tool +Home-page: https://github.com/tox-dev/detox Author: holger krekel -Author-email: holger at merlinux.eu +Author-email: hol...@merlinux.eu License: MIT Description: What is detox? @@ -19,16 +19,16 @@ in the same way and with the same options with which you would run ``tox``, see the `tox home page`_ for more info. - Please file issues as "tox" issues using the "detox" component: + Please file issues as "tox" issues using the "detox" label: - https://bitbucket.org/hpk42/tox/issues + https://github.com/tox-dev/tox/issues .. note:: - detox runs only on python2.6 and python2.7 (but supports creation of - python3 and all environments supported of the underlying "tox" command) + detox runs on python2.7 and python3.4+ (but supports creation of + all environments supported of the underlying "tox" command) - .. _`tox home page`: http://tox.testrun.org/ + .. _`tox home page`: http://tox.readthedocs.org Platform: unix Platform: linux @@ -36,11 +36,17 @@ Platform: cygwin Platform: win32 Classifier: Development Status :: 4 - Beta +Classifier: Framework :: tox Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: POSIX Classifier: Operating System :: Microsoft :: Windows Classifier: Operating System :: MacOS :: MacOS X +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 Classifier: Topic :: Software Development :: Testing Classifier: Topic :: Software Development :: Libraries Classifier: Topic :: Utilities diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/detox-0.9.4/README.md new/detox-0.13/README.md --- old/detox-0.9.4/README.md 1970-01-01 01:00:00.000000000 +0100 +++ new/detox-0.13/README.md 2018-04-14 14:47:13.000000000 +0200 @@ -0,0 +1,17 @@ +[![Build Status](https://travis-ci.org/tox-dev/detox.svg?branch=master)](https://travis-ci.org/tox-dev/detox) + +# What is detox? + +detox is the distributed version of [tox](https://pypi.org/project/tox/). It makes efficient use of multiple CPUs by running all possible activities in parallel. It has the same options and configuration that tox has so after installation can just run: + + detox + +in the same way and with the same options with which you would run `tox`, see the [tox home page](http://tox.readthedocs.io) for more info. + +Additionally, detox offers a `-n` or `--num` option to set the number of concurrent processes to use. + +Please file issues as ["tox" issues](https://github.com/tox-dev/tox/issues) using a "detox: " prefix in the issue title. + +## Note + +detox runs on python2.7 and python3.4+ (but supports creation of all environments supported of the underlying "tox" command) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/detox-0.9.4/detox/__init__.py new/detox-0.13/detox/__init__.py --- old/detox-0.9.4/detox/__init__.py 2015-02-24 15:51:26.000000000 +0100 +++ new/detox-0.13/detox/__init__.py 2018-04-20 12:17:11.000000000 +0200 @@ -1 +1 @@ -__version__ = '0.9.4' +__version__ = '0.12' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/detox-0.9.4/detox/__main__.py new/detox-0.13/detox/__main__.py --- old/detox-0.9.4/detox/__main__.py 1970-01-01 01:00:00.000000000 +0100 +++ new/detox-0.13/detox/__main__.py 2018-04-11 13:12:37.000000000 +0200 @@ -0,0 +1,5 @@ +from detox.main import main + +# Enable ``python -m detox ...``. +if __name__ == '__main__': + main() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/detox-0.9.4/detox/main.py new/detox-0.13/detox/main.py --- old/detox-0.9.4/detox/main.py 2015-02-24 15:51:26.000000000 +0100 +++ new/detox-0.13/detox/main.py 2018-08-20 17:51:42.000000000 +0200 @@ -1,12 +1,11 @@ import sys -import argparse import py import detox from detox.proc import Detox def parse(args): - import tox._config - return tox._config.parseconfig(args, "detox") + from tox.session import prepare + return prepare(args) def main(args=None): if args is None: @@ -21,4 +20,4 @@ #detox.toxsession.report.line( # "detox speed-up: %.2f (elapsed %.2f, cumulated %.2f)" % ( # cumulated / elapsed, elapsed, cumulated), bold=True) - return retcode + raise SystemExit(retcode) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/detox-0.9.4/detox/proc.py new/detox-0.13/detox/proc.py --- old/detox-0.9.4/detox/proc.py 2015-02-24 15:51:26.000000000 +0100 +++ new/detox-0.13/detox/proc.py 2018-08-20 17:51:42.000000000 +0200 @@ -1,14 +1,10 @@ from __future__ import with_statement import eventlet -import sys -import py from eventlet.timeout import Timeout from eventlet.green.subprocess import Popen, PIPE, STDOUT from eventlet import GreenPool -import eventlet -import tox._config -import tox._cmdline +import tox.session def timelimited(secs, func): if secs is not None: @@ -17,7 +13,7 @@ return func() class FileSpinner: - chars = "- \ | / - \ | /".split() + chars = r"- \ | / - \ | /".split() def __init__(self): self.path2last = {} @@ -33,7 +29,7 @@ return self.chars[charindex % len(self.chars)] -class ToxReporter(tox._cmdline.Reporter): +class ToxReporter(tox.session.Reporter): sortorder = ("runtests command installdeps installpkg inst inst-nodeps " "sdist-make create recreate".split()) @@ -112,12 +108,12 @@ try: return self._toxsession except AttributeError: - self._toxsession = tox._cmdline.Session( + self._toxsession = tox.session.Session( self._toxconfig, Report=ToxReporter, popen=Popen) return self._toxsession def provide_sdist(self): - sdistpath = self.toxsession.sdist() + sdistpath = self.toxsession.get_installpkg_path() if not sdistpath: raise SystemExit(1) return sdistpath @@ -138,6 +134,7 @@ if self.toxsession.config.skipsdist: venv, = self.getresources("venv:%s" % venvname) if venv: + venv.finish() self.toxsession.runtestenv(venv, redirect=True) else: venv, sdist = self.getresources("venv:%s" % venvname, "sdist") @@ -147,7 +144,7 @@ self.toxsession.runtestenv(venv, redirect=True) def runtestsmulti(self, envlist): - pool = GreenPool() + pool = GreenPool(size=self._toxconfig.option.numproc) for env in envlist: pool.spawn_n(self.runtests, env) pool.waitall() @@ -162,7 +159,7 @@ def __init__(self, providerbase): self._providerbase = providerbase self._spec2thread = {} - self._pool = GreenPool(1000) + self._pool = GreenPool() self._resources = {} def _dispatchprovider(self, spec): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/detox-0.9.4/detox/tox_proclimit.py new/detox-0.13/detox/tox_proclimit.py --- old/detox-0.9.4/detox/tox_proclimit.py 1970-01-01 01:00:00.000000000 +0100 +++ new/detox-0.13/detox/tox_proclimit.py 2018-04-16 13:10:08.000000000 +0200 @@ -0,0 +1,27 @@ +import argparse +import multiprocessing + +from tox import hookimpl + + +@hookimpl +def tox_addoption(parser): + def positive_integer(value): + ivalue = int(value) + if ivalue <= 0: + raise argparse.ArgumentTypeError( + "%s is an invalid positive int value" % value) + return ivalue + + try: + num_proc = multiprocessing.cpu_count() + except Exception: + num_proc = 2 + parser.add_argument( + "-n", "--num", + type=positive_integer, + action="store", + default=num_proc, + dest="numproc", + help="set the number of concurrent processes " + "(default %s)." % num_proc) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/detox-0.9.4/detox.egg-info/PKG-INFO new/detox-0.13/detox.egg-info/PKG-INFO --- old/detox-0.9.4/detox.egg-info/PKG-INFO 2015-02-24 15:51:27.000000000 +0100 +++ new/detox-0.13/detox.egg-info/PKG-INFO 2018-08-20 18:49:39.000000000 +0200 @@ -1,10 +1,10 @@ Metadata-Version: 1.1 Name: detox -Version: 0.9.4 -Summary: distributing activities of the tox tool (py2 only) -Home-page: http://bitbucket.org/hpk42/detox +Version: 0.13 +Summary: distributing activities of the tox tool +Home-page: https://github.com/tox-dev/detox Author: holger krekel -Author-email: holger at merlinux.eu +Author-email: hol...@merlinux.eu License: MIT Description: What is detox? @@ -19,16 +19,16 @@ in the same way and with the same options with which you would run ``tox``, see the `tox home page`_ for more info. - Please file issues as "tox" issues using the "detox" component: + Please file issues as "tox" issues using the "detox" label: - https://bitbucket.org/hpk42/tox/issues + https://github.com/tox-dev/tox/issues .. note:: - detox runs only on python2.6 and python2.7 (but supports creation of - python3 and all environments supported of the underlying "tox" command) + detox runs on python2.7 and python3.4+ (but supports creation of + all environments supported of the underlying "tox" command) - .. _`tox home page`: http://tox.testrun.org/ + .. _`tox home page`: http://tox.readthedocs.org Platform: unix Platform: linux @@ -36,11 +36,17 @@ Platform: cygwin Platform: win32 Classifier: Development Status :: 4 - Beta +Classifier: Framework :: tox Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: POSIX Classifier: Operating System :: Microsoft :: Windows Classifier: Operating System :: MacOS :: MacOS X +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 Classifier: Topic :: Software Development :: Testing Classifier: Topic :: Software Development :: Libraries Classifier: Topic :: Utilities diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/detox-0.9.4/detox.egg-info/SOURCES.txt new/detox-0.13/detox.egg-info/SOURCES.txt --- old/detox-0.9.4/detox.egg-info/SOURCES.txt 2015-02-24 15:51:27.000000000 +0100 +++ new/detox-0.13/detox.egg-info/SOURCES.txt 2018-08-20 18:49:39.000000000 +0200 @@ -1,11 +1,15 @@ CHANGELOG LICENSE MANIFEST.in +README.md +setup.cfg setup.py tox.ini detox/__init__.py +detox/__main__.py detox/main.py detox/proc.py +detox/tox_proclimit.py detox.egg-info/PKG-INFO detox.egg-info/SOURCES.txt detox.egg-info/dependency_links.txt @@ -13,4 +17,5 @@ detox.egg-info/requires.txt detox.egg-info/top_level.txt tests/conftest.py -tests/test_detox.py \ No newline at end of file +tests/test_detox.py +tests/test_main.py \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/detox-0.9.4/detox.egg-info/entry_points.txt new/detox-0.13/detox.egg-info/entry_points.txt --- old/detox-0.9.4/detox.egg-info/entry_points.txt 2015-02-24 15:51:27.000000000 +0100 +++ new/detox-0.13/detox.egg-info/entry_points.txt 2018-08-20 18:49:39.000000000 +0200 @@ -1,3 +1,6 @@ [console_scripts] detox=detox.main:main +[tox] +proclimit = detox.tox_proclimit + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/detox-0.9.4/detox.egg-info/requires.txt new/detox-0.13/detox.egg-info/requires.txt --- old/detox-0.9.4/detox.egg-info/requires.txt 2015-02-24 15:51:27.000000000 +0100 +++ new/detox-0.13/detox.egg-info/requires.txt 2018-08-20 18:49:39.000000000 +0200 @@ -1,3 +1,3 @@ -tox>=1.9.0 -py>=1.4.13 +tox<4,>=2 +py>=1.4.27 eventlet>=0.15.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/detox-0.9.4/setup.cfg new/detox-0.13/setup.cfg --- old/detox-0.9.4/setup.cfg 2015-02-24 15:51:27.000000000 +0100 +++ new/detox-0.13/setup.cfg 2018-08-20 18:49:39.000000000 +0200 @@ -1,5 +1,10 @@ +[bdist_wheel] +universal = 1 + +[devpi:upload] +formats = sdist.tgz,bdist_wheel + [egg_info] tag_build = tag_date = 0 -tag_svn_revision = 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/detox-0.9.4/setup.py new/detox-0.13/setup.py --- old/detox-0.9.4/setup.py 2015-02-24 15:51:26.000000000 +0100 +++ new/detox-0.13/setup.py 2018-08-20 18:47:59.000000000 +0200 @@ -1,8 +1,6 @@ -import os, sys - from setuptools import setup -long_description=""" +long_description = """ What is detox? ========================== @@ -15,45 +13,53 @@ in the same way and with the same options with which you would run ``tox``, see the `tox home page`_ for more info. -Please file issues as "tox" issues using the "detox" component: +Please file issues as "tox" issues using the "detox" label: - https://bitbucket.org/hpk42/tox/issues + https://github.com/tox-dev/tox/issues .. note:: - detox runs only on python2.6 and python2.7 (but supports creation of - python3 and all environments supported of the underlying "tox" command) + detox runs on python2.7 and python3.4+ (but supports creation of + all environments supported of the underlying "tox" command) -.. _`tox home page`: http://tox.testrun.org/ +.. _`tox home page`: http://tox.readthedocs.org """ + def main(): setup( name='detox', - description='distributing activities of the tox tool (py2 only)', - long_description = long_description, - version='0.9.4', - url='http://bitbucket.org/hpk42/detox', + description='distributing activities of the tox tool', + long_description=long_description, + version='0.13', + url='https://github.com/tox-dev/detox', license='MIT', platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'], author='holger krekel', - author_email='holger at merlinux.eu', + author_email='hol...@merlinux.eu', classifiers=['Development Status :: 4 - Beta', + 'Framework :: tox', 'Intended Audience :: Developers', 'License :: OSI Approved :: MIT License', 'Operating System :: POSIX', 'Operating System :: Microsoft :: Windows', 'Operating System :: MacOS :: MacOS X', + 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: 3.4', + 'Programming Language :: Python :: 3.5', + 'Programming Language :: Python :: 3.6', + 'Programming Language :: Python :: 3.7', 'Topic :: Software Development :: Testing', 'Topic :: Software Development :: Libraries', 'Topic :: Utilities', 'Programming Language :: Python', ], packages=['detox', ], - install_requires=['tox>=1.9.0', - 'py>=1.4.13', 'eventlet>=0.15.0',], - entry_points={'console_scripts': 'detox=detox.main:main'}, + install_requires=['tox>=2,<4', 'py>=1.4.27', 'eventlet>=0.15.0'], + entry_points={'console_scripts': 'detox=detox.main:main', + 'tox': ['proclimit = detox.tox_proclimit']}, ) + if __name__ == '__main__': main() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/detox-0.9.4/tests/conftest.py new/detox-0.13/tests/conftest.py --- old/detox-0.9.4/tests/conftest.py 2015-02-24 15:51:26.000000000 +0100 +++ new/detox-0.13/tests/conftest.py 2018-08-20 18:32:26.000000000 +0200 @@ -44,6 +44,20 @@ tmpdir.join("example2", "__init__.py").ensure() +def create_example3(tmpdir): + tmpdir.join("tox.ini").write(d(""" + [tox] + skipsdist = True + + [testenv] + commands = python -c 'import time; time.sleep(1)' + + [testenv:py1] + [testenv:py2] + """)) + tmpdir.join("example3", "__init__.py").ensure() + + def pytest_configure(config): config.addinivalue_line("markers", "example1: use example1 for setup") config.addinivalue_line("markers", "example2: use example2 for setup") @@ -151,4 +165,3 @@ result = testdir.runpytest() assert "failed to timeout" not in result.stdout.str() result.stdout.fnmatch_lines(["*Timeout: 0.01*"]) - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/detox-0.9.4/tests/test_detox.py new/detox-0.13/tests/test_detox.py --- old/detox-0.9.4/tests/test_detox.py 2015-02-24 15:51:26.000000000 +0100 +++ new/detox-0.13/tests/test_detox.py 2018-04-11 13:12:37.000000000 +0200 @@ -1,3 +1,5 @@ +from datetime import datetime, timedelta + import pytest import eventlet import detox @@ -86,3 +88,47 @@ "py*getenv*", "py*create:*", ]) + + +class TestProcLimitOption: + pytestmark = [pytest.mark.example3] + + def test_runtestmulti(self): + class MyConfig: + class MyOption: + numproc = 7 + option = MyOption() + + l = [] + + def MyGreenPool(**kw): + l.append(kw) + # Building a Detox object will already call GreenPool(), + # so we have to let MyGreenPool being called twice before raise + if len(l) == 2: + raise ValueError + + from detox import proc + setattr(proc, 'GreenPool', MyGreenPool) + with pytest.raises(ValueError): + d = proc.Detox(MyConfig()) + d.runtestsmulti(['env1', 'env2', 'env3']) # Fake env list + + assert l[0] == {} # When building Detox object + assert l[1] == {'size': 7} # When calling runtestsmulti + + @pytest.mark.timeout(60) + def test_runtests(self, cmd): + now1 = datetime.now() + cmd.rundetox("-n", "1", "-epy1,py2") + then1 = datetime.now() + delta1 = then1 - now1 + assert delta1 >= timedelta(seconds=2) + + now2 = datetime.now() + cmd.rundetox("--num", "2", "-epy1,py2") + then2 = datetime.now() + delta2 = then2 - now2 + assert delta2 >= timedelta(seconds=1) + + assert delta1 >= delta2, 'pool size=2 took much time than pool size=1' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/detox-0.9.4/tests/test_main.py new/detox-0.13/tests/test_main.py --- old/detox-0.9.4/tests/test_main.py 1970-01-01 01:00:00.000000000 +0100 +++ new/detox-0.13/tests/test_main.py 2018-04-11 13:12:37.000000000 +0200 @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- + + +import subprocess +import sys + + +def invoke(command, success_codes=(0,)): + try: + output = subprocess.check_output(command, stderr=subprocess.STDOUT) + status = 0 + except subprocess.CalledProcessError as error: + output = error.output + status = error.returncode + output = output.decode('utf-8') + if status not in success_codes: + raise Exception( + 'Command %r return exit code %d and output: """%s""".' % ( + command, + status, + output, + ) + ) + return status, output + + +def test_run_as_module(): + """Can be run as `python -m detox ...`.""" + status, output = invoke([ + sys.executable, '-m', 'detox', '--help', + ]) + assert status == 0 + assert output.startswith('usage:') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/detox-0.9.4/tox.ini new/detox-0.13/tox.ini --- old/detox-0.9.4/tox.ini 2015-02-24 15:51:26.000000000 +0100 +++ new/detox-0.13/tox.ini 2018-04-20 15:51:25.000000000 +0200 @@ -1,8 +1,8 @@ [tox] -envlist=py26,py27 +envlist = py27,py34,py35,py36,py37 [testenv] -commands=py.test --junitxml={envlogdir}/junit-{envname}.xml {posargs} -deps= +deps = pytest tox +commands = pytest --junitxml={envlogdir}/junit-{envname}.xml {posargs}