问题描述
我有一个带有多个环境的 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
或者,跳过名称中任意位置带有 py
或 bar
的所有环境...
env TOX_SKIP_ENV='.*?(py|bar)' tox
有一个 (currently unmaintained) tox 插件 tox-tags,旨在大致提供我想到的标记/分组功能。