我有一个用于编译静态库的 makefile。这个 makefile 有一个编译与静态库关联的单元测试套件的规则。编译测试套件后,将调用 python 脚本来运行测试并记录结果。它看起来像这样:
unit:
$(MAKE) -C cXbase/unit
python $(TESTS_RUNNER) $(UNIT_TESTS_EXEC) $(UNIT_TESTS_LOG)
我使用 Python 使测试调用可移植。现在,一切正常:测试编译和测试运行器被调用并在 Linux 和 Windows 中正确记录所有内容。只有当测试失败时,我想停止整个制作过程并返回错误。更准确地说,我不希望在单元测试失败(或多次)时无法make all
或make 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/