あぁ、色変わらないんだなぁ~と思っていたら、AnsiColor Pluginってのがあったので試してみました。
結果
AnsiColor Plugin をインストールしたら、ビルド環境の Color ANSI Console Output にチェックを入れるだけです。実行した結果がこちら。
色つきで表示されましたね!イイ感じです!!
Windows ターゲットだと…
Windows ターゲットでビルドされた場合、WIN32API でコンソールの色を変えるため、エスケープシーケンスが出力されません。でも、こうして色つき出力されると Windows の場合でもしたくなります。
Google Test の改変
gtest.cc の ColoredPrintf 関数を見ると、Windows の場合とそれ以外とで #ifdef されているのがわかります。色々とめんどくさいので、環境変数でエスケープシーケンスで出力するか分岐させたいと思います。
今回追加するのは以下のコード。ColoredPrintf 関数の
const HANDLE stdout_handle = GetStdHandle(STD_OUTPUT_HANDLE);
if( String::CaseInsensitiveCStringEquals(posix::GetEnv("GTEST_ANSI_COLOR"), "yes") ) { printf("\033[0;3%sm", GetAnsiColorCode(color)); vprintf(fmt, args); printf("\033[m"); // Resets the terminal to default. va_end(args); return; }
(動作確認してないけど、たぶん大丈夫でしょう…)
iutest の場合
--iutest_color=ansiで、エスケープシーケンスで出力されるようにしました。(v0.24.0.0)
まとめ
色がついたからといって何かあるわけではない。ただ、視認性が上がるので、致命的な失敗があったら赤色で表示するとかイイかも。
0 件のコメント:
コメントを投稿