2016-08-05 12 views
1

エラーメッセージに__FILE____LINE__の情報をオプションとして含めることができるアサルトラッパーのユニットテスト用にGoogleテストを使用します。Google TestのASSERT_DEATH正規表現の末尾に一致する

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は「致命的なエラー:偽」に一致させたい、ではない「致命的なエラー:ファイルMY_FILEで偽。 cpp at 42行目」を参照してください。 これは私が始めているものです:私は、行の末尾に一致するようにドル記号を追加しようとした

ASSERT_DEATH(try {My_Assert (false);} catch (...){exit(1);}, "fatal error: false"); 

、それは「致命的なエラー:偽」に一致していません。私は\s[:space:]の違う種類を試してみました。私は、ドキュメントを誤解している可能性があり、ドル記号はgtestの正規表現の行の終わりと一致しません:文が "文字列の終わりに一致する(各行の文字列ではない)"がadvanced guide hereにのみ適用されるかどうかはわかりませんWindows正規表現またはすべてのシステム。私は、LLVMバージョン7.3.0(clang-703.0.31)を使ってOSX用にコンパイルしています。

+0

残念ながら、情報が不十分です。 1. [MCVE]を提供します。2.使用するターゲットプラットフォームとコンパイラのバージョンについていくつかの詳細を記入します。あなたの質問を改善してください!ところで、第1位でゼロ以外の終了値を持つプロセス_crash_を実行しますか? –

+0

@πάνταῥεῖ 質問を詳細で更新しました。 テスト中の関数(My_Assert)はクラッシュしません。stderrにログを記録して例外をスローします。 – kslattery

+0

'ASSERT_DEATH()'は正規表現が実際にチェックされる前に、プログラムがゼロ以外の終了コードで1位で終了することを期待しています。あなたはおそらくそれを間違って使用しています。 –

答えて

1

falseの後に改行記号を考慮する必要があるようですが、false\nを使用してください。

falseと行と文字列の両方に一致する必要がある場合は、($|\n)を使用してください。

関連する問題