如何最大程度地减少 tox 文件中的重复
How to minimize repetition in tox file
目标: 成功执行特定的 tox 命令,并运行 "just" 特定的匹配命令。
示例:tox -e py35-integration
tox
应该 运行 仅用于 py35 集成, 不 包括 default 或独立 py35
定义。
我尝试了两种不同的方法,据我所知,这是两种方法来尝试做我想做的事情。
- 请注意
flake8
命令是为了轻松区分不同的命令,并向我指示什么是 运行ning。这并不是我真正尝试执行的命令的指示 运行。
此外,ini文件只显示相关部分。
第一种方法
[tox]
envlist = {py27,py35}, {py27,py35}-integration
[testenv]
commands =
py27: python -m testtools.run discover
py35: python -m testtools.run discover
py27-integration: flake8 {posargs}
py35-integration: flake8 {posargs}
通过这种方法,这里的理解是我想要 tox -e py27-integration
运行 而不是 运行ning 为 py27
命令定义的内容。这不是正在发生的事情。相反,它将 运行 同时 py27
和 py27-integration
。
第二种方法
[tox]
envlist = {py27,py35}, {py27,py35}-integration
[testenv]
commands =
python -m testtools.run discover
[testenv:integration]
commands =
flake8 {posargs}
现在,我在这里明确隔离了一个 "sub" 环境,它有自己的命令 运行 for "integration"。
然而,不幸的是,我遇到了 "py27" 的所有匹配模式正在执行的完全相同的行为。
我试图避免重复 testenv 结构,如:[testenv:py27-integration]
和 [testenv:py35-integration]
,它们包含完全相同的定义(目标是尽量减少重复)。
我很想知道是否有办法实现我想要做的事情。
我不想冒险做类似 p27-integration
的事情作为替代命名方案,因为我们的 CI 管道具有需要特定名称结构的模板,并且这些名称对于 tox 来说也是惯用的,其中 py27
例如被理解为安装 2.7 虚拟环境。
已更新
[tox]
minversion = 3.15
envlist = {py27,py35}, {py27,py35}-integration
[testenv]
commands =
python -m testtools.run discover
[testenv:py{27,35}-integration]
commands =
flake8 {posargs}
目标: 成功执行特定的 tox 命令,并运行 "just" 特定的匹配命令。
示例:tox -e py35-integration
tox
应该 运行 仅用于 py35 集成, 不 包括 default 或独立 py35
定义。
我尝试了两种不同的方法,据我所知,这是两种方法来尝试做我想做的事情。
- 请注意
flake8
命令是为了轻松区分不同的命令,并向我指示什么是 运行ning。这并不是我真正尝试执行的命令的指示 运行。
此外,ini文件只显示相关部分。
第一种方法
[tox]
envlist = {py27,py35}, {py27,py35}-integration
[testenv]
commands =
py27: python -m testtools.run discover
py35: python -m testtools.run discover
py27-integration: flake8 {posargs}
py35-integration: flake8 {posargs}
通过这种方法,这里的理解是我想要 tox -e py27-integration
运行 而不是 运行ning 为 py27
命令定义的内容。这不是正在发生的事情。相反,它将 运行 同时 py27
和 py27-integration
。
第二种方法
[tox]
envlist = {py27,py35}, {py27,py35}-integration
[testenv]
commands =
python -m testtools.run discover
[testenv:integration]
commands =
flake8 {posargs}
现在,我在这里明确隔离了一个 "sub" 环境,它有自己的命令 运行 for "integration"。
然而,不幸的是,我遇到了 "py27" 的所有匹配模式正在执行的完全相同的行为。
我试图避免重复 testenv 结构,如:[testenv:py27-integration]
和 [testenv:py35-integration]
,它们包含完全相同的定义(目标是尽量减少重复)。
我很想知道是否有办法实现我想要做的事情。
我不想冒险做类似 p27-integration
的事情作为替代命名方案,因为我们的 CI 管道具有需要特定名称结构的模板,并且这些名称对于 tox 来说也是惯用的,其中 py27
例如被理解为安装 2.7 虚拟环境。
已更新
[tox]
minversion = 3.15
envlist = {py27,py35}, {py27,py35}-integration
[testenv]
commands =
python -m testtools.run discover
[testenv:py{27,35}-integration]
commands =
flake8 {posargs}