Hello community, here is the log from the commit of package python-tox for openSUSE:Factory checked in at 2020-03-27 00:27:47 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-tox (Old) and /work/SRC/openSUSE:Factory/.python-tox.new.3160 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-tox" Fri Mar 27 00:27:47 2020 rev:32 rq:786809 version:3.14.5 Changes: -------- --- /work/SRC/openSUSE:Factory/python-tox/python-tox.changes 2020-02-15 22:23:32.135248583 +0100 +++ /work/SRC/openSUSE:Factory/.python-tox.new.3160/python-tox.changes 2020-03-27 00:27:49.960333857 +0100 @@ -1,0 +2,18 @@ +Fri Mar 20 10:30:48 UTC 2020 - Tomáš Chvátal <tchva...@suse.com> + +- Disable spinner tests as the monkeypatch changed behaviour in pytest + +------------------------------------------------------------------- +Wed Mar 11 10:28:56 UTC 2020 - pgaj...@suse.com + +- version update to 3.14.5 + - Add ``--discover`` (fallback to ``TOX_DISCOVER`` environment variable via path separator) to inject python executables + to try as first step of a discovery - note the executable still needs to match the environment by :user:`gaborbernat`. + `#1526 <https://github.com/tox-dev/tox/issues/1526>`_ + - Bump minimal six version needed to avoid using one incompatible with newer + virtualenv. - by :user:`ssbarnea` + `#1519 <https://github.com/tox-dev/tox/issues/1519>`_ + - Avoid pypy test failure due to undefined printout var. - by :user:`ssbarnea` + `#1521 <https://github.com/tox-dev/tox/issues/1521>`_ + +------------------------------------------------------------------- Old: ---- tox-3.14.3.tar.gz New: ---- tox-3.14.5.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-tox.spec ++++++ --- /var/tmp/diff_new_pack.7bNIML/_old 2020-03-27 00:27:52.184334984 +0100 +++ /var/tmp/diff_new_pack.7bNIML/_new 2020-03-27 00:27:52.188334986 +0100 @@ -17,12 +17,12 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} +%bcond_without python2 Name: python-tox -Version: 3.14.3 +Version: 3.14.5 Release: 0 Summary: Virtualenv-based automation of test activities License: MIT -Group: Development/Languages/Python URL: https://github.com/tox-dev/tox Source: https://files.pythonhosted.org/packages/source/t/tox/tox-%{version}.tar.gz BuildRequires: %{python_module filelock} @@ -39,11 +39,14 @@ BuildRequires: %{python_module pytest-xdist >= 1.22.2} BuildRequires: %{python_module setuptools >= 41.0.1} BuildRequires: %{python_module setuptools_scm >= 2.0.0} -BuildRequires: %{python_module six >= 1.0.0} +BuildRequires: %{python_module six >= 1.14.0} BuildRequires: %{python_module toml} BuildRequires: %{python_module virtualenv >= 16.0.0} BuildRequires: %{python_module wheel >= 0.29.0} BuildRequires: fdupes +# we need python2 interpreter in tests for venv calls checks +# even on python3 variant +BuildRequires: python-base BuildRequires: python-rpm-macros BuildRequires: unzip Requires: python-filelock @@ -52,7 +55,7 @@ Requires: python-pluggy >= 0.12.0 Requires: python-py >= 1.4.17 Requires: python-setuptools >= 30.0.0 -Requires: python-six >= 1.0.0 +Requires: python-six >= 1.14.0 Requires: python-toml >= 0.9.4 Requires: python-virtualenv >= 16.0.0 Requires(post): update-alternatives @@ -80,7 +83,6 @@ %package -n %{name}-doc Summary: Documentation for tox, a virtualenv-based test automation -Group: Development/Languages/Python Recommends: %{python_module tox = %{version}} Provides: %{python_module tox-doc = %{version}} @@ -121,7 +123,10 @@ export PYTHONDONTWRITEBYTECODE=1 export PATH=%{buildroot}%{_bindir}:$PATH # Ignores for gh#tox-dev/tox#1293 -%pytest -k 'not (network or parallel or test_provision_missing or test_provision_interrupt_child or test_workdir_gets_resolved or test_provision_cli_args_ignore or test_provision_non_canonical_dep or test_create_KeyboardInterrupt or test_provision_from_pyvenv)' +# test_dist_exists_version_change test_verbose_isolated_build: need python2* deps even on python3 +# test_spinner_stdout_not_unicode breaks with changes in monkeypatch in pytest +rm tests/unit/util/test_spinner.py +%pytest -k 'not (network or parallel or test_provision_missing or test_provision_interrupt_child or test_workdir_gets_resolved or test_provision_cli_args_ignore or test_provision_non_canonical_dep or test_create_KeyboardInterrupt or test_provision_from_pyvenv or test_verbose_isolated_build or test_dist_exists_version_change)' %post %python_install_alternative tox tox-quickstart ++++++ tox-3.14.3.tar.gz -> tox-3.14.5.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.3/CONTRIBUTORS new/tox-3.14.5/CONTRIBUTORS --- old/tox-3.14.3/CONTRIBUTORS 2019-12-28 11:58:14.000000000 +0100 +++ new/tox-3.14.5/CONTRIBUTORS 2020-02-17 01:21:11.000000000 +0100 @@ -57,6 +57,7 @@ Matt Good Matt Jeffery Mattieu Agopian +Mehdi Abaakouk Michael Manganiello Mickaël Schoentgen Mikhail Kyshtymov @@ -67,6 +68,7 @@ Nick Prendergast Oliver Bestwalter Pablo Galindo +Paul Moore Paweł Adamczak Philip Thiem Pierre-Jean Campigotto diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.3/PKG-INFO new/tox-3.14.5/PKG-INFO --- old/tox-3.14.3/PKG-INFO 2019-12-28 11:58:34.418653000 +0100 +++ new/tox-3.14.5/PKG-INFO 2020-02-17 01:21:23.831395600 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: tox -Version: 3.14.3 +Version: 3.14.5 Summary: tox is a generic virtualenv management and test command line tool Home-page: http://tox.readthedocs.org Author: Holger Krekel, Oliver Bestwalter, Bernát Gábor and others @@ -152,10 +152,10 @@ Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 -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: Programming Language :: Python :: 3.8 Requires-Python: !=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7 Description-Content-Type: text/markdown Provides-Extra: testing diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.3/azure-pipelines.yml new/tox-3.14.5/azure-pipelines.yml --- old/tox-3.14.3/azure-pipelines.yml 2019-12-28 11:58:14.000000000 +0100 +++ new/tox-3.14.5/azure-pipelines.yml 2020-02-17 01:21:11.000000000 +0100 @@ -55,7 +55,12 @@ coverage: with_toxenv: 'coverage' # generate .tox/.coverage, .tox/coverage.xml after test run for_envs: [py38, py37, py36, py35, py27, pypy3, pypy] - + before: + - task: UsePythonVersion@0 + condition: and(succeeded(), in(variables['TOXENV'], 'pypy')) + displayName: provision pypy 3 + inputs: + versionSpec: 'pypy3' - ${{ if startsWith(variables['Build.SourceBranch'], 'refs/tags/') }}: - template: publish-pypi.yml@tox parameters: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.3/docs/changelog.rst new/tox-3.14.5/docs/changelog.rst --- old/tox-3.14.3/docs/changelog.rst 2019-12-28 11:58:14.000000000 +0100 +++ new/tox-3.14.5/docs/changelog.rst 2020-02-17 01:21:11.000000000 +0100 @@ -11,6 +11,39 @@ .. towncrier release notes start +v3.14.5 (2020-02-16) +-------------------- + +Features +^^^^^^^^ + +- Add ``--discover`` (fallback to ``TOX_DISCOVER`` environment variable via path separator) to inject python executables + to try as first step of a discovery - note the executable still needs to match the environment by :user:`gaborbernat`. + `#1526 <https://github.com/tox-dev/tox/issues/1526>`_ + + +v3.14.4 (2020-02-13) +-------------------- + +Bugfixes +^^^^^^^^ + +- Bump minimal six version needed to avoid using one incompatible with newer + virtualenv. - by :user:`ssbarnea` + `#1519 <https://github.com/tox-dev/tox/issues/1519>`_ +- Avoid pypy test failure due to undefined printout var. - by :user:`ssbarnea` + `#1521 <https://github.com/tox-dev/tox/issues/1521>`_ + + +Features +^^^^^^^^ + +- Add ``interrupt_timeout`` and ``terminate_timeout`` that configure delay between SIGINT, SIGTERM and SIGKILL when tox is interrupted. - by :user:`sileht` + `#1493 <https://github.com/tox-dev/tox/issues/1493>`_ +- Add ``HTTP_PROXY``, ``HTTPS_PROXY`` and ``NO_PROXY`` to default passenv. - by :user:`pfmoore` + `#1498 <https://github.com/tox-dev/tox/issues/1498>`_ + + v3.14.3 (2019-12-27) -------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.3/docs/config.rst new/tox-3.14.5/docs/config.rst --- old/tox-3.14.3/docs/config.rst 2019-12-28 11:58:14.000000000 +0100 +++ new/tox-3.14.5/docs/config.rst 2020-02-17 01:21:11.000000000 +0100 @@ -160,6 +160,21 @@ Name of the virtual environment used to create a source distribution from the source tree. +.. conf:: interrupt_timeout ^ float ^ 0.3 + + .. versionadded:: 3.15.0 + + When tox is interrupted, it propagates the signal to the child process, + waits :conf:``interrupt_timeout`` seconds, and sends it a SIGTERM if it hasn't + exited. + +.. conf:: terminate_timeout ^ float ^ 0.2 + + .. versionadded:: 3.15.0 + + When tox is interrupted, it propagates the signal to the child process, + waits :conf:``interrupt_timeout`` seconds, sends it a SIGTERM, waits + :conf:``terminate_timeout`` seconds, and sends it a SIGKILL if it hasn't exited. Jenkins override ++++++++++++++++ @@ -385,10 +400,11 @@ Some variables are always passed through to ensure the basic functionality of standard library functions or tooling like pip: - * passed through on all platforms: ``CURL_CA_BUNDLE`, ``PATH``, + * passed through on all platforms: ``CURL_CA_BUNDLE``, ``PATH``, ``LANG``, ``LANGUAGE``, ``LD_LIBRARY_PATH``, ``PIP_INDEX_URL``, - ``REQUESTS_CA_BUNDLE``, ``SSL_CERT_FILE`` + ``REQUESTS_CA_BUNDLE``, ``SSL_CERT_FILE``, + ``HTTP_PROXY``, ``HTTPS_PROXY``, ``NO_PROXY`` * Windows: ``SYSTEMDRIVE``, ``SYSTEMROOT``, ``PATHEXT``, ``TEMP``, ``TMP`` ``NUMBER_OF_PROCESSORS``, ``USERPROFILE``, ``MSYSTEM`` * Others (e.g. UNIX, macOS): ``TMPDIR`` @@ -445,6 +461,13 @@ This is useful for situations where hardlinks don't work (e.g. running in VMS with Windows guests). +.. conf:: download ^ true|false ^ false + + .. versionadded:: 3.10 + + Set to ``true`` if you want virtualenv to upgrade pip/wheel/setuptools to + the latest version. + .. conf:: args_are_paths ^ true|false ^ false Treat positional arguments passed to ``tox`` as file system paths diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.3/docs/example/jenkins.rst new/tox-3.14.5/docs/example/jenkins.rst --- old/tox-3.14.3/docs/example/jenkins.rst 2019-12-28 11:58:14.000000000 +0100 +++ new/tox-3.14.5/docs/example/jenkins.rst 2020-02-17 01:21:11.000000000 +0100 @@ -98,14 +98,13 @@ # change to ``doc`` dir if that is where your sphinx-docs live changedir = doc deps = sphinx - py + pytest commands = pytest --tb=line -v --junitxml=junit-{envname}.xml check_sphinx.py 2. create a ``doc/check_sphinx.py`` file like this: .. code-block:: python - import py import subprocess diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.3/setup.cfg new/tox-3.14.5/setup.cfg --- old/tox-3.14.3/setup.cfg 2019-12-28 11:58:34.418653000 +0100 +++ new/tox-3.14.5/setup.cfg 2020-02-17 01:21:23.831395600 +0100 @@ -28,10 +28,10 @@ Programming Language :: Python :: 2 Programming Language :: Python :: 2.7 Programming Language :: Python :: 3 - Programming Language :: Python :: 3.4 Programming Language :: Python :: 3.5 Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 + Programming Language :: Python :: 3.8 [options] packages = find: @@ -41,7 +41,7 @@ packaging >= 14 pluggy >= 0.12.0, <1 py >= 1.4.17, <2 - six >= 1.0.0, <2 + six >= 1.14.0, <2 # required when virtualenv>=20 virtualenv >= 16.0.0 toml >=0.9.4 filelock >= 3.0.0, <4 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.3/src/tox/action.py new/tox-3.14.5/src/tox/action.py --- old/tox-3.14.3/src/tox/action.py 2019-12-28 11:58:14.000000000 +0100 +++ new/tox-3.14.5/src/tox/action.py 2020-02-17 01:21:11.000000000 +0100 @@ -18,14 +18,23 @@ from tox.util.lock import get_unique_file from tox.util.stdlib import is_main_thread -WAIT_INTERRUPT = 0.3 -WAIT_TERMINATE = 0.2 - class Action(object): """Action is an effort to group operations with the same goal (within reporting)""" - def __init__(self, name, msg, args, log_dir, generate_tox_log, command_log, popen, python): + def __init__( + self, + name, + msg, + args, + log_dir, + generate_tox_log, + command_log, + popen, + python, + interrupt_timeout, + terminate_timeout, + ): self.name = name self.args = args self.msg = msg @@ -36,6 +45,8 @@ self.command_log = command_log self._timed_report = None self.python = python + self.interrupt_timeout = interrupt_timeout + self.terminate_timeout = terminate_timeout def __enter__(self): msg = "{} {}".format(self.msg, " ".join(map(str, self.args))) @@ -180,10 +191,10 @@ if process.poll() is None: self.info("KeyboardInterrupt", msg.format("SIGINT")) process.send_signal(signal.CTRL_C_EVENT if sys.platform == "win32" else signal.SIGINT) - if self._wait(process, WAIT_INTERRUPT) is None: + if self._wait(process, self.interrupt_timeout) is None: self.info("KeyboardInterrupt", msg.format("SIGTERM")) process.terminate() - if self._wait(process, WAIT_TERMINATE) is None: + if self._wait(process, self.terminate_timeout) is None: self.info("KeyboardInterrupt", msg.format("SIGKILL")) process.kill() process.communicate() @@ -193,7 +204,7 @@ if sys.version_info >= (3, 3): # python 3 has timeout feature built-in try: - process.communicate(timeout=WAIT_INTERRUPT) + process.communicate(timeout=timeout) except subprocess.TimeoutExpired: pass else: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.3/src/tox/config/__init__.py new/tox-3.14.5/src/tox/config/__init__.py --- old/tox-3.14.3/src/tox/config/__init__.py 2019-12-28 11:58:14.000000000 +0100 +++ new/tox-3.14.5/src/tox/config/__init__.py 2020-02-17 01:21:11.000000000 +0100 @@ -54,6 +54,9 @@ WITHIN_PROVISION = os.environ.get(str("TOX_PROVISION")) == "1" +INTERRUPT_TIMEOUT = 0.3 +TERMINATE_TIMEOUT = 0.2 + def get_plugin_manager(plugins=()): # initialize plugin manager @@ -472,6 +475,14 @@ help="write a json file with detailed information " "about all commands and results involved.", ) + parser.add_argument( + "--discover", + dest="discover", + nargs="+", + metavar="PATH", + help="for python discovery first try the python executables under these paths", + default=[], + ) # We choose 1 to 4294967295 because it is the range of PYTHONHASHSEED. parser.add_argument( @@ -673,6 +684,9 @@ "REQUESTS_CA_BUNDLE", "SSL_CERT_FILE", "TOX_WORK_DIR", + "HTTP_PROXY", + "HTTPS_PROXY", + "NO_PROXY", str(REPORTER_TIMESTAMP_ON_ENV), str(PARALLEL_ENV_VAR_KEY_PUBLIC), } @@ -799,6 +813,20 @@ parser.add_testenv_attribute_obj(DepOption()) parser.add_testenv_attribute( + name="interrupt_timeout", + type="float", + default=INTERRUPT_TIMEOUT, + help="timeout before sending SIGTERM after SIGINT", + ) + + parser.add_testenv_attribute( + name="terminate_timeout", + type="float", + default=TERMINATE_TIMEOUT, + help="timeout before sending SIGKILL after SIGTERM", + ) + + parser.add_testenv_attribute( name="commands", type="argvlist", default="", @@ -1231,7 +1259,16 @@ for env_attr in config._testenv_attr: atype = env_attr.type try: - if atype in ("bool", "path", "string", "dict", "dict_setenv", "argv", "argvlist"): + if atype in ( + "bool", + "float", + "path", + "string", + "dict", + "dict_setenv", + "argv", + "argvlist", + ): meth = getattr(reader, "get{}".format(atype)) res = meth(env_attr.name, env_attr.default, replace=replace) elif atype == "basepython": @@ -1448,6 +1485,20 @@ return d + def getfloat(self, name, default=None, replace=True): + s = self.getstring(name, default, replace=replace) + if not s or not replace: + s = default + if s is None: + raise KeyError("no config value [{}] {} found".format(self.section_name, name)) + + if not isinstance(s, float): + try: + s = float(s) + except ValueError: + raise tox.exception.ConfigError("{}: invalid float {!r}".format(name, s)) + return s + def getbool(self, name, default=None, replace=True): s = self.getstring(name, default, replace=replace) if not s or not replace: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.3/src/tox/interpreters/common.py new/tox-3.14.5/src/tox/interpreters/common.py --- old/tox-3.14.3/src/tox/interpreters/common.py 1970-01-01 01:00:00.000000000 +0100 +++ new/tox-3.14.5/src/tox/interpreters/common.py 2020-02-17 01:21:11.000000000 +0100 @@ -0,0 +1,25 @@ +import os + +from tox.interpreters.py_spec import CURRENT, PythonSpec +from tox.interpreters.via_path import exe_spec + + +def base_discover(envconfig): + base_python = envconfig.basepython + spec = PythonSpec.from_name(base_python) + + # 1. check passed in discover elements + discovers = envconfig.config.option.discover + if not discovers: + discovers = os.environ.get(str("TOX_DISCOVER"), "").split(os.pathsep) + for discover in discovers: + if os.path.exists(discover): + cur_spec = exe_spec(discover, envconfig.basepython) + if cur_spec is not None and cur_spec.satisfies(spec): + return spec, cur_spec.path + + # 2. check current + if spec.name is not None and CURRENT.satisfies(spec): + return spec, CURRENT.path + + return spec, None diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.3/src/tox/interpreters/unix.py new/tox-3.14.5/src/tox/interpreters/unix.py --- old/tox-3.14.3/src/tox/interpreters/unix.py 2019-12-28 11:58:14.000000000 +0100 +++ new/tox-3.14.5/src/tox/interpreters/unix.py 2020-02-17 01:21:11.000000000 +0100 @@ -2,20 +2,18 @@ import tox -from .py_spec import CURRENT, PythonSpec +from .common import base_discover from .via_path import check_with_path @tox.hookimpl def tox_get_python_executable(envconfig): - base_python = envconfig.basepython - spec = PythonSpec.from_name(base_python) - # first, check current - if spec.name is not None and CURRENT.satisfies(spec): - return CURRENT.path - # second check if the literal base python - candidates = [base_python] - # third check if the un-versioned name is good - if spec.name is not None and spec.name != base_python: + spec, path = base_discover(envconfig) + if path is not None: + return path + # 3. check if the literal base python + candidates = [envconfig.basepython] + # 4. check if the un-versioned name is good + if spec.name is not None and spec.name != envconfig.basepython: candidates.append(spec.name) return check_with_path(candidates, spec) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.3/src/tox/interpreters/windows/__init__.py new/tox-3.14.5/src/tox/interpreters/windows/__init__.py --- old/tox-3.14.3/src/tox/interpreters/windows/__init__.py 2019-12-28 11:58:14.000000000 +0100 +++ new/tox-3.14.5/src/tox/interpreters/windows/__init__.py 2020-02-17 01:21:11.000000000 +0100 @@ -4,18 +4,16 @@ import tox -from ..py_spec import CURRENT, PythonSpec +from ..common import base_discover +from ..py_spec import CURRENT from ..via_path import check_with_path @tox.hookimpl def tox_get_python_executable(envconfig): - base_python = envconfig.basepython - spec = PythonSpec.from_name(base_python) - # first, check current - if spec.name is not None and CURRENT.satisfies(spec): - return CURRENT.path - + spec, path = base_discover(envconfig) + if path is not None: + return path # second check if the py.exe has it (only for non path specs) if spec.path is None: py_exe = locate_via_pep514(spec) @@ -25,7 +23,7 @@ # third check if the literal base python is on PATH candidates = [envconfig.basepython] # fourth check if the name is on PATH - if spec.name is not None and spec.name != base_python: + if spec.name is not None and spec.name != envconfig.basepython: candidates.append(spec.name) # or check known locations if spec.major is not None and spec.minor is not None: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.3/src/tox/session/__init__.py new/tox-3.14.5/src/tox/session/__init__.py --- old/tox-3.14.3/src/tox/session/__init__.py 2019-12-28 11:58:14.000000000 +0100 +++ new/tox-3.14.5/src/tox/session/__init__.py 2020-02-17 01:21:11.000000000 +0100 @@ -19,7 +19,7 @@ import tox from tox import reporter from tox.action import Action -from tox.config import parseconfig +from tox.config import INTERRUPT_TIMEOUT, TERMINATE_TIMEOUT, parseconfig from tox.config.parallel import ENV_VAR_KEY_PRIVATE as PARALLEL_ENV_VAR_KEY_PRIVATE from tox.config.parallel import OFF_VALUE as PARALLEL_OFF from tox.logs.result import ResultLog @@ -170,6 +170,8 @@ self.resultlog.command_log, self.popen, sys.executable, + INTERRUPT_TIMEOUT, + TERMINATE_TIMEOUT, ) def runcommand(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.3/src/tox/session/commands/run/parallel.py new/tox-3.14.5/src/tox/session/commands/run/parallel.py --- old/tox-3.14.3/src/tox/session/commands/run/parallel.py 2019-12-28 11:58:14.000000000 +0100 +++ new/tox-3.14.5/src/tox/session/commands/run/parallel.py 2020-02-17 01:21:11.000000000 +0100 @@ -35,6 +35,7 @@ def run_in_thread(tox_env, os_env, processes): output = None + print_out = None env_name = tox_env.envconfig.envname status = "skipped tests" if config.option.notest else None try: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.3/src/tox/venv.py new/tox-3.14.5/src/tox/venv.py --- old/tox-3.14.3/src/tox/venv.py 2019-12-28 11:58:14.000000000 +0100 +++ new/tox-3.14.5/src/tox/venv.py 2020-02-17 01:21:11.000000000 +0100 @@ -130,6 +130,8 @@ command_log, self.popen, self.envconfig.envpython, + self.envconfig.interrupt_timeout, + self.envconfig.terminate_timeout, ) def get_result_json_path(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.3/src/tox/version.py new/tox-3.14.5/src/tox/version.py --- old/tox-3.14.3/src/tox/version.py 2019-12-28 11:58:34.000000000 +0100 +++ new/tox-3.14.5/src/tox/version.py 2020-02-17 01:21:23.000000000 +0100 @@ -1,4 +1,4 @@ # coding: utf-8 from __future__ import unicode_literals -__version__ = '3.14.3' +__version__ = '3.14.5' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.3/src/tox.egg-info/PKG-INFO new/tox-3.14.5/src/tox.egg-info/PKG-INFO --- old/tox-3.14.3/src/tox.egg-info/PKG-INFO 2019-12-28 11:58:34.000000000 +0100 +++ new/tox-3.14.5/src/tox.egg-info/PKG-INFO 2020-02-17 01:21:23.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: tox -Version: 3.14.3 +Version: 3.14.5 Summary: tox is a generic virtualenv management and test command line tool Home-page: http://tox.readthedocs.org Author: Holger Krekel, Oliver Bestwalter, Bernát Gábor and others @@ -152,10 +152,10 @@ Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 -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: Programming Language :: Python :: 3.8 Requires-Python: !=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7 Description-Content-Type: text/markdown Provides-Extra: testing diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.3/src/tox.egg-info/SOURCES.txt new/tox-3.14.5/src/tox.egg-info/SOURCES.txt --- old/tox-3.14.3/src/tox.egg-info/SOURCES.txt 2019-12-28 11:58:34.000000000 +0100 +++ new/tox-3.14.5/src/tox.egg-info/SOURCES.txt 2020-02-17 01:21:23.000000000 +0100 @@ -78,6 +78,7 @@ src/tox/helper/get_site_package_dir.py src/tox/helper/get_version.py src/tox/interpreters/__init__.py +src/tox/interpreters/common.py src/tox/interpreters/py_spec.py src/tox/interpreters/unix.py src/tox/interpreters/via_path.py diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.3/src/tox.egg-info/requires.txt new/tox-3.14.5/src/tox.egg-info/requires.txt --- old/tox-3.14.3/src/tox.egg-info/requires.txt 2019-12-28 11:58:34.000000000 +0100 +++ new/tox-3.14.5/src/tox.egg-info/requires.txt 2020-02-17 01:21:23.000000000 +0100 @@ -1,7 +1,7 @@ packaging>=14 pluggy<1,>=0.12.0 py<2,>=1.4.17 -six<2,>=1.0.0 +six<2,>=1.14.0 virtualenv>=16.0.0 toml>=0.9.4 filelock<4,>=3.0.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.3/tests/unit/config/test_config.py new/tox-3.14.5/tests/unit/config/test_config.py --- old/tox-3.14.3/tests/unit/config/test_config.py 2019-12-28 11:58:14.000000000 +0100 +++ new/tox-3.14.5/tests/unit/config/test_config.py 2020-02-17 01:21:11.000000000 +0100 @@ -175,6 +175,25 @@ assert DepOption._is_same_dep("pkg_hello-world3==1.0", "pkg_hello-world3<=2.0") assert not DepOption._is_same_dep("pkg_hello-world3==1.0", "otherpkg>=2.0") + def test_interrupt_terminate_timeout_set_manually(self, newconfig): + config = newconfig( + [], + """ + [testenv:dev] + interrupt_timeout = 5.0 + terminate_timeout = 10.0 + + [testenv:other] + """, + ) + envconfig = config.envconfigs["other"] + assert 0.3 == envconfig.interrupt_timeout + assert 0.2 == envconfig.terminate_timeout + + envconfig = config.envconfigs["dev"] + assert 5.0 == envconfig.interrupt_timeout + assert 10.0 == envconfig.terminate_timeout + class TestConfigPlatform: def test_config_parse_platform(self, newconfig): @@ -1077,6 +1096,9 @@ assert "LANG" in envconfig.passenv assert "LANGUAGE" in envconfig.passenv assert "LD_LIBRARY_PATH" in envconfig.passenv + assert "HTTP_PROXY" in envconfig.passenv + assert "HTTPS_PROXY" in envconfig.passenv + assert "NO_PROXY" in envconfig.passenv assert PARALLEL_ENV_VAR_KEY_PUBLIC in envconfig.passenv assert PARALLEL_ENV_VAR_KEY_PRIVATE not in envconfig.passenv assert "A123A" in envconfig.passenv diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.3/tests/unit/interpreters/test_interpreters.py new/tox-3.14.5/tests/unit/interpreters/test_interpreters.py --- old/tox-3.14.3/tests/unit/interpreters/test_interpreters.py 2019-12-28 11:58:14.000000000 +0100 +++ new/tox-3.14.5/tests/unit/interpreters/test_interpreters.py 2020-02-17 01:21:11.000000000 +0100 @@ -29,10 +29,12 @@ @pytest.mark.skipif(tox.INFO.IS_PYPY, reason="testing cpython interpreter discovery") -def test_tox_get_python_executable(): +def test_tox_get_python_executable(mocker): class envconfig: basepython = sys.executable envname = "pyxx" + config = mocker.MagicMock() + config.return_value.option.return_value.discover = [] def get_exe(name): envconfig.basepython = name @@ -73,7 +75,7 @@ @pytest.mark.skipif("sys.platform == 'win32'", reason="symlink execution unreliable on Windows") -def test_find_alias_on_path(monkeypatch, tmp_path): +def test_find_alias_on_path(monkeypatch, tmp_path, mocker): reporter.update_default_reporter(Verbosity.DEFAULT, Verbosity.DEBUG) magic = tmp_path / "magic{}".format(os.path.splitext(sys.executable)[1]) os.symlink(sys.executable, str(magic)) @@ -85,6 +87,8 @@ class envconfig: basepython = "magic" envname = "pyxx" + config = mocker.MagicMock() + config.return_value.option.return_value.discover = [] detected = py.path.local.sysfind("magic") assert detected @@ -102,10 +106,12 @@ class TestInterpreters: - def test_get_executable(self, interpreters): + def test_get_executable(self, interpreters, mocker): class envconfig: basepython = sys.executable envname = "pyxx" + config = mocker.MagicMock() + config.return_value.option.return_value.discover = [] x = interpreters.get_executable(envconfig) assert x == sys.executable @@ -114,10 +120,12 @@ assert info.executable == sys.executable assert isinstance(info, InterpreterInfo) - def test_get_executable_no_exist(self, interpreters): + def test_get_executable_no_exist(self, interpreters, mocker): class envconfig: basepython = "1lkj23" envname = "pyxx" + config = mocker.MagicMock() + config.return_value.option.return_value.discover = [] assert not interpreters.get_executable(envconfig) info = interpreters.get_info(envconfig) @@ -154,10 +162,12 @@ info = interpreters.get_info(envconfig) assert info.executable == str(magic) - def test_get_sitepackagesdir_error(self, interpreters): + def test_get_sitepackagesdir_error(self, interpreters, mocker): class envconfig: basepython = sys.executable envname = "123" + config = mocker.MagicMock() + config.return_value.option.return_value.discover = [] info = interpreters.get_info(envconfig) s = interpreters.get_sitepackagesdir(info, "") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.3/tox.ini new/tox-3.14.5/tox.ini --- old/tox-3.14.3/tox.ini 2019-12-28 11:58:14.000000000 +0100 +++ new/tox-3.14.5/tox.ini 2020-02-17 01:21:11.000000000 +0100 @@ -4,6 +4,7 @@ py35, py36, py37, + py38, pypy, pypy3, coverage, @@ -86,7 +87,7 @@ coverage xml -o {toxworkdir}/coverage.xml coverage html -d {toxworkdir}/htmlcov diff-cover --compare-branch {env:DIFF_AGAINST:origin/master} {toxworkdir}/coverage.xml -depends = py27, py34, py35, py36, py37, pypy, pypy3 +depends = py27, py34, py35, py36, py37, py38, pypy, pypy3 parallel_show_output = True [testenv:exit_code]