diff options
author | Bernát Gábor <bgabor8@bloomberg.net> | 2021-01-08 18:02:01 +0000 |
---|---|---|
committer | Bernát Gábor <bgabor8@bloomberg.net> | 2021-01-08 18:42:58 +0000 |
commit | 096f6a8184f4846163fea13d34ceafc76a99119e (patch) | |
tree | b732e0d2eb404935852fcb041d0b40098d1f169f | |
parent | d7f533571f5ac1723f438271ee35d4955869aa07 (diff) | |
download | tox-git-096f6a8184f4846163fea13d34ceafc76a99119e.tar.gz |
Stable deps and eat-our-own dogfood4.0.0a2
Signed-off-by: Bernát Gábor <bgabor8@bloomberg.net>
-rw-r--r-- | .github/workflows/check.yml | 52 | ||||
-rw-r--r-- | src/tox/execute/local_sub_process/__init__.py | 2 | ||||
-rw-r--r-- | src/tox/session/cmd/run/common.py | 12 | ||||
-rw-r--r-- | src/tox/tox_env/package.py | 12 | ||||
-rw-r--r-- | src/tox/tox_env/python/runner.py | 31 | ||||
-rw-r--r-- | tests/config/cli/test_cli_env_var.py | 2 | ||||
-rw-r--r-- | tests/config/cli/test_cli_ini.py | 2 | ||||
-rw-r--r-- | tests/session/cmd/test_sequential.py | 7 |
8 files changed, 69 insertions, 51 deletions
diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index b7bcc30f..77d91ab3 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -29,20 +29,20 @@ jobs: - 3.7 - 3.6 steps: - - name: setup python for tox + - name: Setup python for tox uses: actions/setup-python@v2 with: - python-version: 3.8 - - name: install tox - run: python -m pip install tox + python-version: 3.9 - uses: actions/checkout@v2 with: fetch-depth: 0 - - name: setup python for test ${{ matrix.py }} + - name: Install self-tox + run: python -m pip install . + - name: Setup python for test ${{ matrix.py }} uses: actions/setup-python@v2 with: python-version: ${{ matrix.py }} - - name: pick environment to run + - name: Pick environment to run run: | import json import os @@ -51,21 +51,21 @@ jobs: with open(os.environ['GITHUB_ENV'], 'a') as file_handler: file_handler.write('TOXENV=' + ("py" if impl == "CPython" else "pypy") + ("{}{}".format(major, minor) if impl == "CPython" else "3") + "\n") shell: python - - name: setup test suite - run: tox -vv --notest - - name: run test suite - run: tox --skip-pkg-install + - name: Setup test suite + run: tox4 r -vv --notest + - name: Run test suite + run: tox4 r --skip-pkg-install env: PYTEST_ADDOPTS: "-vv --durations=20" CI_RUN: "yes" DIFF_AGAINST: HEAD - - name: rename coverage report file + - name: Rename coverage report file run: | - import os; os.rename('.tox/coverage.{}.xml'.format(os.environ['TOXENV']), '.tox/coverage.xml') + import os; os.rename('.tox4/coverage.{}.xml'.format(os.environ['TOXENV']), '.tox4/coverage.xml') shell: python - uses: codecov/codecov-action@v1 with: - file: ./.tox/coverage.xml + file: ./.tox4/coverage.xml flags: tests name: ${{ matrix.py }} - ${{ matrix.os }} @@ -89,14 +89,14 @@ jobs: - uses: actions/checkout@v2 with: fetch-depth: 0 - - name: setup Python 3.8 + - name: Setup Python 3.9 uses: actions/setup-python@v2 with: - python-version: 3.8 - - name: install tox - run: python -m pip install tox - - name: run check for ${{ matrix.tox_env }} - run: python -m tox -e ${{ matrix.tox_env }} + python-version: 3.9 + - name: Install self-tox + run: python -m pip install . + - name: Run check for ${{ matrix.tox_env }} + run: tox4 r -e ${{ matrix.tox_env }} env: UPGRADE_ADVISORY: "yes" @@ -105,18 +105,18 @@ jobs: needs: [ check, test, pre_commit ] runs-on: ubuntu-latest steps: - - name: setup python to build package + - name: Setup python to build package uses: actions/setup-python@v2 with: - python-version: 3.8 - - name: install pep517 - run: python -m pip install pep517 + python-version: 3.9 + - name: Install build + run: python -m pip install build - uses: actions/checkout@v2 with: fetch-depth: 0 - - name: build package - run: python -m pep517.build -s -b . -o dist - - name: publish to PyPi + - name: Build package + run: pyproject-build -s -w . -o dist + - name: Publish to PyPi uses: pypa/gh-action-pypi-publish@master with: skip_existing: true diff --git a/src/tox/execute/local_sub_process/__init__.py b/src/tox/execute/local_sub_process/__init__.py index b456267b..a8af51a8 100644 --- a/src/tox/execute/local_sub_process/__init__.py +++ b/src/tox/execute/local_sub_process/__init__.py @@ -228,7 +228,7 @@ class LocalSubProcessExecuteInstance(ExecuteInstance): def get_stream_file_no(key: str) -> Generator[int, "Popen[bytes]", None]: process = yield PIPE stream = getattr(process, key) - if sys.platform == "win32": # explicit check for mypy + if sys.platform == "win32": # explicit check for mypy # pragma: win32 cover yield stream.handle else: yield stream.name diff --git a/src/tox/session/cmd/run/common.py b/src/tox/session/cmd/run/common.py index aa9b9500..664d6fde 100644 --- a/src/tox/session/cmd/run/common.py +++ b/src/tox/session/cmd/run/common.py @@ -104,6 +104,18 @@ def env_run_create_flags(parser: ArgumentParser) -> None: help="for python discovery first try the python executables under these paths", default=[], ) + parser.add_argument( + "--no-recreate-pkg", + dest="no_recreate_pkg", + help="if recreate is set do not recreate packaging tox environment(s)", + action="store_true", + ) + parser.add_argument( + "--skip-pkg-install", + dest="skip_pkg_install", + help="skip package installation for this run", + action="store_true", + ) def run_and_report(state: State, result: List[ToxEnvRunResult]) -> int: diff --git a/src/tox/tox_env/package.py b/src/tox/tox_env/package.py index 425672e4..b32b2c40 100644 --- a/src/tox/tox_env/package.py +++ b/src/tox/tox_env/package.py @@ -2,7 +2,6 @@ A tox environment that can build packages. """ from abc import ABC, abstractmethod -from argparse import ArgumentParser from pathlib import Path from typing import TYPE_CHECKING, List, Set @@ -10,7 +9,6 @@ from packaging.requirements import Requirement from tox.config.sets import ConfigSet from tox.journal import EnvJournal -from tox.plugin.impl import impl from tox.report import ToxHandler from tox.util.threading import AtomicCounter @@ -39,13 +37,3 @@ class PackageToxEnv(ToxEnv, ABC): def clean(self, force: bool = False) -> None: if force or self.recreate_package: # only recreate if user did not opt out super().clean(force) - - -@impl -def tox_add_option(parser: ArgumentParser) -> None: - parser.add_argument( - "--no-recreate-pkg", - dest="no_recreate_pkg", - help="if recreate is set do not recreate packaging tox environment(s)", - action="store_true", - ) diff --git a/src/tox/tox_env/python/runner.py b/src/tox/tox_env/python/runner.py index d34623f9..bdc5d797 100644 --- a/src/tox/tox_env/python/runner.py +++ b/src/tox/tox_env/python/runner.py @@ -42,19 +42,26 @@ class PythonRun(Python, RunToxEnv, ABC): """setup the tox environment""" super().setup() self.install_deps() - if self.package_env is not None: - # 1. install pkg dependencies - with self.package_env.display_context(suspend=self.has_display_suspended): - package_deps = self.package_env.get_package_dependencies(self.conf["extras"]) - self.cached_install([PythonDep(p) for p in package_deps], PythonRun.__name__, "package_deps") - # 2. install the package - with self.package_env.display_context(suspend=self.has_display_suspended): - self._packages = [PythonDep(p) for p in self.package_env.perform_packaging()] - self.install_python_packages( - self._packages, "package", **self.install_package_args() # type: ignore[no-untyped-call] - ) - self.handle_journal_package(self.journal, self._packages) + if self.package_env is None: + return + skip_pkg_install: bool = getattr(self.options, "skip_pkg_install", False) + if skip_pkg_install is True: + logging.warning("skip building and installing the package") + return + + # 1. install pkg dependencies + with self.package_env.display_context(suspend=self.has_display_suspended): + package_deps = self.package_env.get_package_dependencies(self.conf["extras"]) + self.cached_install([PythonDep(p) for p in package_deps], PythonRun.__name__, "package_deps") + + # 2. install the package + with self.package_env.display_context(suspend=self.has_display_suspended): + self._packages = [PythonDep(p) for p in self.package_env.perform_packaging()] + self.install_python_packages( + self._packages, "package", **self.install_package_args() # type: ignore[no-untyped-call] + ) + self.handle_journal_package(self.journal, self._packages) def install_deps(self) -> None: requirements_file: RequirementsFile = self.conf["deps"] diff --git a/tests/config/cli/test_cli_env_var.py b/tests/config/cli/test_cli_env_var.py index 14bc6816..cf05c653 100644 --- a/tests/config/cli/test_cli_env_var.py +++ b/tests/config/cli/test_cli_env_var.py @@ -42,6 +42,7 @@ def test_verbose_no_test(monkeypatch: MonkeyPatch) -> None: "devenv_path": None, "env": CliEnv(), "skip_missing_interpreters": "config", + "skip_pkg_install": False, "recreate": False, "no_test": True, "package_only": False, @@ -101,6 +102,7 @@ def test_env_var_exhaustive_parallel_values( "show_config": False, "sitepackages": False, "skip_missing_interpreters": "config", + "skip_pkg_install": False, "verbose": 5, "work_dir": None, "root_dir": None, diff --git a/tests/config/cli/test_cli_ini.py b/tests/config/cli/test_cli_ini.py index 7de4820a..4e7f190f 100644 --- a/tests/config/cli/test_cli_ini.py +++ b/tests/config/cli/test_cli_ini.py @@ -88,6 +88,7 @@ def default_options(tmp_path: Path) -> Dict[str, Any]: "recreate": False, "result_json": None, "skip_missing_interpreters": "config", + "skip_pkg_install": False, "verbose": 2, "no_recreate_pkg": False, "work_dir": None, @@ -118,6 +119,7 @@ def test_ini_exhaustive_parallel_values(exhaustive_ini: Path, core_handlers: Dic "recreate": True, "result_json": None, "skip_missing_interpreters": "config", + "skip_pkg_install": False, "verbose": 5, "work_dir": None, "root_dir": None, diff --git a/tests/session/cmd/test_sequential.py b/tests/session/cmd/test_sequential.py index e60960b2..e63b4f50 100644 --- a/tests/session/cmd/test_sequential.py +++ b/tests/session/cmd/test_sequential.py @@ -363,3 +363,10 @@ def test_pkg_env_dep_remove_recreate(tox_project: ToxProjectCreator, demo_pkg_in assert ".package-py: recreate env because dependencies removed: setuptools" in result_second.out, result_second.out run_ids = [i[0][2].run_id for i in execute_calls.call_args_list] assert run_ids == ["get_requires_for_build_wheel", "build_wheel", "install_package", "_exit"] + + +def test_skip_pkg_install(tox_project: ToxProjectCreator, demo_pkg_inline: Path) -> None: + proj = tox_project({"tox.ini": "[testenv]\npackage=wheel\n"}) + result_first = proj.run("--root", str(demo_pkg_inline), "--skip-pkg-install") + result_first.assert_success() + assert result_first.out.startswith("py: skip building and installing the package"), result_first.out |