匹配 Google 测试的 ASSERT_DEATH 正则表达式中的行尾
Matching end of line in Google Test's ASSERT_DEATH regex
使用 Google 测试断言包装器的单元测试,可以选择在错误消息中包含 __FILE__
和 __LINE__
信息。
void My_Assert (bool test)
{
#if USE_FILE_MACRO
std::cerr << "fatal error: false in file __FILE__ at line __LINE__\n"
#else
std::cerr << "fatal error: false\n"
#endif
throw std::runtime_error ("Fatal error");
}
我想确保此测试文件和行 不 包括在内,所以我只希望 ASSERT_DEATH
在 "fatal error: false" 上匹配,而不是"fatal error: false in file my_file.cpp at line 42"。
这就是我的开头:
ASSERT_DEATH( try {My_Assert (false);} catch (...){exit(1);}, "fatal error: false" );
我尝试添加一个美元符号来匹配行尾,但在 "fatal error:false" 上不匹配。我尝试了 \s
、[:space:]
的不同变体,但没有成功。我可能误解了文档,美元符号与 gtest 正则表达式中的行尾不匹配:我无法判断 advanced guide here 中的语句 "matches the end of a string (not that of each line)" 是否仅适用于 Windows正则表达式或所有系统。我正在使用 LLVM 版本 7.3.0 (clang-703.0.31) 为 OSX 编译。
看来你需要在false
之后考虑一个换行符,使用false\n
。
如果您需要匹配行尾和字符串末尾的 false
,请使用 ($|\n)
。
使用 Google 测试断言包装器的单元测试,可以选择在错误消息中包含 __FILE__
和 __LINE__
信息。
void My_Assert (bool test)
{
#if USE_FILE_MACRO
std::cerr << "fatal error: false in file __FILE__ at line __LINE__\n"
#else
std::cerr << "fatal error: false\n"
#endif
throw std::runtime_error ("Fatal error");
}
我想确保此测试文件和行 不 包括在内,所以我只希望 ASSERT_DEATH
在 "fatal error: false" 上匹配,而不是"fatal error: false in file my_file.cpp at line 42"。
这就是我的开头:
ASSERT_DEATH( try {My_Assert (false);} catch (...){exit(1);}, "fatal error: false" );
我尝试添加一个美元符号来匹配行尾,但在 "fatal error:false" 上不匹配。我尝试了 \s
、[:space:]
的不同变体,但没有成功。我可能误解了文档,美元符号与 gtest 正则表达式中的行尾不匹配:我无法判断 advanced guide here 中的语句 "matches the end of a string (not that of each line)" 是否仅适用于 Windows正则表达式或所有系统。我正在使用 LLVM 版本 7.3.0 (clang-703.0.31) 为 OSX 编译。
看来你需要在false
之后考虑一个换行符,使用false\n
。
如果您需要匹配行尾和字符串末尾的 false
,请使用 ($|\n)
。