[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
13.1 開発に必要なツール 13.2 デバッグモード 13.3 ライブラリの動作チェック 13.4 acinclude.m4に記述されているマクロ 13.5 テストスクリプトの記述
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ISISの開発を行う場合は、ISISのインストールに必要なツールに加え、以下の ツールが必要となる。
autoconf-2.57
automake-1.7.6
make
を実行する環境を検査し、その結果に応じた`Makefile'
を生成する。
libtool-1.5
texinfo-4.5
ptex-2.1.8
tar-1.12
gzip-1.2.4a
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
configure
を実行する際に`--enable-debug'オプションを指
定することで、ISISをデバッグモードで作成することができる。デバッグモー
ドが通常のモードと異なる点を以下に列挙する。
通常これらのライブラリ内のオブジェクトファイルは、最終的に生成される ISIS のライブラリファイルのみに格納されている。通常モードで実行バイナ リを生成する場合、このライブラリファイルを作成する必要がある。また、ラ イブラリのソースコードを変更した場合には、ライブラリファイルを最新の状 態に更新しなければならない。
これに対しデバッグモードでは、前述したライブラリファイルに加えてローカ ルライブラリが生成される。これらのローカルライブラリをリンクすることで 最終的なISISのライブラリを作成、または更新する前に実行ファイルを作成す ることができる。頻繁にライブラリのソースコードを更新する際に有効である。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
make check
を実行することで、ライブラリのチェックを行うことが
できる。make check
はautomake
によりサポートされてい
る機能で、`Makefile.am'内のTESTSで指示されたスクリプトを順
に実行し、正常に終了したかどうかをレポートする。
さらに詳細にレポートを行わせたい場合は、make VERBOSE=yes
check
を実行すると良い。また、make TESTS=foo.test check
とい
うように、TESTS変数をコマンドライン上で明示することで行うテスト
を限定することもできる。
テストスクリプトはBourne Shellスクリプトで、生成した実行バイナリを起動 して動作チェックを行うプログラムになっている。動作チェックは、実行結果 のステータス値や標準出力、標準エラー出力を正常値と比較することで行う。 正常値はファイルから読み込まれる。See section 13.5 テストスクリプトの記述.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
`acinclude.m4'は、`configure.ac'で使用されるマクロを定義して いる。`configure.ac'内で使用するマクロを追加する場合、このファイ ルに追加する。現在記述されている主なマクロを以下に示す。
CF_CHECK_VERSION(VERSION-FILE-NAME [, LT-VERSION-FILE-NAME])
バージョンファイルの形式は次の通りである。1行目以降は無視される。
<パッケージ名> version <バージョン> [(<リビジョン>)]
<バージョン> は、さらにMAJOR_VERSION、MINOR_VERSION、 MICRO_VERSIONに分解され、各変数に格納される。
第二引数を指定すると、第二引数で指定されたファイルから共有ライブラリの バージョン情報を読み込む。共有ライブラリバージョンファイルの形式は次の 通りである。1行目以降は無視される。
<インタフェース番号>.<バイナリ番号>
バージョン情報とインタフェース番号、バイナリ番号から、共有ライブラリバー ジョン指定用にLT_RELEASE、LT_CURRENT、LT_REVISION、 LT_AGEが算出され、各変数に格納される。
バージョンを指定する各変数は、リリースバージョンを作成する際に以下の手 順にしたがって更新される。
CF_CHECK_OPTION(PROGRAM-VARIABLE, FLAG-VARIABLE, OPTION)
CF_CHECK_FPSETMASK
fpsetmask
関数が使用できるかどうかを判別する。
CF_CHECK_HTONS
htons
関数またはマクロが使用できるかどうかを判別する。
CF_CHECK_MATH_FUNC(NAME [, ARGS [, IF-FOUND [, UNLESS-FOUND]]])
math
ライブラリの関数の有無を判別する。第一引数に関数名、第二引
数に関数の引数を指定する。第三および第四引数が指定されていれば、判別結
果に応じてシェルコマンドを実行する。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
テストスクリプトは、生成した実行バイナリを起動して動作チェックを行うシェ ルスクリプトである。動作チェックは、実行結果のステータス値や標準出力、 標準エラー出力を正常値と比較することで行う。
以下に簡単な例を示す。
#! /bin/sh . $test_defs || exit 1 program=hello answer='Hello, world.' . $test_exec || exit 1 |
このテストスクリプトは`hello'をテストする。標準出力から
Hello, world.
という出力が得られ、標準エラー出力は出力がなく、終
了ステータスが0 の時にテストは成功したと見なされる。programは実
行するプログラム名、answerは標準出力の出力結果を指定する。
以下に指定できるテスト内容を示す。
.test
を除いたものが実行するプログラム名となる。
auto
とすると、テストスク
リプトのファイル名から末尾の.test
を除き、.cin
を付加した
ものが使用される。また、指定したファイル名 + .gz
または
.uu
、あるいはその両方というファイルがあれば、そのファイルを展開
して参照する。ファイル名をignore
とすると、チェックを行わない。
後述するstdout
、stderr
についても同様である。
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |