2012-03-07 17 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