如何在 运行 之后清理有毒环境?
How to clean a tox environment after running?
我有以下 tox.ini
文件:
[tox]
envlist = flake8,py{35,36,37,38}{,-keyring}
[testenv]
usedevelop = True
install_command = pip install -U {opts} {packages}
deps =
.[test]
keyring: .[keyring]
setenv =
COVERAGE_FILE = .coverage.{envname}
commands=
pytest {toxinidir}/tests -n 4 {posargs}
[testenv:flake8]
basepython = python3
deps = flake8
commands=
flake8 src tests
[flake8]
ignore: F401,E402,E501,W605,W503
当我 运行 tox
命令时,它会创建一个 .tox
文件夹,其中包含 [=12= 的 [tox]
部分中指定的每个环境的文件夹].
我想在 运行ning tox
测试成功后自动读取这些特定文件夹,而无需手动 运行 rm -rf .tox/NAME_OF_THE_ENV
。我搜索了 tox 文档,但一无所获。
可以吗?如果是,如何?
tox
没有办法。原因是 tox
将这些环境保存为缓存:下次您 运行 tox
环境将被重用,从而节省时间。
您可以在 运行 宁 tox
与 rm -rf .tox
之后立即删除它们。
我找到了创建毒钩子的方法。此钩子 运行s shutil.rmtree
命令在测试 运行 进入环境后
在 tox_clean_env.py
文件中:
import shutil
from tox import hookimpl
@hookimpl
def tox_runtest_post(venv):
try:
shutil.rmtree(venv.path)
except Exception as e:
print("An exception occurred while removing '{}':".format(venv.path))
print(e)
我围绕这段代码创建了一个包,我只需要使用 pip
.
安装它
在我的 setup.py
中,在 setup
函数中:
entry_points={"tox": ["clean_env = tox_clean_env"]},
我知道这不是你想要的,但值得一提的是 -r / --recreate
tox 标志将 force recreation of virtual environments
我有以下 tox.ini
文件:
[tox]
envlist = flake8,py{35,36,37,38}{,-keyring}
[testenv]
usedevelop = True
install_command = pip install -U {opts} {packages}
deps =
.[test]
keyring: .[keyring]
setenv =
COVERAGE_FILE = .coverage.{envname}
commands=
pytest {toxinidir}/tests -n 4 {posargs}
[testenv:flake8]
basepython = python3
deps = flake8
commands=
flake8 src tests
[flake8]
ignore: F401,E402,E501,W605,W503
当我 运行 tox
命令时,它会创建一个 .tox
文件夹,其中包含 [=12= 的 [tox]
部分中指定的每个环境的文件夹].
我想在 运行ning tox
测试成功后自动读取这些特定文件夹,而无需手动 运行 rm -rf .tox/NAME_OF_THE_ENV
。我搜索了 tox 文档,但一无所获。
可以吗?如果是,如何?
tox
没有办法。原因是 tox
将这些环境保存为缓存:下次您 运行 tox
环境将被重用,从而节省时间。
您可以在 运行 宁 tox
与 rm -rf .tox
之后立即删除它们。
我找到了创建毒钩子的方法。此钩子 运行s shutil.rmtree
命令在测试 运行 进入环境后
在 tox_clean_env.py
文件中:
import shutil
from tox import hookimpl
@hookimpl
def tox_runtest_post(venv):
try:
shutil.rmtree(venv.path)
except Exception as e:
print("An exception occurred while removing '{}':".format(venv.path))
print(e)
我围绕这段代码创建了一个包,我只需要使用 pip
.
在我的 setup.py
中,在 setup
函数中:
entry_points={"tox": ["clean_env = tox_clean_env"]},
我知道这不是你想要的,但值得一提的是 -r / --recreate
tox 标志将 force recreation of virtual environments