autotools で make check を実装する方法(その4):XPASSとXFAIL

前回までのエントリの続きです



make checkで実行されるテストケースの結果には,ラベルが付きます.わかりやすいのは,成功(PASS)と失敗(FAIL)です.他にもSKIPやERRORがあります.わかりにくいのはXPASSとXFAILです.

以下,その意味を説明していきます.

Makefile.am での定義

すべてのテスト用プログラムは Makefile.am 中の TESTS という変数に登録されています

make check が実行されると TESTSに登録されたプログラムが順番に実行され,プログラムの終了コードによりテストの結果が PASS や FAILなどに分類されます

さらに Makefile.am では XFAIL_TESTS という変数も利用できます. XFAIL_TESTS は, TESTSに登録したプログラムの内,失敗することが想定されたプログラムのリストになります.


この挙動は,表にすると把握しやすいです

終了コード テスト用プログラムの実行結果 XFAIL_TESTS:無 XFAIL_TESTS:有
0 テストに成功 PASS (問題:無) XPASS(問題:有)
0, 77, 99 以外の値 テストに失敗 FAIL(問題:有) XFAIL(問題:無)
77 テストを省略した. SKIP SKIP
99 テスト用プログラム自身のエラー ERROR(問題:有) ERROR (問題:有)

このルールにしたがって make check は TESTSに登録されたプログラムの終了結果を分類しています.

そして(問題あり)となったテストケースが一つでも存在した場合はテストが失敗したとみなします.

補足情報

上記の説明は,autotools がデフォルトで提供する test-driver というシェルスクリプトを使った場合の挙動となります.test-driver を独自のものに差し替えた場合は上記の説明とは異なる動作になります.