1

Travis 依靠可执行文件上的退出代码来确定测试是通过还是失败。Qt Test 的设计使得每个测试类都包含在它自己的可执行文件中,所以在构建之后,我最终会在我的 bin/tests 文件夹中得到一堆测试。

我不想在构建脚本中对每个测试名称进行硬编码,因此我目前正在使用它们来执行所有测试名称。

find ./bin/tests/ -type f -perm -a=x -exec '{}' \;

测试都正确执行,但是,即使其中一个测试返回一个不同于 0 的退出代码,该行本身也会被解释为退出代码 0,并且测试总是通过 Travis 所知道的。

我想要的是相当于for %a in (bin\tests\*.exe) do %awindows。

有关一个小示例,请参见https://travis-ci.org/VSRonin/QtModelUtilities/jobs/362301017

4

1 回答 1

2

从我的头顶快速解决。

制作这样的脚本:

#!/bin/bash

exit=0

while IFS= read line; do
    "$line" || exit=1
done <<< "$(find ./bin/tests/ -type f -perm -a=x)"

exit $exit

注意事项:

  • 如果文件名包含空格,它将不起作用(应该通过引用来修复)
  • 它会在第一个失败的测试上停止并且不会继续(可能是你需要的)
  • 如果除了文件之外还有 Dirs,它将尝试执行它们并且会失败。
于 2018-04-05T07:35:30.260 回答