Travis CI Qt测试集成

时间:2018-04-05 07:29:05

标签: bash travis-ci qttest

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

1 个答案:

答案 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

考虑:

  • 如果文件的名称包含空格,则无法使用(只需引用即可修复)
  • 它会在第一次失败并且不会继续的测试时停止(可能是你需要的)
  • 如果除了文件之外还有Dirs,它将尝试执行它们并将失败。
相关问题