CUnit の導入 on Cygwin んで,色づけしてみた。
どうも。
すでに3回目のコーヒーゼリーを作成済みの whitypig です。
1回で,3個作るので,1日1個食べたとして,3日はもつはずなのですが。。。
インストール手順
参考ページを参考して下さい。
- ソースのDL
- パッチのDL
- 展開して,パッチを当てる
% patch -p0 -d . < CUnit_basic_run_test.patch
- ビルド
% ./configure --enable-curses % make && make install
色づけパッチ
こうなります。
- テスト成功
- テスト失敗
エスケープシーケンスを使って,
CU_basic_run_tests() で,CU_BRM_VERBOSE モードの時,
結果に色をつけるようにしました。
console, curses, その他の時は使ったことないので保留。
いろいろ試したけど,シンプルにしておくのがいいなと。
Run Summary の方にも色づけしたかったけど,
オレのテクだと,全部赤か全部緑のどちらかしかできなかったので,
んで,それだとちとわかりずらいかなぁと思ったので止めました。
diff -u Basic.c.org Basic.c --- Basic.c.org 2009/12/23 13:18:47 +++ Basic.c 2009/12/23 15:07:26 @@ -297,13 +297,17 @@ if (NULL == pFailure) { if (CU_BRM_VERBOSE == f_run_mode) { - fprintf(stdout, "passed"); + fprintf(stdout, "\033[32m"); + fprintf(stdout, "PASSED"); + fprintf(stdout, "\033[39m"); } } else { switch (f_run_mode) { case CU_BRM_VERBOSE: + fprintf(stdout, "\033[31m"); fprintf(stdout, "FAILED"); + fprintf(stdout, "\033[39m"); break; case CU_BRM_NORMAL: fprintf(stdout, "\nSuite %s, Test %s had failures:", @@ -314,12 +318,14 @@ break; } if (CU_BRM_SILENT != f_run_mode) { + fprintf(stdout, "\033[31m"); for (i = 1 ; (NULL != pFailure) ; pFailure = pFailure->pNext, i++) { fprintf(stdout, "\n %d. %s:%u - %s", i, (NULL != pFailure->strFileName) ? pFailure->strFileName : "", pFailure->uiLineNumber, (NULL != pFailure->strCondition) ? pFailure->strCondition : ""); } + fprintf(stdout, "\033[39m"); } } }
まとめ
CUnit のソースコードは読みやすい気がする。
といっても他のソースをほとんど読んだことがないのであてにはならんか。
加えて,ソース自体が簡単なのかも。
それでも,コメントがたっぷりあるし,オブジェクト指向っぽいところもあった。
わしはこの関数ポインタがどんな関数を指しているか知らんが,
呼んどこ,みたいな。普通なのか?
あと,綺麗。変数名も長いけどわかりやすい。
毎度オープンソースのソフトウェアにはお世話になってます。
中の人,あざーっす!
※2009/12/24 (Thu) 16:00
diff の部分を修正。
rcsdiff って標準出力と標準エラー出力の両方に出力してくるんだね。
へぇへぇへぇ。
※2009/12/24 20:46
さらに,修正。
printf を fprintf に日記上で修正したが,引数間違えてた。orz
あるよね〜。