Hello community, here is the log from the commit of package python-tox for openSUSE:Factory checked in at 2020-02-15 22:23:29 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-tox (Old) and /work/SRC/openSUSE:Factory/.python-tox.new.26092 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-tox" Sat Feb 15 22:23:29 2020 rev:31 rq:771779 version:3.14.3 Changes: -------- --- /work/SRC/openSUSE:Factory/python-tox/python-tox.changes 2019-11-22 10:25:16.101276306 +0100 +++ /work/SRC/openSUSE:Factory/.python-tox.new.26092/python-tox.changes 2020-02-15 22:23:32.135248583 +0100 @@ -1,0 +2,6 @@ +Fri Feb 7 12:41:53 UTC 2020 - Tomáš Chvátal <tchva...@suse.com> + +- Update to 3.14.3 bsc#1163043: + * Relax importlib requirement to allow either version 0 or 1 - by :user:`chyzzqo2` #1476 + +------------------------------------------------------------------- Old: ---- tox-3.14.0.tar.gz New: ---- tox-3.14.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-tox.spec ++++++ --- /var/tmp/diff_new_pack.CqmzL0/_old 2020-02-15 22:23:32.959249029 +0100 +++ /var/tmp/diff_new_pack.CqmzL0/_new 2020-02-15 22:23:32.959249029 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-tox # -# Copyright (c) 2019 SUSE LLC. +# Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,7 +18,7 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-tox -Version: 3.14.0 +Version: 3.14.3 Release: 0 Summary: Virtualenv-based automation of test activities License: MIT @@ -41,7 +41,7 @@ BuildRequires: %{python_module setuptools_scm >= 2.0.0} BuildRequires: %{python_module six >= 1.0.0} BuildRequires: %{python_module toml} -BuildRequires: %{python_module virtualenv >= 14.0.0} +BuildRequires: %{python_module virtualenv >= 16.0.0} BuildRequires: %{python_module wheel >= 0.29.0} BuildRequires: fdupes BuildRequires: python-rpm-macros @@ -54,7 +54,7 @@ Requires: python-setuptools >= 30.0.0 Requires: python-six >= 1.0.0 Requires: python-toml >= 0.9.4 -Requires: python-virtualenv >= 14.0.0 +Requires: python-virtualenv >= 16.0.0 Requires(post): update-alternatives Requires(postun): update-alternatives Obsoletes: python-detox @@ -121,7 +121,7 @@ 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)' +%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)' %post %python_install_alternative tox tox-quickstart ++++++ tox-3.14.0.tar.gz -> tox-3.14.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/.pre-commit-config.yaml new/tox-3.14.3/.pre-commit-config.yaml --- old/tox-3.14.0/.pre-commit-config.yaml 2019-09-03 18:08:03.000000000 +0200 +++ new/tox-3.14.3/.pre-commit-config.yaml 2019-12-28 11:58:14.000000000 +0100 @@ -1,18 +1,18 @@ repos: - repo: https://github.com/psf/black - rev: 19.3b0 + rev: 19.10b0 hooks: - id: black args: [--safe] - language_version: python3.7 + language_version: python3.8 - repo: https://github.com/asottile/blacken-docs - rev: v1.1.0 + rev: v1.3.0 hooks: - id: blacken-docs additional_dependencies: [black==19.3b0] - language_version: python3.7 + language_version: python3.8 - repo: https://github.com/asottile/seed-isort-config - rev: v1.9.1 + rev: v1.9.3 hooks: - id: seed-isort-config args: [--application-directories, "src:."] @@ -21,20 +21,20 @@ hooks: - id: isort - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v2.2.3 + rev: v2.4.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer - id: check-yaml - id: debug-statements - id: flake8 - additional_dependencies: ["flake8-bugbear == 19.3.0"] - language_version: python3.7 + additional_dependencies: ["flake8-bugbear == 19.8.0"] + language_version: python3.8 - repo: https://github.com/asottile/pyupgrade - rev: v1.19.0 + rev: v1.25.1 hooks: - id: pyupgrade - repo: https://github.com/pre-commit/pygrep-hooks - rev: v1.4.0 + rev: v1.4.2 hooks: - id: rst-backticks diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/CONTRIBUTORS new/tox-3.14.3/CONTRIBUTORS --- old/tox-3.14.0/CONTRIBUTORS 2019-09-03 18:08:03.000000000 +0200 +++ new/tox-3.14.3/CONTRIBUTORS 2019-12-28 11:58:14.000000000 +0100 @@ -19,6 +19,7 @@ Chris Rose Clark Boylan Cyril Roelandt +Dane Hillard David Staheli Ederag Eli Collins @@ -31,6 +32,7 @@ Henk-Jaap Wagenaar Ian Stapleton Cordasco Igor Duarte Cardoso +Ilya Kulakov Ionel Maries Cristian Itxaka Serrano Jake Windle @@ -72,9 +74,11 @@ Ronald Evers Ronny Pfannschmidt Selim Belhaouane +Sorin Sbarnea Sridhar Ratnakumar Stephen Finucane Sviatoslav Sydorenko +Thomas Grainger Tim Laurence Ville Skyttä Xander Johnson diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/PKG-INFO new/tox-3.14.3/PKG-INFO --- old/tox-3.14.0/PKG-INFO 2019-09-03 18:08:18.000000000 +0200 +++ new/tox-3.14.3/PKG-INFO 2019-12-28 11:58:34.418653000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: tox -Version: 3.14.0 +Version: 3.14.3 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 @@ -19,6 +19,7 @@ status](https://readthedocs.org/projects/tox/badge/?version=latest&style=flat-square)](https://tox.readthedocs.io/en/latest/?badge=latest) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) + [![Downloads](https://pepy.tech/badge/tox/month)](https://pepy.tech/project/tox/month) <a href="https://tox.readthedocs.io"> <img src="https://raw.githubusercontent.com/tox-dev/tox/master/docs/_static/img/tox.png" @@ -155,7 +156,7 @@ Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 -Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.* +Requires-Python: !=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7 Description-Content-Type: text/markdown -Provides-Extra: docs Provides-Extra: testing +Provides-Extra: docs diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/README.md new/tox-3.14.3/README.md --- old/tox-3.14.0/README.md 2019-09-03 18:08:03.000000000 +0200 +++ new/tox-3.14.3/README.md 2019-12-28 11:58:14.000000000 +0100 @@ -8,6 +8,7 @@ status](https://readthedocs.org/projects/tox/badge/?version=latest&style=flat-square)](https://tox.readthedocs.io/en/latest/?badge=latest) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) +[![Downloads](https://pepy.tech/badge/tox/month)](https://pepy.tech/project/tox/month) <a href="https://tox.readthedocs.io"> <img src="https://raw.githubusercontent.com/tox-dev/tox/master/docs/_static/img/tox.png" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/azure-pipelines.yml new/tox-3.14.3/azure-pipelines.yml --- old/tox-3.14.0/azure-pipelines.yml 2019-09-03 18:08:03.000000000 +0200 +++ new/tox-3.14.3/azure-pipelines.yml 2019-12-28 11:58:14.000000000 +0100 @@ -20,36 +20,41 @@ variables: PYTEST_ADDOPTS: "-v -v -ra --showlocals" - PYTEST_XDIST_PROC_NR: 'auto' + PYTEST_XDIST_PROC_NR: '0' + PRE_COMMIT_HOME: $(Pipeline.Workspace)/pre-commit-cache jobs: - template: run-tox-env.yml@tox parameters: tox_version: '' jobs: - fix_lint: null + fix_lint: + before: + - task: CacheBeta@0 + displayName: cache pre-commit + inputs: + key: pre-commit | .pre-commit-config.yaml + path: $(PRE_COMMIT_HOME) docs: null py38: - image: [linux] - py37: image: [linux, windows, macOs] py27: image: [linux, windows, macOs] pypy: image: [linux] - pypy3: - image: [linux] + py37: + image: [linux, windows, macOs] py36: image: [linux, windows, macOs] py35: image: [linux, windows, macOs] - py34: - image: [linux, windows, macOs] + pypy3: + image: [linux] dev: null package_description: null coverage: with_toxenv: 'coverage' # generate .tox/.coverage, .tox/coverage.xml after test run - for_envs: [py37, py36, py35, py34, py27] + for_envs: [py38, py37, py36, py35, py27, pypy3, pypy] - ${{ if startsWith(variables['Build.SourceBranch'], 'refs/tags/') }}: - template: publish-pypi.yml@tox diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/docs/changelog.rst new/tox-3.14.3/docs/changelog.rst --- old/tox-3.14.0/docs/changelog.rst 2019-09-03 18:08:03.000000000 +0200 +++ new/tox-3.14.3/docs/changelog.rst 2019-12-28 11:58:14.000000000 +0100 @@ -11,6 +11,74 @@ .. towncrier release notes start +v3.14.3 (2019-12-27) +-------------------- + +Bugfixes +^^^^^^^^ + +- Relax importlib requirement to allow either version 0 or 1 - by :user:`chyzzqo2` + `#1476 <https://github.com/tox-dev/tox/issues/1476>`_ + +Miscellaneous +^^^^^^^^^^^^^ + +- Clarify legacy setup.py error message: python projects should commit to a strong consistency of message regarding packaging. We no-longer tell people to add a setup.py to their already configured pep-517 project, otherwise it could imply that pyproject.toml isn't as well supported and recommended as it truly is - by :user:`graingert` + `#1478 <https://github.com/tox-dev/tox/issues/1478>`_ + +v3.14.2 (2019-12-02) +-------------------- + +Bugfixes +^^^^^^^^ + +- Fix fallback to global configuration when running in Jenkins. - by :user:`daneah` + `#1428 <https://github.com/tox-dev/tox/issues/1428>`_ +- Fix colouring on windows: colorama is a dep. - by :user:`1138-4EB` + `#1471 <https://github.com/tox-dev/tox/issues/1471>`_ + + +Miscellaneous +^^^^^^^^^^^^^ + +- improve performance with internal lookup of Python version information - by :user:`blueyed` + `#1462 <https://github.com/tox-dev/tox/issues/1462>`_ +- Use latest version of importlib_metadata package - by :user:`kammala` + `#1472 <https://github.com/tox-dev/tox/issues/1472>`_ +- Mark poetry related tests as xfail since its dependency pyrsistent won't install in ci due to missing wheels/build deps. - by :user:`RonnyPfannschmidt` + `#1474 <https://github.com/tox-dev/tox/issues/1474>`_ + + +v3.14.1 (2019-11-13) +-------------------- + +Bugfixes +^^^^^^^^ + +- fix reporting of exiting due to (real) signals - by :user:`blueyed` + `#1401 <https://github.com/tox-dev/tox/issues/1401>`_ +- Bump minimal virtualenv to 16.0.0 to improve own transitive + deps handling in some ancient envs. — by :user:`webknjaz` + `#1429 <https://github.com/tox-dev/tox/issues/1429>`_ +- Adds ``CURL_CA_BUNDLE``, ``REQUESTS_CA_BUNDLE``, ``SSL_CERT_FILE`` to the default passenv values. - by :user:`ssbarnea` + `#1437 <https://github.com/tox-dev/tox/issues/1437>`_ +- Fix nested tox execution in the parallel mode by separating the environment + variable that let's tox know it is invoked in the parallel mode + (``_TOX_PARALLEL_ENV``) from the variable that informs the tests that tox is + running in parallel mode (``TOX_PARALLEL_ENV``). + — by :user:`hroncok` + `#1444 <https://github.com/tox-dev/tox/issues/1444>`_ +- Fix provisioning from a pyvenv interpreter. — by :user:`kentzo` + `#1452 <https://github.com/tox-dev/tox/issues/1452>`_ + + +Deprecations (removal in next major release) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Python ``3.4`` is no longer supported. — by :user:`gaborbernat` + `#1456 <https://github.com/tox-dev/tox/issues/1456>`_ + + v3.14.0 (2019-09-03) -------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/docs/config.rst new/tox-3.14.3/docs/config.rst --- old/tox-3.14.0/docs/config.rst 2019-09-03 18:08:03.000000000 +0200 +++ new/tox-3.14.3/docs/config.rst 2019-12-28 11:58:14.000000000 +0100 @@ -385,8 +385,10 @@ Some variables are always passed through to ensure the basic functionality of standard library functions or tooling like pip: - * passed through on all platforms: ``PATH``, ``LANG``, ``LANGUAGE``, - ``LD_LIBRARY_PATH``, ``PIP_INDEX_URL`` + * passed through on all platforms: ``CURL_CA_BUNDLE`, ``PATH``, + ``LANG``, ``LANGUAGE``, + ``LD_LIBRARY_PATH``, ``PIP_INDEX_URL``, + ``REQUESTS_CA_BUNDLE``, ``SSL_CERT_FILE`` * Windows: ``SYSTEMDRIVE``, ``SYSTEMROOT``, ``PATHEXT``, ``TEMP``, ``TMP`` ``NUMBER_OF_PROCESSORS``, ``USERPROFILE``, ``MSYSTEM`` * Others (e.g. UNIX, macOS): ``TMPDIR`` @@ -829,7 +831,7 @@ - ``Django>=1.5,<1.6`` will be included for environments containing ``django15`` factor, - ``Django>=1.6,<1.7`` similarly depends on ``django16`` factor, -- ``unittest`` will be loaded for Python 3.6 environments. +- ``unittest2`` will be loaded for Python 3.6 environments. tox provides a number of default factors corresponding to Python interpreter versions. The conditional setting above will lead to either ``python3.6`` or diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/docs/example/basic.rst new/tox-3.14.3/docs/example/basic.rst --- old/tox-3.14.0/docs/example/basic.rst 2019-09-03 18:08:03.000000000 +0200 +++ new/tox-3.14.3/docs/example/basic.rst 2019-12-28 11:58:14.000000000 +0100 @@ -399,7 +399,8 @@ - ``auto`` to limit it to CPU count, - or pass an integer to set that limit. - Parallel mode displays a progress spinner while running tox environments in parallel, and reports outcome of - these as soon as completed with a human readable duration timing attached. + these as soon as completed with a human readable duration timing attached. This spinner can be disabled by + setting the environment variable ``TOX_PARALLEL_NO_SPINNER`` to the value ``1``. - Parallel mode by default shows output only of failed environments and ones marked as :conf:`parallel_show_output` ``=True``. - There's now a concept of dependency between environments (specified via :conf:`depends`), tox will re-order the diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/docs/example/devenv.rst new/tox-3.14.3/docs/example/devenv.rst --- old/tox-3.14.0/docs/example/devenv.rst 2019-09-03 18:08:03.000000000 +0200 +++ new/tox-3.14.3/docs/example/devenv.rst 2019-12-28 11:58:14.000000000 +0100 @@ -15,7 +15,7 @@ =============================================================== The easiest way to set up a development environment is to use the ``--devenv`` -option along with your existing configured ``testenv``s. The ``--devenv`` +option along with your existing configured ``testenv``\ s. The ``--devenv`` option accepts a single argument, the location you want to create a development environment at. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/setup.cfg new/tox-3.14.3/setup.cfg --- old/tox-3.14.0/setup.cfg 2019-09-03 18:08:18.000000000 +0200 +++ new/tox-3.14.3/setup.cfg 2019-12-28 11:58:34.418653000 +0100 @@ -35,16 +35,17 @@ [options] packages = find: -python_requires = >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.* +python_requires = >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.* install_requires = - importlib-metadata >= 0.12, <1;python_version<"3.8" + importlib-metadata >= 0.12, <2;python_version<"3.8" packaging >= 14 pluggy >= 0.12.0, <1 py >= 1.4.17, <2 six >= 1.0.0, <2 - virtualenv >= 14.0.0 + virtualenv >= 16.0.0 toml >=0.9.4 filelock >= 3.0.0, <4 + colorama >= 0.4.1 ;platform_system=="Windows" [options.packages.find] where = src @@ -62,7 +63,7 @@ pytest-cov >= 2.5.1, <3 pytest-mock >= 1.10.0, <2 pytest-xdist >= 1.22.2, <2 - pytest-randomly >= 1.2.3, <2 + pytest-randomly >= 1.0.0, <4 psutil >= 5.6.1, < 6; python_version != "3.4" flaky >= 3.4.0, < 4 docs = diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/src/tox/_pytestplugin.py new/tox-3.14.3/src/tox/_pytestplugin.py --- old/tox-3.14.0/src/tox/_pytestplugin.py 2019-09-03 18:08:03.000000000 +0200 +++ new/tox-3.14.3/src/tox/_pytestplugin.py 2019-12-28 11:58:14.000000000 +0100 @@ -17,7 +17,8 @@ import tox.session from tox import venv from tox.config import parseconfig -from tox.config.parallel import ENV_VAR_KEY as PARALLEL_ENV_VAR_KEY +from tox.config.parallel import ENV_VAR_KEY_PRIVATE as PARALLEL_ENV_VAR_KEY_PRIVATE +from tox.config.parallel import ENV_VAR_KEY_PUBLIC as PARALLEL_ENV_VAR_KEY_PUBLIC from tox.reporter import update_default_reporter from tox.venv import CreationConfig, VirtualEnv, getdigest @@ -66,7 +67,12 @@ to_clean = { k: os.environ.pop(k, None) - for k in {PARALLEL_ENV_VAR_KEY, str("TOX_WORK_DIR"), str("PYTHONPATH")} + for k in { + PARALLEL_ENV_VAR_KEY_PRIVATE, + PARALLEL_ENV_VAR_KEY_PUBLIC, + str("TOX_WORK_DIR"), + str("PYTHONPATH"), + } } yield @@ -96,12 +102,12 @@ @pytest.fixture(name="newconfig") def create_new_config_file(tmpdir): - def create_new_config_file_(args, source=None, plugins=()): + def create_new_config_file_(args, source=None, plugins=(), filename="tox.ini"): if source is None: source = args args = [] s = textwrap.dedent(source) - p = tmpdir.join("tox.ini") + p = tmpdir.join(filename) p.write(s) tox.session.setup_reporter(args) with tmpdir.as_cwd(): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/src/tox/config/__init__.py new/tox-3.14.3/src/tox/config/__init__.py --- old/tox-3.14.0/src/tox/config/__init__.py 2019-09-03 18:08:03.000000000 +0200 +++ new/tox-3.14.3/src/tox/config/__init__.py 2019-12-28 11:58:14.000000000 +0100 @@ -35,7 +35,8 @@ from tox.util.path import ensure_empty_dir from tox.util.stdlib import importlib_metadata -from .parallel import ENV_VAR_KEY as PARALLEL_ENV_VAR_KEY +from .parallel import ENV_VAR_KEY_PRIVATE as PARALLEL_ENV_VAR_KEY_PRIVATE +from .parallel import ENV_VAR_KEY_PUBLIC as PARALLEL_ENV_VAR_KEY_PUBLIC from .parallel import add_parallel_config, add_parallel_flags from .reporter import add_verbosity_commands @@ -663,14 +664,17 @@ value = list(itertools.chain.from_iterable([x.split(" ") for x in value])) passenv = { - "PATH", - "PIP_INDEX_URL", + "CURL_CA_BUNDLE", "LANG", "LANGUAGE", "LD_LIBRARY_PATH", + "PATH", + "PIP_INDEX_URL", + "REQUESTS_CA_BUNDLE", + "SSL_CERT_FILE", "TOX_WORK_DIR", str(REPORTER_TIMESTAMP_ON_ENV), - str(PARALLEL_ENV_VAR_KEY), + str(PARALLEL_ENV_VAR_KEY_PUBLIC), } # read in global passenv settings @@ -987,11 +991,12 @@ self.config = config prefix = "tox" if ini_path.basename == "setup.cfg" else None + fallbacksection = "tox:tox" if ini_path.basename == "setup.cfg" else "tox" context_name = getcontextname() if context_name == "jenkins": reader = SectionReader( - "tox:jenkins", self._cfg, prefix=prefix, fallbacksections=["tox"] + "tox:jenkins", self._cfg, prefix=prefix, fallbacksections=[fallbacksection] ) dist_share_default = "{toxworkdir}/distshare" elif not context_name: @@ -1030,7 +1035,7 @@ config.sdistsrc = reader.getpath("sdistsrc", None) config.setupdir = reader.getpath("setupdir", "{toxinidir}") config.logdir = config.toxworkdir.join("log") - within_parallel = PARALLEL_ENV_VAR_KEY in os.environ + within_parallel = PARALLEL_ENV_VAR_KEY_PRIVATE in os.environ if not within_parallel and not WITHIN_PROVISION: ensure_empty_dir(config.logdir) @@ -1282,7 +1287,7 @@ all_envs = self._getallenvs(reader) else: candidates = ( - (os.environ.get(PARALLEL_ENV_VAR_KEY), True), + (os.environ.get(PARALLEL_ENV_VAR_KEY_PRIVATE), True), (from_option, True), (from_environ, True), ("py" if self.config.option.devenv is not None else None, False), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/src/tox/config/parallel.py new/tox-3.14.3/src/tox/config/parallel.py --- old/tox-3.14.0/src/tox/config/parallel.py 2019-09-03 18:08:03.000000000 +0200 +++ new/tox-3.14.3/src/tox/config/parallel.py 2019-12-28 11:58:14.000000000 +0100 @@ -2,7 +2,8 @@ from argparse import ArgumentTypeError -ENV_VAR_KEY = "TOX_PARALLEL_ENV" +ENV_VAR_KEY_PUBLIC = "TOX_PARALLEL_ENV" +ENV_VAR_KEY_PRIVATE = "_TOX_PARALLEL_ENV" OFF_VALUE = 0 DEFAULT_PARALLEL = OFF_VALUE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/src/tox/exception.py new/tox-3.14.3/src/tox/exception.py --- old/tox-3.14.0/src/tox/exception.py 2019-09-03 18:08:03.000000000 +0200 +++ new/tox-3.14.3/src/tox/exception.py 2019-12-28 11:58:14.000000000 +0100 @@ -17,18 +17,24 @@ """ str_ = "{} for command {}".format(exception_name, command) if exit_code is not None: - str_ += " (exited with code {:d})".format(exit_code) - if (os.name == "posix") and (exit_code > 128): + if exit_code < 0 or (os.name == "posix" and exit_code > 128): signals = { number: name for name, number in vars(signal).items() if name.startswith("SIG") } - number = exit_code - 128 - name = signals.get(number) - if name: - str_ += ( - "\nNote: this might indicate a fatal error signal " - "({:d} - 128 = {:d}: {})".format(number + 128, number, name) - ) + if exit_code < 0: + # Signal reported via subprocess.Popen. + sig_name = signals.get(-exit_code) + str_ += " (exited with code {:d} ({}))".format(exit_code, sig_name) + else: + str_ += " (exited with code {:d})".format(exit_code) + number = exit_code - 128 + name = signals.get(number) + if name: + str_ += ( + ")\nNote: this might indicate a fatal error signal " + "({:d} - 128 = {:d}: {})".format(exit_code, number, name) + ) + str_ += " (exited with code {:d})".format(exit_code) return str_ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/src/tox/interpreters/__init__.py new/tox-3.14.3/src/tox/interpreters/__init__.py --- old/tox-3.14.0/src/tox/interpreters/__init__.py 2019-09-03 18:08:03.000000000 +0200 +++ new/tox-3.14.3/src/tox/interpreters/__init__.py 2019-12-28 11:58:14.000000000 +0100 @@ -5,7 +5,8 @@ import tox from tox import reporter -from tox.constants import SITE_PACKAGE_QUERY_SCRIPT, VERSION_QUERY_SCRIPT +from tox.constants import SITE_PACKAGE_QUERY_SCRIPT +from tox.interpreters.via_path import get_python_info class Interpreters: @@ -56,7 +57,7 @@ def run_and_get_interpreter_info(name, executable): assert executable try: - result = exec_on_interpreter(str(executable), VERSION_QUERY_SCRIPT) + result = get_python_info(str(executable)) result["version_info"] = tuple(result["version_info"]) # fix json dump transformation del result["name"] del result["version"] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/src/tox/interpreters/via_path.py new/tox-3.14.3/src/tox/interpreters/via_path.py --- old/tox-3.14.0/src/tox/interpreters/via_path.py 2019-09-03 18:08:03.000000000 +0200 +++ new/tox-3.14.3/src/tox/interpreters/via_path.py 2019-12-28 11:58:14.000000000 +0100 @@ -35,7 +35,7 @@ python_exe = str(python_exe) with _SPECK_LOCK[python_exe]: if python_exe not in _SPECS: - info = get_python_info([python_exe]) + info = get_python_info(python_exe) if info is not None: found = PythonSpec( info["name"], @@ -51,9 +51,16 @@ return _SPECS[python_exe] +_python_info_cache = {} + + def get_python_info(cmd): + try: + return _python_info_cache[cmd].copy() + except KeyError: + pass proc = subprocess.Popen( - cmd + [VERSION_QUERY_SCRIPT], + [cmd] + [VERSION_QUERY_SCRIPT], stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, @@ -65,7 +72,8 @@ except ValueError as exception: failure = exception else: - return result + _python_info_cache[cmd] = result + return result.copy() else: failure = "exit code {}".format(proc.returncode) reporter.verbosity1("{!r} cmd {!r} out {!r} err {!r} ".format(failure, cmd, out, err)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/src/tox/logs/env.py new/tox-3.14.3/src/tox/logs/env.py --- old/tox-3.14.0/src/tox/logs/env.py 2019-09-03 18:08:03.000000000 +0200 +++ new/tox-3.14.3/src/tox/logs/env.py 2019-12-28 11:58:14.000000000 +0100 @@ -1,9 +1,6 @@ from __future__ import absolute_import, unicode_literals -import json -import subprocess - -from tox.constants import VERSION_QUERY_SCRIPT +from tox.interpreters.via_path import get_python_info from .command import CommandLog @@ -17,9 +14,7 @@ self.dict = dict def set_python_info(self, python_executable): - cmd = [str(python_executable), VERSION_QUERY_SCRIPT] - result = subprocess.check_output(cmd, universal_newlines=True) - answer = json.loads(result) + answer = get_python_info(str(python_executable)) answer["executable"] = python_executable self.dict["python"] = answer diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/src/tox/package/builder/legacy.py new/tox-3.14.3/src/tox/package/builder/legacy.py --- old/tox-3.14.0/src/tox/package/builder/legacy.py 2019-09-03 18:08:03.000000000 +0200 +++ new/tox-3.14.3/src/tox/package/builder/legacy.py 2019-12-28 11:58:14.000000000 +0100 @@ -8,16 +8,26 @@ def make_sdist(config, session): setup = config.setupdir.join("setup.py") - if not setup.check(): + pyproject = config.setupdir.join("pyproject.toml") + setup_check = setup.check() + if not setup_check and not pyproject.check(): reporter.error( - "No setup.py file found. The expected location is:\n" - " {}\n" + "No pyproject.toml or setup.py file found. The expected locations are:\n" + " {pyproject} or {setup}\n" "You can\n" " 1. Create one:\n" - " https://packaging.python.org/tutorials/distributing-packages/#setup-py\n" + " https://tox.readthedocs.io/en/latest/example/package.html\n" " 2. Configure tox to avoid running sdist:\n" - " https://tox.readthedocs.io/en/latest/example/general.html" - "#avoiding-expensive-sdist".format(setup) + " https://tox.readthedocs.io/en/latest/example/general.html\n" + " 3. Configure tox to use an isolated_build".format(pyproject=pyproject, setup=setup) + ) + raise SystemExit(1) + if not setup_check: + reporter.error( + "pyproject.toml file found.\n" + "To use a PEP 517 build-backend you are required to " + "configure tox to use an isolated_build:\n" + "https://tox.readthedocs.io/en/latest/example/package.html\n" ) raise SystemExit(1) with session.newaction("GLOB", "packaging") as action: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/src/tox/session/__init__.py new/tox-3.14.3/src/tox/session/__init__.py --- old/tox-3.14.0/src/tox/session/__init__.py 2019-09-03 18:08:03.000000000 +0200 +++ new/tox-3.14.3/src/tox/session/__init__.py 2019-12-28 11:58:14.000000000 +0100 @@ -20,7 +20,7 @@ from tox import reporter from tox.action import Action from tox.config import parseconfig -from tox.config.parallel import ENV_VAR_KEY as PARALLEL_ENV_VAR_KEY +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 from tox.reporter import update_default_reporter @@ -212,7 +212,7 @@ if self.config.option.sdistonly: return - within_parallel = PARALLEL_ENV_VAR_KEY in os.environ + within_parallel = PARALLEL_ENV_VAR_KEY_PRIVATE in os.environ try: if not within_parallel and self.config.option.parallel != PARALLEL_OFF: run_parallel(self.config, self.venv_dict) @@ -241,7 +241,7 @@ return data def _summary(self): - is_parallel_child = PARALLEL_ENV_VAR_KEY in os.environ + is_parallel_child = PARALLEL_ENV_VAR_KEY_PRIVATE in os.environ if not is_parallel_child: reporter.separator("_", "summary", reporter.Verbosity.QUIET) exit_code = 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/src/tox/session/commands/provision.py new/tox-3.14.3/src/tox/session/commands/provision.py --- old/tox-3.14.0/src/tox/session/commands/provision.py 2019-09-03 18:08:03.000000000 +0200 +++ new/tox-3.14.3/src/tox/session/commands/provision.py 2019-12-28 11:58:14.000000000 +0100 @@ -13,6 +13,7 @@ try: env = os.environ.copy() env[str("TOX_PROVISION")] = str("1") + env.pop("__PYVENV_LAUNCHER__", None) action.popen(provision_args, redirect=False, report_fail=False, env=env) return 0 except InvocationError as exception: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/src/tox/session/commands/run/parallel.py new/tox-3.14.3/src/tox/session/commands/run/parallel.py --- old/tox-3.14.0/src/tox/session/commands/run/parallel.py 2019-09-03 18:08:03.000000000 +0200 +++ new/tox-3.14.3/src/tox/session/commands/run/parallel.py 2019-12-28 11:58:14.000000000 +0100 @@ -4,7 +4,8 @@ from threading import Event, Semaphore, Thread from tox import reporter -from tox.config.parallel import ENV_VAR_KEY as PARALLEL_ENV_VAR_KEY +from tox.config.parallel import ENV_VAR_KEY_PRIVATE as PARALLEL_ENV_VAR_KEY_PRIVATE +from tox.config.parallel import ENV_VAR_KEY_PUBLIC as PARALLEL_ENV_VAR_KEY_PUBLIC from tox.exception import InvocationError from tox.util.main import MAIN_FILE from tox.util.spinner import Spinner @@ -37,7 +38,8 @@ env_name = tox_env.envconfig.envname status = "skipped tests" if config.option.notest else None try: - os_env[str(PARALLEL_ENV_VAR_KEY)] = str(env_name) + os_env[str(PARALLEL_ENV_VAR_KEY_PRIVATE)] = str(env_name) + os_env[str(PARALLEL_ENV_VAR_KEY_PUBLIC)] = str(env_name) args_sub = list(args) if hasattr(tox_env, "package"): args_sub.insert(position, str(tox_env.package)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/src/tox/venv.py new/tox-3.14.3/src/tox/venv.py --- old/tox-3.14.0/src/tox/venv.py 2019-09-03 18:08:03.000000000 +0200 +++ new/tox-3.14.3/src/tox/venv.py 2019-12-28 11:58:14.000000000 +0100 @@ -11,7 +11,7 @@ import tox from tox import reporter from tox.action import Action -from tox.config.parallel import ENV_VAR_KEY as PARALLEL_ENV_VAR_KEY +from tox.config.parallel import ENV_VAR_KEY_PRIVATE as PARALLEL_ENV_VAR_KEY_PRIVATE from tox.constants import INFO, PARALLEL_RESULT_JSON_PREFIX, PARALLEL_RESULT_JSON_SUFFIX from tox.package.local import resolve_package from tox.util.lock import get_unique_file @@ -693,7 +693,7 @@ def cleanup_for_venv(venv): - within_parallel = PARALLEL_ENV_VAR_KEY in os.environ + within_parallel = PARALLEL_ENV_VAR_KEY_PRIVATE in os.environ # if the directory exists and it doesn't look like a virtualenv, produce # an error if venv.path.exists(): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/src/tox/version.py new/tox-3.14.3/src/tox/version.py --- old/tox-3.14.0/src/tox/version.py 2019-09-03 18:08:18.000000000 +0200 +++ new/tox-3.14.3/src/tox/version.py 2019-12-28 11:58:34.000000000 +0100 @@ -1,4 +1,4 @@ # coding: utf-8 from __future__ import unicode_literals -__version__ = '3.14.0' +__version__ = '3.14.3' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/src/tox.egg-info/PKG-INFO new/tox-3.14.3/src/tox.egg-info/PKG-INFO --- old/tox-3.14.0/src/tox.egg-info/PKG-INFO 2019-09-03 18:08:18.000000000 +0200 +++ new/tox-3.14.3/src/tox.egg-info/PKG-INFO 2019-12-28 11:58:34.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: tox -Version: 3.14.0 +Version: 3.14.3 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 @@ -19,6 +19,7 @@ status](https://readthedocs.org/projects/tox/badge/?version=latest&style=flat-square)](https://tox.readthedocs.io/en/latest/?badge=latest) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) + [![Downloads](https://pepy.tech/badge/tox/month)](https://pepy.tech/project/tox/month) <a href="https://tox.readthedocs.io"> <img src="https://raw.githubusercontent.com/tox-dev/tox/master/docs/_static/img/tox.png" @@ -155,7 +156,7 @@ Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 -Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.* +Requires-Python: !=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7 Description-Content-Type: text/markdown -Provides-Extra: docs Provides-Extra: testing +Provides-Extra: docs diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/src/tox.egg-info/SOURCES.txt new/tox-3.14.3/src/tox.egg-info/SOURCES.txt --- old/tox-3.14.0/src/tox.egg-info/SOURCES.txt 2019-09-03 18:08:18.000000000 +0200 +++ new/tox-3.14.3/src/tox.egg-info/SOURCES.txt 2019-12-28 11:58:34.000000000 +0100 @@ -117,6 +117,7 @@ tests/conftest.py tests/integration/test_jython_env_create.py tests/integration/test_package_int.py +tests/integration/test_parallel_inception.py tests/integration/test_parallel_interrupt.py tests/integration/test_provision_int.py tests/lib/__init__.py diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/src/tox.egg-info/requires.txt new/tox-3.14.3/src/tox.egg-info/requires.txt --- old/tox-3.14.0/src/tox.egg-info/requires.txt 2019-09-03 18:08:18.000000000 +0200 +++ new/tox-3.14.3/src/tox.egg-info/requires.txt 2019-12-28 11:58:34.000000000 +0100 @@ -2,12 +2,15 @@ pluggy<1,>=0.12.0 py<2,>=1.4.17 six<2,>=1.0.0 -virtualenv>=14.0.0 +virtualenv>=16.0.0 toml>=0.9.4 filelock<4,>=3.0.0 +[:platform_system == "Windows"] +colorama>=0.4.1 + [:python_version < "3.8"] -importlib-metadata<1,>=0.12 +importlib-metadata<2,>=0.12 [docs] sphinx<3,>=2.0.0 @@ -22,7 +25,7 @@ pytest-cov<3,>=2.5.1 pytest-mock<2,>=1.10.0 pytest-xdist<2,>=1.22.2 -pytest-randomly<2,>=1.2.3 +pytest-randomly<4,>=1.0.0 flaky<4,>=3.4.0 [testing:python_version != "3.4"] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/tests/integration/test_parallel_inception.py new/tox-3.14.3/tests/integration/test_parallel_inception.py --- old/tox-3.14.0/tests/integration/test_parallel_inception.py 1970-01-01 01:00:00.000000000 +0100 +++ new/tox-3.14.3/tests/integration/test_parallel_inception.py 2019-12-28 11:58:14.000000000 +0100 @@ -0,0 +1,52 @@ +def test_parallel_inception(initproj, cmd): + initproj( + "inception-1.2.3", + filedefs={ + # the outer config just has one env: graham + "tox.ini": """ + [tox] + envlist = graham + skipsdist = True + + [testenv] + commands = + python runner.py + """, + # the inner config has 3 different envs, 1 of them is graham + "inner": { + "tox.ini": """ + [tox] + envlist = graham,john,terry + skipsdist = True + + [testenv] + commands = + python -c 'pass' + """ + }, + # the outer test runs the inner tox and asserts all 3 envs were run + "runner.py": """ + import os + import subprocess + import sys + + os.chdir("inner") + p = subprocess.Popen(("tox"), stdout=subprocess.PIPE, universal_newlines=True) + stdout, _ = p.communicate() + sys.stdout.write(stdout) + assert "graham" in stdout + assert "john" in stdout + assert "terry" in stdout + """, + }, + add_missing_setup_py=False, + ) + + result = cmd("-p", "all", "-o") + result.assert_success() + + # 1 from the outer, 1 from the inner + assert result.out.count("graham: commands succeeded") == 2 + # those gentlemen are only inside + assert result.out.count("john: commands succeeded") == 1 + assert result.out.count("terry: commands succeeded") == 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/tests/integration/test_parallel_interrupt.py new/tox-3.14.3/tests/integration/test_parallel_interrupt.py --- old/tox-3.14.0/tests/integration/test_parallel_interrupt.py 2019-09-03 18:08:03.000000000 +0200 +++ new/tox-3.14.3/tests/integration/test_parallel_interrupt.py 2019-12-28 11:58:14.000000000 +0100 @@ -9,10 +9,12 @@ from flaky import flaky from pathlib2 import Path +from tox.constants import INFO from tox.util.main import MAIN_FILE @flaky(max_runs=3) +@pytest.mark.skipif(INFO.IS_PYPY, reason="TODO: process numbers work differently on pypy") @pytest.mark.skipif( "sys.platform == 'win32'", reason="triggering SIGINT reliably on Windows is hard" ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/tests/integration/test_provision_int.py new/tox-3.14.3/tests/integration/test_provision_int.py --- old/tox-3.14.0/tests/integration/test_provision_int.py 2019-09-03 18:08:03.000000000 +0200 +++ new/tox-3.14.3/tests/integration/test_provision_int.py 2019-12-28 11:58:14.000000000 +0100 @@ -6,6 +6,7 @@ import pytest from pathlib2 import Path +from tox.constants import INFO from tox.util.main import MAIN_FILE @@ -41,6 +42,29 @@ assert meta_python.exists() +@pytest.mark.skipif("sys.platform == 'win32'", reason="pyenv does not exists on Windows") +def test_provision_from_pyvenv(initproj, cmd, monkeypatch): + initproj( + "pkg123-0.7", + filedefs={ + "tox.ini": """\ + [tox] + skipsdist=True + minversion = 3.7.0 + requires = + setuptools == 40.6.3 + [testenv] + commands=python -c "import sys; print(sys.executable); raise SystemExit(1)" + """ + }, + ) + monkeypatch.setenv(str("__PYVENV_LAUNCHER__"), sys.executable) + result = cmd("-e", "py", "-vv") + result.assert_fail() + assert ".tox/.tox/bin/python -m virtualenv" in result.out + + +@pytest.mark.skipif(INFO.IS_PYPY, reason="TODO: process numbers work differently on pypy") @pytest.mark.skipif( "sys.platform == 'win32'", reason="triggering SIGINT reliably on Windows is hard" ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/tests/unit/config/test_config.py new/tox-3.14.3/tests/unit/config/test_config.py --- old/tox-3.14.0/tests/unit/config/test_config.py 2019-09-03 18:08:03.000000000 +0200 +++ new/tox-3.14.3/tests/unit/config/test_config.py 2019-12-28 11:58:14.000000000 +0100 @@ -19,7 +19,8 @@ is_section_substitution, parseconfig, ) -from tox.config.parallel import ENV_VAR_KEY as PARALLEL_ENV_VAR_KEY +from tox.config.parallel import ENV_VAR_KEY_PRIVATE as PARALLEL_ENV_VAR_KEY_PRIVATE +from tox.config.parallel import ENV_VAR_KEY_PUBLIC as PARALLEL_ENV_VAR_KEY_PUBLIC class TestVenvConfig: @@ -836,7 +837,7 @@ reader.getbool("key3") with pytest.raises(tox.exception.ConfigError) as excinfo: reader.getbool("key5") - msg, = excinfo.value.args + (msg,) = excinfo.value.args assert msg == "key5: boolean value 'yes' needs to be 'True' or 'False'" @@ -1068,12 +1069,16 @@ assert "MSYSTEM" in envconfig.passenv else: assert "TMPDIR" in envconfig.passenv + assert "CURL_CA_BUNDLE" in envconfig.passenv assert "PATH" in envconfig.passenv assert "PIP_INDEX_URL" in envconfig.passenv + assert "REQUESTS_CA_BUNDLE" in envconfig.passenv + assert "SSL_CERT_FILE" in envconfig.passenv assert "LANG" in envconfig.passenv assert "LANGUAGE" in envconfig.passenv assert "LD_LIBRARY_PATH" in envconfig.passenv - assert PARALLEL_ENV_VAR_KEY 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 assert "A123B" in envconfig.passenv @@ -2099,6 +2104,17 @@ config = newconfig(args, "") assert config.option.quiet_level == expected + def test_substitution_jenkins_global(self, monkeypatch, newconfig): + monkeypatch.setenv("HUDSON_URL", "xyz") + config = newconfig( + """ + [tox:tox] + envlist = py37 + """, + filename="setup.cfg", + ) + assert "py37" in config.envconfigs + def test_substitution_jenkins_default(self, monkeypatch, newconfig): monkeypatch.setenv("HUDSON_URL", "xyz") config = newconfig( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/tests/unit/test_result.py new/tox-3.14.3/tests/unit/test_result.py --- old/tox-3.14.0/tests/unit/test_result.py 2019-09-03 18:08:03.000000000 +0200 +++ new/tox-3.14.3/tests/unit/test_result.py 2019-12-28 11:58:14.000000000 +0100 @@ -72,7 +72,7 @@ assert setuplog2.list == setuplog.list -@pytest.mark.parametrize("exit_code", [None, 0, 5, 128 + signal.SIGTERM, 1234]) +@pytest.mark.parametrize("exit_code", [None, 0, 5, 128 + signal.SIGTERM, 1234, -15]) @pytest.mark.parametrize("os_name", ["posix", "nt"]) def test_invocation_error(exit_code, os_name, mocker, monkeypatch): monkeypatch.setattr(os, "name", value=os_name) @@ -85,6 +85,8 @@ assert call_args == mocker.call("InvocationError", "<command>", exit_code) if exit_code is None: assert "(exited with code" not in result + elif exit_code == -15: + assert "(exited with code -15 (SIGTERM))" in result else: assert "(exited with code %d)" % exit_code in result note = "Note: this might indicate a fatal error signal" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/tests/unit/test_venv.py new/tox-3.14.3/tests/unit/test_venv.py --- old/tox-3.14.0/tests/unit/test_venv.py 2019-09-03 18:08:03.000000000 +0200 +++ new/tox-3.14.3/tests/unit/test_venv.py 2019-12-28 11:58:14.000000000 +0100 @@ -92,9 +92,9 @@ ) mocksession.new_config(config) venv = mocksession.getvenv("py123") - with mocker.patch.object(venv, "_pcall", side_effect=KeyboardInterrupt): - with pytest.raises(KeyboardInterrupt): - venv.setupenv() + mocker.patch.object(venv, "_pcall", side_effect=KeyboardInterrupt) + with pytest.raises(KeyboardInterrupt): + venv.setupenv() assert venv.status == "keyboardinterrupt" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/tests/unit/test_z_cmdline.py new/tox-3.14.3/tests/unit/test_z_cmdline.py --- old/tox-3.14.0/tests/unit/test_z_cmdline.py 2019-09-03 18:08:03.000000000 +0200 +++ new/tox-3.14.3/tests/unit/test_z_cmdline.py 2019-12-28 11:58:14.000000000 +0100 @@ -6,6 +6,7 @@ import sys import tempfile +import pathlib2 import py import pytest @@ -411,7 +412,31 @@ result = cmd() result.assert_fail() assert any( - re.match(r".*ERROR.*No setup.py file found.*", l) for l in result.outlines + re.match(r".*ERROR.*No pyproject.toml or setup.py file found.*", l) + for l in result.outlines + ), result.outlines + + +def test_no_setup_py_exits_but_pyproject_toml_does(cmd, initproj): + initproj( + "pkg123-0.7", + filedefs={ + "tox.ini": """ + [testenv] + commands=python -c "2 + 2" + """ + }, + ) + os.remove("setup.py") + pathlib2.Path("pyproject.toml").touch() + result = cmd() + result.assert_fail() + assert any( + re.match(r".*ERROR.*pyproject.toml file found.*", l) for l in result.outlines + ), result.outlines + assert any( + re.match(r".*To use a PEP 517 build-backend you are required to*", l) + for l in result.outlines ), result.outlines diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-3.14.0/tox.ini new/tox-3.14.3/tox.ini --- old/tox-3.14.0/tox.ini 2019-09-03 18:08:03.000000000 +0200 +++ new/tox-3.14.3/tox.ini 2019-12-28 11:58:14.000000000 +0100 @@ -16,11 +16,19 @@ [testenv] description = run the tests with pytest under {basepython} -setenv = PIP_DISABLE_VERSION_CHECK = 1 - COVERAGE_FILE = {env:COVERAGE_FILE:{toxworkdir}/.coverage.{envname}} - VIRTUALENV_NO_DOWNLOAD = 1 -passenv = http_proxy https_proxy no_proxy SSL_CERT_FILE PYTEST_* -deps = pip == 19.1.1 +setenv = + PIP_DISABLE_PIP_VERSION_CHECK = 1 + COVERAGE_FILE = {env:COVERAGE_FILE:{toxworkdir}/.coverage.{envname}} +passenv = + CURL_CA_BUNDLE + http_proxy + https_proxy + no_proxy + REQUESTS_CA_BUNDLE + SSL_CERT_FILE + PYTEST_* + PIP_CACHE_DIR +deps = pip >= 19.3.1 extras = testing commands = pytest \ --cov "{envsitepackagesdir}/tox" \ @@ -31,14 +39,14 @@ [testenv:docs] description = invoke sphinx-build to build the HTML docs -basepython = python3.7 +basepython = python3.8 extras = docs commands = sphinx-build -d "{toxworkdir}/docs_doctree" docs "{toxworkdir}/docs_out" --color -W -bhtml {posargs} python -c 'import pathlib; print("documentation available under file://\{0\}".format(pathlib.Path(r"{toxworkdir}") / "docs_out" / "index.html"))' [testenv:package_description] description = check that the long description is valid -basepython = python3.7 +basepython = python3.8 deps = twine >= 1.12.1 # TODO installing readme-renderer[md] should not be necessary readme-renderer[md] >= 24.0 @@ -50,15 +58,16 @@ [testenv:fix_lint] description = format the code base to adhere to our styles, and complain about what we cannot do automatically -basepython = python3.7 -passenv = {[testenv]passenv} - # without PROGRAMDATA cloning using git for Windows will fail with an - # `error setting certificate verify locations` error - PROGRAMDATA +basepython = python3.8 +passenv = + {[testenv]passenv} + # without PROGRAMDATA cloning using git for Windows will fail with an `error setting certificate verify locations` error + PROGRAMDATA + PRE_COMMIT_HOME extras = lint deps = pre-commit >= 1.14.4, < 2 skip_install = True -commands = pre-commit run --all-files --show-diff-on-failure +commands = pre-commit run --all-files --show-diff-on-failure {posargs} python -c 'import pathlib; print("hint: run \{\} install to add checks as pre-commit hook".format(pathlib.Path(r"{envdir}") / "bin" / "pre-commit"))' @@ -66,7 +75,7 @@ description = [run locally after tests]: combine coverage data and create report; generates a diff coverage against origin/master (can be changed by setting DIFF_AGAINST env var) deps = {[testenv]deps} - coverage >= 4.4.1, < 5 + coverage >= 5.0.1, < 6 diff_cover skip_install = True passenv = {[testenv]passenv} @@ -83,10 +92,10 @@ [testenv:exit_code] # to see how the InvocationError is displayed, use # PYTHONPATH=.:$PYTHONPATH python3 -m tox -e exit_code -basepython = python3.7 +basepython = python3.8 description = commands with several exit codes skip_install = True -commands = python3.7 -c "import sys; sys.exit(139)" +commands = python3.8 -c "import sys; sys.exit(139)" [testenv:X] description = print the positional arguments passed in with echo @@ -143,7 +152,7 @@ [testenv:release] description = do a release, required posarg of the version number -basepython = python3.7 +basepython = python3.8 passenv = * deps = gitpython >= 2.1.10 towncrier >= 18.5.0 @@ -152,7 +161,7 @@ [testenv:notify] description = notify people about the release of the library -basepython = python3.7 +basepython = python3.8 skip_install = true passenv = * deps = gitpython >= 2.1.10