【问题标题】:Have make fail if unit tests fail如果单元测试失败,则 make 失败
【发布时间】:2017-05-13 20:26:38
【问题描述】:

我有一个用于编译静态库的 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 将中止。如果这还不够好,我们必须捕获退出状态在命令中,问题是“便携性如何?”我知道如何捕获和在 bash 中测试它;你对其他贝壳感兴趣吗?
  • @Beta 我希望它在 bash 和 cmd (Windows) 中工作
  • 如果退出状态不是特殊值,你想要什么?
  • @Beta 那么make可以照常进行,所有测试都通过了。

标签: makefile return-value gnu-make


【解决方案1】:

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

测试失败时我的 Python 脚本退出代码处理出现错误,这对我隐藏了这一点。现在解决了,效果很好。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多