テスト

PDO のドライバをリリースする前には「コア」テストをパスする必要があります。 このテストは PHP のソース配布物から実行するように設計されており、 ドライバのテストを行うには多少の手続きが必要になります。最新の PHP 5.1 スナップショットを取得し、以下の手順で進めることを推奨します。

$ cp -r pdo_SKEL /path/to/php-5.1/ext

これにより、テストを実行するためのハーネスをセットします。 次にすべきことは、PDO の共通コアテストにリダイレクトするテストを 作成することです。このファイルの名前は common.phpt とし、 ext_skel で雛形を作成したときに同時に作成された tests ディレクトリの中に置かなければなりません。 このファイルの中身は以下のようになります。

--TEST--
SKEL
--SKIPIF--
<?php # vim:ft=php
if (!extension_loaded('pdo_SKEL')) print 'skip'; ?>
--REDIRECTTEST--
if (false !== getenv('PDO_SKEL_TEST_DSN')) {
# user set them from their shell
   $config['ENV']['PDOTEST_DSN'] = getenv('PDO_SKEL_TEST_DSN');
   $config['ENV']['PDOTEST_USER'] = getenv('PDO_SKEL_TEST_USER');
   $config['ENV']['PDOTEST_PASS'] = getenv('PDO_SKEL_TEST_PASS');
   if (false !== getenv('PDO_SKEL_TEST_ATTR')) {
      $config['ENV']['PDOTEST_ATTR'] = getenv('PDO_SKEL_TEST_ATTR');
   }
   return $config;
}
return array(
   'ENV' => array(
           'PDOTEST_DSN' => 'SKEL:dsn',
           'PDOTEST_USER' => 'username',
           'PDOTEST_PASS' => 'password'
       ),
   'TESTS' => 'ext/pdo/tests'
   );

これは共通コアテストを実行し、 PDOTEST_DSNPDOTEST_USER および PDOTEST_PASS をそれぞれ PDO コンストラクタの パラメータ dsnusername および password として渡します。 テストハーネスの実行時には、まずはじめに環境変数をチェックします。 もし存在すれば、テストファイル内にハードコーディングされた条件の かわりにそれらの適切な値を渡すようにします。

テストハーネスは以下のように起動します。

$ cd /path/to/php-5.1
$ make TESTS=ext/pdo_SKEL/tests PDO_SKEL_TEST_DSN="skel:dsn" \
 PDO_SKEL_TEST_USER=user PDO_SKEL_TEST_PASS=pass test