Testing 在CMake中传递正则表达式

Testing 在CMake中传递正则表达式,testing,cmake,Testing,Cmake,我一直在看报纸 “安装和测试(步骤3)”部分包含以下测试脚本: add_test (TutorialComp25 Tutorial 25) set_tests_properties (TutorialComp25 PROPERTIES PASS_REGULAR_EXPRESSION "25 is 5") 根据CMake文档,add_test很简单,但我不知道它是如何工作的;尤其是这个“25是5” 听起来像 if (INPUT_ARG is OUTPUT_RESULT) test pa

我一直在看报纸

“安装和测试(步骤3)”部分包含以下测试脚本:

add_test (TutorialComp25 Tutorial 25)
set_tests_properties (TutorialComp25 
  PROPERTIES PASS_REGULAR_EXPRESSION "25 is 5")
根据CMake文档,
add_test
很简单,但我不知道它是如何工作的;尤其是这个“25是5”

听起来像

if (INPUT_ARG is OUTPUT_RESULT)
  test passed
else
  test failed
是否正确?

来自以下文件:

输出必须与此正则表达式匹配,测试才能通过

如果设置,测试输出将根据指定的正则表达式进行检查,并且至少有一个正则表达式必须匹配,否则测试将失败

教程示例的第一个测试(称为
TutorialRuns
)没有设置任何属性。这意味着,如果
Tutorial
exe在完成时返回
0
,并且已通过参数
25
,则CTest将视测试为已通过

在第二个测试中,调用

set_tests_properties (TutorialComp25 PROPERTIES PASS_REGULAR_EXPRESSION "25 is 5")
表示运行参数为
25
Tutorial
exe的控制台输出必须包含字符串
“25是5”
,才能视为通过。在这种情况下,将忽略返回值。由于测试exe输出:

The square root of 25 is 5
它过去了

记住,这是一个正在应用的正则表达式。如果将
PASS\u正则表达式设置为例如
“^25为5”
,测试将失败,因为这是在输出的开始处查找短语
25为5
。在该命令的文档中有对CMake的regex语法的简要描述