## cutter cutter — C言語・C++言語用のxUnit系テスティングフレームワーク |

## 名前

cutter - C言語・C++言語用のxUnit系テスティングフレームワーク

## 書式

`cutter` [ オプション... ] テストディレクトリ

`cutter` --mode=analyze [ オプション ... ] ログディレクトリ

## 説明

CutterはC言語・C++言語用のxUnit系単体テスト（ユニットテスト）フレームワークです。Cutterはプログラマに2つの重要なインターフェイスを提供します。

1. 簡単にテストが書けるAPI

2. 簡単にデバッグできるユーザインターフェイス

Cutterはプログラマが新しいテストを書くこと、すでにあるテストを実行すること、実行したテストからフィードバックを得ることを支援します。

テストディレクトリ にはtest_*.soがあるディレクトリを指定します。Cutterはtest_*.soは再帰的に検索します。

ログディレクトリ にはCutterのログファイルがあるディレクトリを指定します。Cutterは--stream-directoryオプションがしていされるとテスト結果をログファイルに出力します。

## オプション

--version | バージョンを表示して終了します。
--mode=[test|analyze] | 実行モードを指定します。testモードのときはテストを実行します。analyzeモードのときはテスト結果を解析します。 デフォルトはtestです。
-s DIRECTORY, --source-directory=DIRECTORY | テストが失敗した場合にファイル名の前にDIRECTORYを付加します。Cutterの出力からテストが失敗した箇所にジャンプするツール（Emacsなど）と連携するための機能です。
-t TEST_CASE_NAME, --test-case=TEST_CASE_NAME | TEST_CASE_NAMEにマッチしたテストケースを実行します。もし、TEST_CASE_NAMEが"/"で囲まれていた場合は（例: /test_/）正規表現として扱います。 このオプションは複数回指定できます。その場合は、どれかのTEST_CASE_NAMEにマッチしたテストケースを実行します。（OR）
-n TEST_NAME, --name=TEST_NAME | TEST_NAMEにマッチしたテストを実行します。もし、TEST_NAMEが"/"で囲まれていた場合は（例: /test_/）正規表現として扱います。 このオプションは複数回指定できます。その場合は、どれかのTEST_NAMEにマッチしたテストケースを実行します。（OR）
-m, --multi-thread | 各テストケースを新しいスレッドで実行します。 デフォルトでは無効です。
--max-threads=MAX_THREADS | 最大MAX_THREADSスレッドを同時に動かしてテストケースと繰り返しテストを実行します。-1を指定すると最大同時スレッド数を制限しません。 デフォルトは最大10スレッドです。
--disable-signal-handling | C-cでのテスト途中終了や、SEGV時のバックトレース取得などを行うシグナル処理機能を無効にします。シグナルを用いてるライブラリをテストする場合はこの機能が障害になることがあります。その場合はこのオプションでCutterのシグナル処理機能を無効にしてください。 デフォルトでは有効です。
--test-case-order=[none|name|name-desc] | 各テストケースの実行順を並び替えます。 noneを指定すると並び替えません。nameを指定するとテストケース名で昇順に並び替えます。name-descを指定するとテストケース名で降順に並び替えます。 デフォルトはnoneです。
--exclude-file=FILE | テストを集めるときにFILEを読み込みません。
--exclude-directory=DIRECTORY | DIRECTORY以下にあるテストを検索しません。
--fatal-failures | 失敗を致命的な問題として扱います。つまり、表明に失敗するとテストの実行を中断します。 デフォルトでは無効です。
--keep-opening-modules | ロードしたモジュールを開いたままにします。シンボルを解決できるようになるため、デバッグ時に便利です。 デフォルトでは無効です。
--enable-convenience-attribute-definition | 便利ですが、危険でもある、"#{属性名}_#{テスト名 - 'test_'プリフィックス}"属性設定関数を有効にします。 デフォルトでは無効です。
--stop-before-test | テスト関数を実行する直前にブレークポイントを設定します。デバッガ上でcutterを実行し、ステップインすれば、簡単にテスト関数に入ることができます。 デフォルトでは無効です。
-u=[console|gtk], --ui=[console|gtk] | UIを指定します。 デフォルトはコンソールUIです。
-v[s|silent|n|normal|v|verbose], --verbose=[s|silent|n|normal|v|verbose] | 出力の詳細さを指定します。 このオプションはコンソールUIを使用する場合だけ有効です。
-c[yes|true|no|false|auto], --color=[yes|true|no|false|auto] | yesまたはtrueが指定された場合はCutterはエスケープシーケンスで色付けして出力します。noまたはfalseが指定された場合は色付けしません。autoあるいは値が省略された時は、可能なら色付けをします。 このオプションはコンソールUIを使用する場合だけ有効です。
--pdf-report=FILE | FILEにPDF形式でテスト結果を出力します。
--xml-report=FILE | FILEにXML形式でテスト結果を出力します。
--stream=[xml] | ストリームバックエンドを指定します。ストリームバックエンドはテスト結果を配信します。 現在はXMLストリームバックエンドがあります。
--stream-fd=FILE_DESCRIPTOR | 出力ファイルディスクリプタを指定します。XMLストリームバックエンドはFILE_DESCRIPTORに配信します。 このオプションはXMLストリームバックエンドを使用する場合だけ有効です。
--stream-directory=DIRECTORY | 出力ディレクトリを指定します。XMLストリームバックエンドはDIRECTORY以下にファイルを作成し、そのファイルに配信します。 このオプションはXMLストリームバックエンドを使用する場合だけ有効です。
-?, --help | UIやテスト結果レポート機能に依存しないオプションを表示します。
--help-stream | ストリーム関連のオプションを表示します。
--help-report | レポート関連のオプションを表示します。
--help-ui | UI関連のオプションを表示します。
--help-all | すべてのオプションを表示します。

## 終了ステータス

すべてのテストがパスすると0で、そうでない場合は0以外になります。テスト結果の「省略」と「通知」は失敗として扱いません。

## ファイル

/usr/local/share/doc/cutter/ja/ | リファレンスマニュアルやチュートリアルなどのCutterのドキュメントがあります。

## 例

以下の例では、cutterはtest/ディレクトリ以下のテストを実行し、テストの進行状況を詳細に表示します。

    % cutter -v v test/

以下の例では、テスト結果がlogs/ディレクトリ以下に保存されます。

    % cutter --stream=xml --stream-directory=logs/ test/

## 関連項目

GLibのリファレンスマニュアル。