在 tox 部分自动选择平台(或其他)条件

Auto-chose platform (or other) condition in tox sections(在 tox 部分自动选择平台(或其他)条件)
本文介绍了在 tox 部分自动选择平台(或其他)条件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我想专门运行某个 tox 部分,然后在特定平台上自动决定.如果我只运行 tox -e ALL,下面的示例代码片段可以正常工作.然后平台条件很好地划分出正确的平台.

I want to specifically run a certain tox section which then auto-decides on the specific platform. The example code-snippet below works fine if I just ran tox -e ALL. Then the platform condition nicely sects out the correct platform.

但是,我想处理并运行特定部分,例如 tox -e other (而不是 tox -e other-win,other-linux) 然后让 tox 自动选择相应的平台(或任何其他)条件.

However, I want to only adress and run a specific section like for instance something like tox -e other (not tox -e other-win, other-linux) and then have tox auto-chosing the corresponding platform (or any other) condition.

我不知道这种在 tox 中设置条件的方式是不是不可能,还是我遗漏了什么.

I don't know if this way of setting up conditions in tox is not possible, or if I'm missing something.

[tox]
skipsdist = true

[testenv:systest-{win, linux}]
platform =
    linux: linux
    win: win|msys

whitelist_externals = 
    win: cmd
    linux: sh

commands =
    win: cmd /r echo {env:OS}
    linux: sh -c echo {env:OS}

[testenv:other-{win, linux}]
platform =
    linux: linux
    win: win|msys

whitelist_externals = 
    win: cmd
    linux: sh

commands =
    win: cmd /r echo {env:OS}
    linux: sh -c echo {env:OS}

推荐答案

你可以给 tox-factor插件试一试.

You could give the tox-factor plugin a try.

例如:

tox.ini

[tox]
envlist =
    alpha-{redmond,tux}
    bravo-{redmond,tux}
requires =
    tox-factor
skipsdist = true

[testenv]
commands =
    python -c 'import sys; print("platform", sys.platform)'
platform =
    redmond: win32
    tux: linux

这给出了以下四种环境:

This gives the following four environments:

$ tox --listenvs
alpha-redmond
alpha-tux
bravo-redmond
bravo-tux

可以根据因素来选择:

$ tox --listenvs --factor tux
alpha-tux
bravo-tux
$ tox --listenvs --factor alpha
alpha-redmond
alpha-tux

然后像这样运行(例如在 Linux 平台上):

And then run like this (for example on a Linux platform):

$ tox --factor bravo
bravo-tux run-test-pre: PYTHONHASHSEED='1770792708'
bravo-tux run-test: commands[0] | python -c 'import sys; print("platform", sys.platform)'
platform linux
________________________________________________ summary ________________________________________________
SKIPPED:  bravo-redmond: platform mismatch ('linux' does not match 'win32')
  bravo-tux: commands succeeded
  congratulations :)

参考文献:

  • https://github.com/tox-dev/tox/issues/1338
  • https://pypi.org/project/tox-factor/

这篇关于在 tox 部分自动选择平台(或其他)条件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

Multiprocessing on Windows breaks(Windows 上的多处理中断)
How to use a generator as an iterable with Multiprocessing map function(如何将生成器用作具有多处理映射功能的可迭代对象)
read multiple files using multiprocessing(使用多处理读取多个文件)
Why does importing module in #39;__main__#39; not allow multiprocessig to use module?(为什么在__main__中导入模块不允许multiprocessig使用模块?)
Trouble using a lock with multiprocessing.Pool: pickling error(使用带有 multiprocessing.Pool 的锁时遇到问题:酸洗错误)
Python sharing a dictionary between parallel processes(Python 在并行进程之间共享字典)