マニュアル
PHP Manual

ドライバのテストの実行

PECL パッケージにはテストが含まれていませんが、 » Github で公開しています。 テストには二種類あります。PHPUnit のテストと C のテストです。

PHPUnit のテスト

テストを実行するには、ドライバを Github からダウンロードしなければなりません (テストは tests/ ディレクトリにあります)。 さらに » PHPUnit も必要です。 PHPUnit は PEAR でインストールできます (いくつか要件があるので、 インストール手順を確認しなければなりません)。

テストの中には、警告やエラーが発生することを想定しているものもあります。 すべてのテストを成功させるには、php.ini の error_reportingE_STRICT | E_ALL に設定しなければなりません。 そうしないと、発生するはずの警告やエラーが出ないせいでいくつかのテストが失敗します。

テストを実行する際には、MongoDB サーバーをローカルのポート 27017 で動かしておきましょう。 バグ報告を出す前に、最新の開発版の MongoDB でテストを実行してみてください。 テストの中には、まだ安定版のリリースには含まれていない機能のテストが含まれていることがよくあります。

テストスイートで使っているデータベースは "phpunit" です。 もし自分のアプリケーションで "phpunit" という名前のデータベースを使っている場合は、 MongoDB が別のデータディレクトリを指すように設定してからテストを実行してください。

Github からダウンロードしたドライバのソースのメインディレクトリにいることを確認し、次のコマンドを実行します。


$ phpunit tests/MongoSuite.php

C のテスト

C のテストのほとんどは、PHP 側に公開していない内部関数をチェックするためのものです。 これらのテストを実行したければ、PHP のコンパイル時に --enable-embed フラグを指定しなければなりません。 それから、tests ディレクトリに移動して make を実行します。これは、unit というバイナリを作ります。 この unit を実行すればテストが動きます。 このテストでは、データベースが稼働している必要はありません。

テストが通ると "." と表示します。テストが失敗すると、警告を表示してテストが止まります。 表示された内容をレポートしてください。

make コマンドが PHP の組み込みライブラリ (libphp5.so) やヘッダファイルを見つけられない場合は、PHP_PATH 変数を指定します。

make clean を実行すると、すべてのテスト用オブジェクトを削除します。

valgrind とともにテストを実行すると、 無効なメモリアクセスエラーは決して発生せず、最後に "no leaks are possible" と表示されるはずです。

エラーのレポート

テストに失敗したりエラーが発生したりした場合は、 » バグトラッカーへのレポートをお願いします。 いくつかのテストがスキップされることがありますが、 これは通常の動作であり無視してもかまいません。

新しいテストの提供も歓迎します! あらゆる形式の、あらゆる機能に対する新しいテストの提供を楽しみに待っています。


マニュアル
PHP Manual