2012-03-07 23 views
3

在automake中,您可以使用TESTS變量添加測試,但這些測試需要是自包含測試。我需要一種方法來調用提供參數的標準測試驅動程序。有沒有辦法做到這一點,或者在測試過程中調用標準的makefile目標?需要命令行參數的automake測試

例如,我的目標之一需要運行:

driver.sh suite-a 

而其他時間我需要運行:

driver.sh suite-b 

這是一個麻煩,不得不添加的每個其他的bash腳本包裝時間只是分配給TESTS。因此,無論我需要添加到命令行選項TESTS,或者我需要一種方法來添加make目標作爲測試本身。

我該怎麼做?

回答

2

如果全部您的測試必須通過driver.sh運行,您可以使用TESTS_ENVIRONMENT

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

謝謝,但不幸的是,測試混合。我想我可以創建一個單獨的makefile,但是我也可以創建一個新的包裝器。 – 2012-03-10 12:51:45

+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 2012-03-10 13:06:51

3

Gnu Documentation,你可以使用:

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! – 2016-10-25 14:10:11