在automake中,您可以使用TESTS
变量添加测试,但这些需要是自包含的测试。我需要一种方法来调用提供参数的标准测试驱动程序。有没有办法做到这一点,或者在测试期间调用标准的makefile目标?
例如,我的一个目标需要运行:
driver.sh suite-a
另一次我需要跑:
driver.sh suite-b
每次只需分配给TESTS
时,必须添加另一个bash脚本包装器是一件麻烦事。因此,我需要使用命令行选项添加到TESTS
,或者我需要一种方法来添加make目标作为测试本身。
我该怎么做?
答案 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