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

Lau*_*ZZA 4 tap autotools

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

  TAP version 13
  1..3
  ok 1
  not ok 2
  ok 3
Run Code Online (Sandbox Code Playgroud)

调用该程序test_runner并返回0.

Makefile.am目录如下:

  TESTS = test_runner
  check_PROGRAMS = test_runner
  test_runner_SOURCES = main.cpp
Run Code Online (Sandbox Code Playgroud)

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

  # TOTAL: 1
  # PASS:  1
  # SKIP:  0
  # XFAIL: 0
  # FAIL:  0
  # XPASS: 0
  # ERROR: 0
Run Code Online (Sandbox Code Playgroud)

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

automake版本是1.13.3,autoconf版本是 2.69.

Dan*_*lKO 5

你应该在你的configure.ac中有这个:

AC_REQUIRE_AUX_FILE([tap-driver.sh])
...
AC_PROG_AWK
Run Code Online (Sandbox Code Playgroud)

这在你的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
Run Code Online (Sandbox Code Playgroud)

LOG_DRIVER变量是什么使得它调用tap-driver.sh脚本,否则使用默认的通用测试车手.您可以选择为每个文件扩展名定义特定的驱动程序(例如,一个用于.py,另一个用于.sh等),但在这种情况下,单个全局LOG_DRIVER就足够了.

为automake 1.15更新

正如用户ecerulm所指出的,tap-driver.pl正在被弃用,所以我改变了答案只考虑tap-driver.sh.