Travis CI Qt 测试集成
Travis CI Qt Test Integration
Travis 依靠可执行文件的退出代码来确定测试是通过还是失败。 Qt Test 的设计使得每个测试 class 都包含在它自己的可执行文件中,因此在构建之后,我最终在我的 bin/tests 文件夹中得到了一堆测试。
我不想在我的构建脚本中对每个测试名称进行硬编码,所以我目前正在使用它们来执行所有测试。
find ./bin/tests/ -type f -perm -a=x -exec '{}' \;
所有测试都正确执行,但是,即使其中一个测试 returns 的退出代码不同于 0,该行本身也会被解释为退出代码 0,并且测试总是通过特拉维斯可以告诉。
我想要的是 windows 中的 for %a in (bin\tests\*.exe) do %a
的等价物。
有关小示例,请参阅 https://travis-ci.org/VSRonin/QtModelUtilities/jobs/362301017
我头脑中的快速解决方案。
编写如下脚本:
#!/bin/bash
exit=0
while IFS= read line; do
"$line" || exit=1
done <<< "$(find ./bin/tests/ -type f -perm -a=x)"
exit $exit
注意事项:
如果文件名包含空格,它将不起作用(应该用引号修复)
它将在第一个失败的测试中停止并且不会继续(可能是你需要的)
如果除文件外还有目录,它将尝试执行它们但会失败。
Travis 依靠可执行文件的退出代码来确定测试是通过还是失败。 Qt Test 的设计使得每个测试 class 都包含在它自己的可执行文件中,因此在构建之后,我最终在我的 bin/tests 文件夹中得到了一堆测试。
我不想在我的构建脚本中对每个测试名称进行硬编码,所以我目前正在使用它们来执行所有测试。
find ./bin/tests/ -type f -perm -a=x -exec '{}' \;
所有测试都正确执行,但是,即使其中一个测试 returns 的退出代码不同于 0,该行本身也会被解释为退出代码 0,并且测试总是通过特拉维斯可以告诉。
我想要的是 windows 中的 for %a in (bin\tests\*.exe) do %a
的等价物。
有关小示例,请参阅 https://travis-ci.org/VSRonin/QtModelUtilities/jobs/362301017
我头脑中的快速解决方案。
编写如下脚本:
#!/bin/bash
exit=0
while IFS= read line; do
"$line" || exit=1
done <<< "$(find ./bin/tests/ -type f -perm -a=x)"
exit $exit
注意事项:
如果文件名包含空格,它将不起作用(应该用引号修复)它将在第一个失败的测试中停止并且不会继续(可能是你需要的)如果除文件外还有目录,它将尝试执行它们但会失败。