我一直在阅读CMake tutorial。
“安装和测试(步骤3)”部分包含以下测试脚本:
add_test (TutorialComp25 Tutorial 25)
set_tests_properties (TutorialComp25
PROPERTIES PASS_REGULAR_EXPRESSION "25 is 5")
根据CMake文档,add_test
很简单,但我不遵循set_tests_properties
的工作原理;特别是这个“25是5”。
听起来像是
if (INPUT_ARG is OUTPUT_RESULT)
test passed
else
test failed
这是对的吗?
答案 0 :(得分:1)
来自PASS_REGULAR_EXPRESSION
的文档:
输出必须与此正则表达式匹配才能传递测试。
如果设置,将根据指定的正则表达式检查测试输出,并且至少有一个正则表达式必须匹配,否则测试将失败。
教程示例的第一个测试(称为TutorialRuns
)没有设置任何属性。这意味着,如果Tutorial
exe在完成时返回0
,并且已经通过参数25
,则CTest会将测试视为已通过。
在第二次测试中,通话
set_tests_properties (TutorialComp25 PROPERTIES PASS_REGULAR_EXPRESSION "25 is 5")
表示运行带有Tutorial
arg的25
exe的控制台输出必须包含要被视为通过的字符串"25 is 5"
。在这种情况下,返回值被忽略。由于测试exe输出:
The square root of 25 is 5
它过去了。
请记住,这是正在应用的正则表达式。如果将PASS_REGULAR_EXPRESSION
设置为例如"^25 is 5"
,测试会失败,因为这是在输出的开始处查找短语25 is 5
。在string
命令的文档中有一个关于CMake正则表达式语法的简要说明。