次: , 上: Using an Autotest Test Suite


16.1.1 testsuiteスクリプト

Autotestを使用してテストスイートや評価スイートを生成することは簡単です. 評価スイート全体は,autom4teで処理されるファイルに保持されてい て,それ自身は配布物から得られるスタンドアローンのBourneシェルスクリプト を生成するために,GNU M4の環境下で使用されます. autom4teGNU M4もインストールしているエンドユーザは 不要です.

評価スイートのそれぞれのテストは,テストグループの一部にすべきです. テストグループ(test group)は,通常はグループのテストの一つがデータ ファイルを作成し,それ以降のテストで同じグループのテストがそれを読み込む ために,お互いに実行される必要がある混合テストの,連続した手続きになって います.テストグループごとの数個のテストのみを維持する方がより良く,テス トグループごとに一つのテストのみを維持することが可能な場合,それは理想的 です.

最も単純なパッケージ以外のすべてのものに対して,testsuite.atのよ うなファイルは,別々のファイルにした方が管理しやすいことも多いので,すべ てのテストのソースを完全に保持しているわけではありません.これらの個別の ファイルのそれぞれは,単一のテストグループや,パッケージの共通の機能をす べて提示しているテストグループの連続したものを維持しています.そのような 場合は,ファイルtestsuite.atは評価スイート全体の初期化のみを行な い,他のすべてのテストファイルに対して含める文をリストアップする前に,要 素が健全かどうかを調査するときもあります.特殊なファイル package.m4はパッケージの識別子を含んでいて,見つかった場合は自動 的にインクルードされます.

便利な代替品は,すべての大域的な呼び出しをファイルlocal.atに移動 し(ローカルなAutotestマクロは基本的な状態を調査し,AT_INITを呼び 出します),testsuite.atをサブテストスイートをm4_includeす る単純なリストにすることです.そのような状況では,テストスイート全体また は一部を生成すると,autom4teコマンドライン引数の選択が問題にな ります.

Autotestが生成する評価スクリプトは,慣習でtestsuiteから呼び出 されます.実行時には,testsuiteはそれぞれのテストグループを順 番に実行し,テストごとにその特定のテストが成功したか失敗したかを告げる概 要を表示する一行を生成します.すべてのテストの終りに,数を集約して出力し ます.デバッグディレクトリには,それぞれのテストのグループで失敗したもの があれば,それが残ります.そのようなディレクトリは testsuite.dir/nnと命名され,nnはテストグループの順番 になり,以下のものが含まれています.

理想的な状況では,失敗するテストがなく,結果として有効なものが残っている デバッグディレクトリはありません.

評価スイートの個別のテストがコンフィグレーションスクリプトからの情報を入 手する必要が生じることも,実験段階ではよくあります.すべての評価スイート で共通なこの情報が,AC_CONFIG_TESTDIRで自動的に生成されるファイル atconfigで提供されることもあります.テスト環境で特別に必要となる コンフィグレーションの情報に対し,AC_CONFIG_FILESで実際に作成され るように,atlocal.inという名前の追加ファイルを準備してもかまいま せん.コンフィグレーションのプロセスで,atconfigatlocal は二つの入力ファイルから作成され,これら二つの生成されたファイルは,自動 的にtestsuiteスクリプトで読み込まれます.

ファイル間の関係を表示する図は以下のようになります.

配布するソフトウェアパッケージの準備に使用されるファイルです.

                     [package.m4] -->.
                                      \
     subfile-1.at ->.  [local.at] ---->+
         ...         \                  \
     subfile-i.at ---->-- testsuite.at -->-- autom4te* -->testsuite
         ...         /
     subfile-n.at ->'

ソフトウェアパッケージのコンフィグレーションで使用されるファイルです.

                                          .--> atconfig
                                         /
     [atlocal.in] -->  config.status* --<
                                         \
                                          `--> [atlocal]

テストスイートを実行中に作成されるファイルです.

     atconfig -->.                    .--> testsuite.log
                  \                  /
                   >-- testsuite* --<
                  /                  \
     [atlocal] ->'                    `--> [testsuite.dir]