有没有办法让 tox 运行匹配名称或按组的环境?

问题描述

我有一个带有多个环境的 tox.ini,如下例所示:

[tox]
envlist =
    py37,py38,py39,lint-{foo,bar,baz}
...

对于我的几个用户来说,一次只有其中的一个子集有用,通常是所有 py3所有 lint- 个。

是否有一种语法可以代替 tox -e py37,py39,而是说“运行所有与 tox -a 匹配的环境(通过 py3 找到的 tox 的子集)”?

或者,有没有办法对 envs 进行分组,以便人们可以说“运行 test envs”或“运行 cleanup envs”而不会失去调用 tox 的能力运行它们?

我可以编写一个单独的脚本来处理这个问题,但我正在寻找一种内置的匹配方式。

解决方法

最接近按名称过滤 tox 环境的内置方法是 TOX_SKIP_ENV 环境变量,tox 将其用作 re.match(参见 source)与每个环境的模式名称,跳过匹配的那些。

因此,例如,仅运行 lint- 前缀环境,您可以:

env TOX_SKIP_ENV='^(?!lint-)' tox

或者,跳过名称中任意位置带有 pybar 的所有环境...

env TOX_SKIP_ENV='.*?(py|bar)' tox

一个 (currently unmaintained) tox 插件 tox-tags,旨在大致提供我想到的标记/分组功能。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...