Chapter 25. 退行テスト

Table of Contents

25.1. 退行テストの枠組
25.2. 退行テストを実行する
25.3. 新しい退行テストを追加する
25.3.1. 上書き可能な関数
25.3.2. 補助関数

pkgsrc の基盤は多くのコードベースの集合体であり、 熟考のすえ作られた各小片の周辺を少し変更しただけで pkgsrc が使い物にならなくなるであろう曲り角がたくさんあります。 ほとんどの変更によって pkgsrc が壊されることを防ぐため、 pkgsrc の基盤の重要な部分に変更を加える場合は、 常に一連の退行テストを実行するようにします。 本章では、pkgsrc において退行テストがどのように機能するか、および、 新しいテストをどのように追加すればよいかを、説明します。

25.1. 退行テストの枠組

25.2. 退行テストを実行する

まず、pkgtools/pkg_regress パッケージをインストールする必要があります。 このパッケージには pkg_regress コマンドが附属しており、 あとは、このコマンドを実行するだけで、 regress カテゴリーにあるテストをすべて実行してくれます。

25.3. 新しい退行テストを追加する

regress カテゴリー内のディレクトリーのうち、 spec というファイルを含むものは、 それぞれがひとつの退行テストに対応しています。 spec ファイルはシェルプログラムで、 pkg_regress コマンドからインクルードされます。 以下の関数は、必要に応じて上書きすることができます。

25.3.1. 上書き可能な関数

各関数は引数をとりません。関数はいずれも、 set -e された状態の下で呼ばれるので、 テストにおいて実行される各コマンドの終了コードを、 注意して確認してください。

do_setup()

この関数は、テスト用に環境変数を準備します。 標準では、何もしません。

do_test()

この関数は、テストを実際に実行します。 標準では、この関数は TEST_MAKE を 引数 MAKEARGS_TEST で呼んで、 エラーメッセージをはじめとする出力をファイル TEST_OUTFILE に書き込みます。

check_result()

この関数は、テスト実行後に実行するもので、 ふつうは、実際の出力を予想したものと比較するために使います。 これにより、次節のようなさまざまな補助関数が使えるようになります。

do_cleanup()

この関数は、テストの実行が終わった後に、 すべての掃除をします。標準では、何もしません。

25.3.2. 補助関数

exit_status(expected)

この関数は、do_test() 関数の終了コードを、 第一引数と比較します。 異なる場合は、テストは失敗します。

output_require(regex...)

この関数は、各引数について、 do_test() の出力が拡張正規表現に一致することを検査します。 一致しない場合、テストは失敗します。

output_prohibit(regex...)

この関数は、各引数について、 do_test() の出力が拡張正規表現に一致しないことを検査します。 いずれかの正規表現に一致する場合、テストは失敗します。