CMake中的PASS_REGULAR_EXPRESSION

时间:2015-03-18 21:14:43

标签: testing cmake

我一直在阅读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

这是对的吗?

1 个答案:

答案 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正则表达式语法的简要说明。