Автоматически выбранная платформа (или другое) состояние в разделах tox - PullRequest
1 голос
/ 16 июня 2020

Я хочу специально запустить определенный раздел tox, который затем автоматически определяет платформу c. Пример фрагмента кода ниже отлично работает, если я просто запустил tox -e ALL. Тогда условие платформы красиво выделяет правильную платформу.

Однако я хочу указать только и запустить специальный раздел c, например, что-то вроде tox -e other (не tox -e other-win, other-linux), а затем имеет tox автоматический выбор соответствующей платформы (или любого другого) условия.

Я не знаю, возможен ли этот способ настройки условий в tox, или если я что-то упустил.

[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}

1 Ответ

0 голосов
/ 29 июня 2020

Вы можете попробовать tox-factor плагин .

Например:

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

Это дает следующие четыре среды:

$ 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):

$ 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 :)

Ссылки :

...