2017-06-30 12 views
3

ゴール:特定のtoxコマンドを実行し、特定の一致コマンドを「just」実行するようにしました。toxファイルの反復を最小限に抑える方法

例:tox -e py35-integration

toxだけデフォルトまたはスタンドアロンpy35定義を含むpy35-統合とないのために実行する必要があります。

私は、私がしようとしていることをやろうとする2つの方法について理解しています。

  • 注:flake8コマンドは、異なるコマンド間を簡単に分離し、実行中のものを表示します。それは私が実際に走ろうとしているコマンドの兆候ではありません。

さらに、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} 

、ここでの理解は私もpy27コマンドのために定義されたものを実行せずにtox -e py27-integration実行を持つようにしたいということです。これは起こっていることではありません。代わりに、py27py27-integrationの両方が実行されます。

第二のアプローチさて、ここで私は明示的に「統合」のために実行するための独自のコマンドを使用して、「サブ」環境に隔離しています

[tox] 
envlist = {py27,py35}, {py27,py35}-integration 

[testenv] 
commands = 
    python -m testtools.run discover 

[testenv:integration] 
commands = 
    flake8 {posargs} 

しかし、残念ながら、実行されている "py27"のすべての一致パターンとまったく同じ動作があります。

私はtestenv構造体を繰り返すことを避けようとしています:[testenv:py27-integration][testenv:py35-integration]は全く同じ定義を含んでいます(繰り返しは最小限に抑えることが目標です)。

私がやろうとしていることを達成する方法があるかどうかを知りたいです。

私は私達のCIパイプラインは、特定の名前の構造を期待したテンプレートを持っているので、代替命名スキームとしてp27-integrationのようなものをやってダウンベンチャーにしたくない、とこれらの名前は、例えばそのpy27に、またTOXする慣用されているが、インストールすると理解されます2.7の仮想環境

答えて

0
[tox] 
envlist = {py27,py35}, {py27,py35}-integration 

[testenv] 
commands = 
    python -m testtools.run discover 

[integration] 
commands = 
    flake8 {posargs} 

[testenv:py27-integration] 
commands = 
    {[integration]commands} 

[testenv:py35-integration] 
commands = 
    {[integration]commands} 

あなたが一つの場所でそれらを変更するコマンド統合を変更する必要がある場合:[integration]に。

+0

ありがとうございます。だから、これは私に、私が探しているコマンドの分離を与えるように見える、それは素晴らしいです。残念ながら、私はまだそれらのサブ環境を作成しなければならない反復問題を解決しません。もし私がちょうど何らかの形で統合して*解決策になれたら、しかし、これは正しい方向への一歩です。ありがとうございました。 – idjaw