makefile - 如果单元测试失败,则 make 失败

标签 makefile return-value gnu-make

我有一个用于编译静态库的 makefile。这个 makefile 有一个编译与静态库关联的单元测试套件的规则。编译测试套件后,将调用 python 脚本来运行测试并记录结果。它看起来像这样:

unit:
    $(MAKE) -C cXbase/unit
    python $(TESTS_RUNNER) $(UNIT_TESTS_EXEC) $(UNIT_TESTS_LOG)

我使用 Python 使测试调用可移植。现在,一切正常:测试编译和测试运行器被调用并在 Linux 和 Windows 中正确记录所有内容。只有当测试失败时,我想停止整个制作过程并返回错误。更准确地说,我不希望在单元测试失败(或多次)时无法make allmake unit

如果单元测试失败,Python 脚本会返回特定的退出代码。我希望能够以可移植的方式捕获它,如果捕获到该退出代码,则 make 会失败。

对于如何做到这一点,您有什么建议吗?我在其他地方没有发现任何令人信服或可移植的东西。

谢谢

最佳答案

看来解决方案比我想象的要简单得多。 python 退出代码直接反射(reflect)在 make 它是退出代码。换句话说,如果脚本失败(退出代码不是 0),make 将其视为命令错误并停止。

我在测试失败时处理 Python 脚本退出代码时出错,这对我隐瞒了这一点。现已解决,完美运行。

我在这里发现了这个:Handling exit code returned by python in shell script

关于makefile - 如果单元测试失败,则 make 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43957679/

相关文章:

sql - PLSQL Insert into with 子查询和返回子句

makefile - 使用 make,如何在程序集项目中使用 .c 文件防止这种行为?

makefile - 生成文件中的 Shell 条件

makefile - 制作 : execute 2nd rule only if 1st changed file

makefile - 在makefile中使用g++和-MMD自动生成依赖

c++ - 我们写return 0的时候谁收到了值0

c++ - gnu make -j8 不并行运行

php - 使用 jQuery AJAX 从 PHP 返回多个值

Makefile 动态变量作为先决条件

linux - 当我编译时,我通过了配置但是当我是 'making'时遇到错误