CUnit の導入 on Cygwin んで,色づけしてみた。

どうも。
すでに3回目のコーヒーゼリーを作成済みの whitypig です。
1回で,3個作るので,1日1個食べたとして,3日はもつはずなのですが。。。

なぜに CUnit?

Man ファイルがあったから。
今思えば,html でも w3m-emacsMeadow 内から見られるからありかも。

インストール手順

参考ページを参考して下さい。

% 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
あるよね〜。