summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernát Gábor <bgabor8@bloomberg.net>2021-01-08 18:02:01 +0000
committerBernát Gábor <bgabor8@bloomberg.net>2021-01-08 18:42:58 +0000
commit096f6a8184f4846163fea13d34ceafc76a99119e (patch)
treeb732e0d2eb404935852fcb041d0b40098d1f169f
parentd7f533571f5ac1723f438271ee35d4955869aa07 (diff)
downloadtox-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.yml52
-rw-r--r--src/tox/execute/local_sub_process/__init__.py2
-rw-r--r--src/tox/session/cmd/run/common.py12
-rw-r--r--src/tox/tox_env/package.py12
-rw-r--r--src/tox/tox_env/python/runner.py31
-rw-r--r--tests/config/cli/test_cli_env_var.py2
-rw-r--r--tests/config/cli/test_cli_ini.py2
-rw-r--r--tests/session/cmd/test_sequential.py7
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