2012-03-07 6 views
3

automakeでは、TESTS変数を使用してテストを追加できますが、これらは自己完結型のテストである必要があります。私は引数を提供する標準のテストドライバを呼び出す方法が必要です。これを行う方法や、テスト中に標準のmakefileターゲットを呼び出す方法はありますか?コマンドライン引数を必要とするautomakeテスト

例えば、私の目標の一つは、実行する必要がある:

driver.sh suite-a 

そして、私は実行する必要が別の時間:

driver.sh suite-b 

それぞれ別のbashスクリプトラッパーを追加する必要が面倒ですちょうどTESTSに割り当てる時間。したがって、コマンドラインオプションを使用してTESTSに追加するか、makeターゲットをテスト自体として追加する方法が必要です。

どうすればいいですか?

答えて

2

すべてテストがdriver.shまで実行される必要がある場合は、TESTS_ENVIRONMENTを使用できます。 Gnu Documentationから

TESTS_ENVIRONMENT = driver.sh 
TESTS = suite-a suite-b 
+0

おかげで、残念ながらテストが混合されている名前のスイートに基づくメタ整経機の使用を好むかもしれません。私は別のメイクファイルを作成することができますが、新しいラッパーも作成することができます。 –

+0

テストの名前に基づいて、適切なドライバにディスパッチする(または直接テストを呼び出す)メタドライバが必要なことがあります。これは私がここでやっていることです:http://git.lrde.epita.fr/?p=spot.git;a=blob;f=wrap/python/tests/Makefile.amこのhttp: //git.lrde.epita.fr/?p=spot.git;a=blob;f=wrap/python/tests/run.in – adl

3

、あなたが使用することができます。

TESTS = suite-a suite-b 
LOG_COMPILER = driver.sh 

あなたがテストのために複数のスクリプトを持っているしたい場合は、あなたがトリックを使用することができます。

TESTS = suite-a.drv1 suite-b.drv1 suite-c.drv2 suite-d.drv2 
TEST_EXTENSIONS = .drv1 .drv2 
drv1_LOG_COMPILER = driver1.sh 
drv2_LOG_COMPILER = driver2.sh 

はこれが実行されます:

driver1.sh suite-a.drv1 
driver1.sh suite-b.drv1 
driver2.sh suite-c.drv2 
driver2.sh suite-d.drv2 

または

TESTS = suite-a suite-b suite-c suite-d 
LOG_COMPILER = driver-warper.sh 

非常にシンプルかつ基本的な例::

driver-warper.sh: 
case $1 in 
    'suite-a') ./driver1.sh suite-a 
    ;; 
    'suite-b') ./driver1.sh suite-b 
    ;; 
    'suite-c') ./driver2.sh suite-c 
    ;; 
    'suite-d') ./driver2.sh suite-d 
    ;; 
esac 
exit $? 
+0

'TEST_ENVIRONMENT'とは異なり、この' LOG_COMPILER'は '.sh'スクリプト'TESTS'の各要素で呼び出される1つの引数しか期待しない単純なものです(実際にはドライバではありません)。これは、スクリプトを使ってさまざまなテストファイルをすばやく実行するための素晴らしい方法でしたが、それぞれに小さなラッパーを繰り返す必要はありませんでした。 +1! –

関連する問題