如何制作`make check`进程TAP输出?

时间:2013-12-07 10:36:28

标签: autotools tap

我有一个C ++程序,可以生成我认为最小的TAP输出,如下所示:

  TAP version 13
  1..3
  ok 1
  not ok 2
  ok 3

此程序名为test_runner并返回0.

目录中的Makefile.am如下:

  TESTS = test_runner
  check_PROGRAMS = test_runner
  test_runner_SOURCES = main.cpp

现在,当我执行make check时,摘要输出如下:

  # TOTAL: 1
  # PASS:  1
  # SKIP:  0
  # XFAIL: 0
  # FAIL:  0
  # XPASS: 0
  # ERROR: 0

我的问题是:make check是否应该检查我的程序的TAP输出(因为我希望获得2次成功和1次失败),如果是这样,我做错了什么?

automake版本为1.13.3autoconf版本为2.69

1 个答案:

答案 0 :(得分:6)

您应该在 configure.ac

中使用此功能
AC_REQUIRE_AUX_FILE([tap-driver.sh])
...
AC_PROG_AWK

这在你的 Makefile.am

check_PROGRAMS = test_runner
test_runner_SOURCES = main.cpp

LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) \
              $(top_srcdir)/tap-driver.sh

TESTS = test_runner

LOG_DRIVER变量使其调用tap-driver.sh脚本,否则使用默认的通用测试驱动程序。您可以选择define specific drivers for each file extension(例如,一个用于.py,另一个用于.sh等),但在这种情况下,单个全局LOG_DRIVER就足够了。

更新automake 1.15

正如用户 ecerulm 指出的那样,tap-driver.pl已被弃用,因此我将答案更改为仅考虑tap-driver.sh