C言語でTDDやってみようと、cUnitインストしようとしてググってたら、cutterというソフトの方がcUnitよりもよいという記事があった。
内容を軽く見てみても、mainから実装しなければならないcUnitに対して、テストケースをsoファイルとしてリンクするcutterの方が良さげに思える。
ということで、C言語のTDDのために、cutterをインストしてみた。
インスト手順はここにあったので、これに従ってインストする。
が、インスト手順に載ってたシェル叩いたらエラー発生。
bash-3.2$ bash install-cutter.sh pkg-get: コマンドが見つかりません
pkg-getがインストールされてない。
というわけでpkg-getをインストールしようとしたけど、2013/6/14現在、pkg-getをダウンロードできるサイト死んでるっぽい。
pkgutilでインストすることにする。
# /opt/csw/bin/pkgutil -i autoconf automake libtool intltool pkgconfig
で、インスト出来た。
pkg-getでインスト予定のパッケージを一通りインストしたので、install-cutter.shから
「pfexec pkg-get -i autoconf automake libtool intltool pkgconfig」
の行を削除。
作り忘れてたglib-gatomic-missing-gthread-h.diffファイルも作成して再度スクリプト実行。
bash-3.2$ cat glib-gatomic-missing-gthread-h.diff # diff --- glib-2.28.6/glib/gatomic.c.orig Wed Apr 27 14:03:37 2011 +++ glib-2.28.6/glib/gatomic.c Wed Apr 27 14:04:08 2011 @@ -28,6 +28,7 @@ #endif #include "gatomic.h" +#include "gthread.h" #include "gthreadprivate.h" /** bash-3.2$ bash install-cutter.sh ・ (途中略) --2013-06-20 15:23:23-- http://downloads.sourceforge.net/project/cutter/cutter-1.2.2.tar.gz Resolving proxy.hoge... xx.xx.xx.xx Connecting to proxy.hoge|xx.xx.xx.xx|:xx... connected. Proxy request sent, awaiting response... 404 Not Found 2013-06-20 15:23:23 ERROR 404: Not Found.
404かよ...
2013/6/20現在、cutter-1.2.2.tar.gzのダウンロードURLが違ってるようなので、以下の対処した。
- cutterはここからダウンロードして、~/srcディレクトリ配下に置く。
- install_cutter.shから「wget -N http://downloads.sourceforge.net/project/cutter/cutter-1.2.2.tar.gz」の行をコメントアウト
で、インスト再開して、インストールできた。
cutter叩いてみてhelp表示されるので、多分インストは大丈夫だろう。
bash-3.2$ /usr/local/bin/cutter 用法: cutter [オプション...] TEST_DIRECTORY cutter --mode=analyze [オプション...] LOG_DIRECTORY cutter --mode=play [オプション...] LOG_FILE ヘルプのオプション: -h, --help ヘルプのオプションを表示する --help-all ヘルプのオプションをすべて表示する --help-stream ストリームのオプションを表示 --help-report レポートのオプションを表示 --help-ui コンソールUIのオプションの表示 --help-console-ui コンソールUIのオプションの表示 アプリケーションのオプション: --version バージョンを表示 --mode=[test|analyze|play] 実行モードを設定(既定値: test) -s, --source-directory=DIRECTORY ソースコードのディレクトリを設定 -n, --name=TEST_NAME テストを指定 -t, --test-case=TEST_CASE_NAME テストケースを指定 -m, --multi-thread マルチスレッドでテストケースと繰り返しテストを実行 --max-threads=MAX_THREADS 最大MAX_THREADSスレッドを同時に動かしてテストケースと繰り返しテストを 実行します(既定値: 10; -1は制限なし) --disable-signal-handling シグナルを処理しない --test-case-order=[none|name|name-desc] テストケースを並び替える。既定値は'none'(並び替えない) --exclude-file=FILE ファイルをスキップ --exclude-directory=DIRECTORY ディレクトリをスキップ --fatal-failures 失敗を致命的な問題として扱う --keep-opening-modules デバッグ時にシンボルを解決できるようにロードしたモジュールを開いたままにする --enable-convenience-attribute-definition 便利だが危険な'#{属性名}_#{テスト名 - 'test_'プリフィックス}'属性設定 関数を有効にする --stop-before-test テストを実行する前の行にブレークポイントを設定する。デバッガでステップイン実行すれば簡単にテスト関数に入れます。