需要命令行参数的automake测试

时间:2012-03-07 08:37:03

标签: automake

在automake中,您可以使用TESTS变量添加测试,但这些需要是自包含的测试。我需要一种方法来调用提供参数的标准测试驱动程序。有没有办法做到这一点,或者在测试期间调用标准的makefile目标?

例如,我的一个目标需要运行:

driver.sh suite-a

另一次我需要跑:

driver.sh suite-b

每次只需分配给TESTS时,必须添加另一个bash脚本包装器是一件麻烦事。因此,我需要使用命令行选项添加到TESTS,或者我需要一种方法来添加make目标作为测试本身。

我该怎么做?

3 个答案:

答案 0 :(得分: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

或者您可能更喜欢使用基于名称套件的meta-warper:

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 $?

答案 1 :(得分:2)

如果所有您的测试必须通过driver.sh,那么您可以使用TESTS_ENVIRONMENT

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

答案 2 :(得分:0)

为避免编写许多bash脚本包装程序,可以编写一个常见的包装程序脚本并为其创建几个符号链接。该脚本可以检查其名称,并负责添加命令行参数等。

Makefile.am:

TESTS = test-foo.sh test-bar.sh

然后例如 test-common.sh 脚本:

test_name=`basename -s .sh $0`
case $test_name in
    'test-foo') ./my-tester.py foo
        ;;
    'test-foo') ./my-tester.py bar
        ;;
esac

要添加新测试,您将更新 test-common.sh 并添加新的符号链接:

ln -s test-common.sh test-foo.sh
ln -s test-common.sh test-bar.sh