From 6750883ecb9c81dcf7ae3f81c14066f9c5862628 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bern=C3=A1t=20G=C3=A1bor?= Date: Thu, 13 Jan 2022 09:55:34 +0000 Subject: [PATCH] Fix devenv not respecting specified path MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Bernát Gábor --- .github/workflows/check.yml | 9 +-------- docs/changelog/2318.bugfix.rst | 1 + src/tox/session/cmd/devenv.py | 13 ++++++++----- tests/session/cmd/test_devenv.py | 6 +++++- 4 files changed, 15 insertions(+), 14 deletions(-) create mode 100644 docs/changelog/2318.bugfix.rst diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index dbd19061a..25782875f 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -10,13 +10,6 @@ concurrency: cancel-in-progress: true jobs: - pre_commit: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 - - uses: pre-commit/action@v2.0.3 - test: name: test ${{ matrix.py }} on ${{ matrix.os }} runs-on: ${{ matrix.os }} @@ -110,7 +103,7 @@ jobs: publish: if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') - needs: [check, test, pre_commit] + needs: [check, test] runs-on: ubuntu-20.04 steps: - name: Setup python to build package diff --git a/docs/changelog/2318.bugfix.rst b/docs/changelog/2318.bugfix.rst new file mode 100644 index 000000000..0b63afd45 --- /dev/null +++ b/docs/changelog/2318.bugfix.rst @@ -0,0 +1 @@ +``devenv`` command does not respect specified path - by :user:`gaborbernat`. diff --git a/src/tox/session/cmd/devenv.py b/src/tox/session/cmd/devenv.py index b9188ab48..ff98180ac 100644 --- a/src/tox/session/cmd/devenv.py +++ b/src/tox/session/cmd/devenv.py @@ -1,5 +1,6 @@ from __future__ import annotations +import logging from pathlib import Path from tox.config.cli.parser import ToxParser @@ -23,12 +24,12 @@ def tox_add_option(parser: ToxParser) -> None: def devenv(state: State) -> int: opt = state.conf.options - opt.skip_missing_interpreters = False # the target python must exist opt.no_test = False # do not run the test suite opt.package_only = False opt.install_pkg = None # no explicit packages to install opt.skip_pkg_install = False # always install a package in this case + opt.no_test = True # do not run the test phase state.envs.ensure_only_run_env_is_active() envs = list(state.envs.iter()) @@ -38,7 +39,9 @@ def devenv(state: State) -> int: usedevelop=True, # dev environments must be of type dev env_dir=Path(opt.devenv_path), # move it in source ) - - opt.no_test = True # do not run the test phase - state.conf.get_env(envs[0], loaders=[loader]) - return run_sequential(state) + tox_env = state.envs[envs[0]] + tox_env.conf.loaders.insert(0, loader) + result = run_sequential(state) + if result == 0: + logging.warning(f"created development environment under {tox_env.conf['env_dir']}") + return result diff --git a/tests/session/cmd/test_devenv.py b/tests/session/cmd/test_devenv.py index 42a3090d9..aba3e261a 100644 --- a/tests/session/cmd/test_devenv.py +++ b/tests/session/cmd/test_devenv.py @@ -15,8 +15,12 @@ def test_devenv_fail_multiple_target(tox_project: ToxProjectCreator) -> None: @pytest.mark.integration() def test_devenv_ok(tox_project: ToxProjectCreator, enable_pip_pypi_access: str | None) -> None: # noqa: U100 content = {"setup.py": "from setuptools import setup\nsetup(name='demo', version='1.0')"} - outcome = tox_project(content).run("d", "-e", "py") + project = tox_project(content) + outcome = project.run("d", "-e", "py") + outcome.assert_success() + assert (project.path / "venv").exists() + assert f"created development environment under {project.path / 'venv'}" in outcome.out def test_devenv_help(tox_project: ToxProjectCreator) -> None: