Travis依赖可执行文件的退出代码来确定测试是通过还是失败。 Qt Test的设计使得每个测试类都包含在自己的可执行文件中,因此在构建之后,我最终会在bin / tests文件夹中进行一系列测试。
我不想在构建脚本中对每个测试名称进行硬编码,因此我目前正在使用它来执行所有测试名称。
find ./bin/tests/ -type f -perm -a=x -exec '{}' \;
测试都正确执行但是,即使其中一个测试返回的退出代码不同于0,该行本身也会被解释为退出代码0,并且测试总是和Travis一样多。
我想要的是相当于Windows中的for %a in (bin\tests\*.exe) do %a
。
有关小例子,请参阅https://travis-ci.org/VSRonin/QtModelUtilities/jobs/362301017
答案 0 :(得分:2)
从头顶快速解决方案。
制作一个这样的剧本:
#!/bin/bash
exit=0
while IFS= read line; do
"$line" || exit=1
done <<< "$(find ./bin/tests/ -type f -perm -a=x)"
exit $exit
考虑: