/phpunit-test-runner

Primary LanguagePHPGNU General Public License v2.0GPL-2.0

phpunit-test-runner

WordPress の PHPUnit テストをみなさんのインフラで実行していただいてありがとうございます! 私たちは、ユーザーのために WordPress との互換性を維持することを手助けしてくださることに感謝しています。

まだ、実行していない場合は、まずはじめにこちらのドキュメントをお読みください。(日本語ドキュメンテーション

テストランナーは、ファイルの編集等を必要とすること無く利用できるように設計されています。初期設定はいくつかの環境変数で構成されています。(.env.default をご覧ください。)

詳しく説明すると:

  1. テストスイート用の環境を準備する。
  2. テスト環境で PHPUnit を実行する。
  3. WordPress.org にテスト結果を報告する。
  4. テスト環境を初期化する。

設定

テストスイート用ランナーは以下の2つの方法のうちのいずれかで実行することができます。

  1. Travis CI (または Circle CI などの CI サービス)をコントローラーとして利用して、リモートサーバー上のテストを実行する。
  2. テストランナーをテスト環境内にクローンして直接実行する。

テストランナーは.env.defaultに記述されている環境変数によって、設定を変更することが出来ます。コードを変更する必要はありません。最新の状態に保つのを簡単にするために、スクリプトを編集することは控えて下さい。

直接 Git クローンして、次のように設定出来ます。

# デフォルトの .env ファイルをコピー.
cp .env.default .env
# .env ファイルを編集して、変数を設定。
vim .env
# 設定した変数を現在のスコープにロード。
source .env

CI サービスでは、WEB コンソールでこれらの環境変数を設定出来ます。重要: 環境変数 WPT_SSH_CONNECT は、テストスイートがローカルで実行されるのかリモートで実行されるのかを決定します。

ビルドIDとテーブル接頭辞を追加すると、同じ環境でテストを実行:

export WPT_TEST_DIR=wp-test-runner-$TRAVIS_BUILD_NUMBER
export WPT_TABLE_PREFIX=wptests_$TRAVIS_BUILD_NUMBER\_

CIジョブでSSH鍵を用意して、SSH経由でリモート環境に接続:

# 1. CIサービスが使うための、SSHキーペアを作成
ssh-keygen -t rsa -b 4096 -C "travis@travis-ci.org"
# 2. 秘密鍵を環境変数として使うために、base64でエンコード。
cat ~/.ssh/id_rsa | base64 --wrap=0
# 3. CI サービスが SSH で接続できるように、id_rsa.pub を authorized_keys に追加
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

SSH エイリアスを利用して、複雑なよりSSH接続を行う:

# 1.  ~/.ssh/config に以下を追加して、'wpt' エイリアスを 作成
Host wpt
  Hostname 123.45.67.89
  User wpt
  Port 1234
# 2. SSH接続をする場合は、'wpt' を使用して下さい。
ssh wpt

実行

テストスイートは4つのステップで実行されます。

0. 要件

テストを準備する環境とテスト環境はどちらも基本的な要件を満たしていなければなりません。

準備環境:

  • PHP 5.6 以上 (スクリプト実行のため).
  • ユーティリティー: git, rsync, wget, unzip.

テスト環境:

  • PHP 5.6 以上、 Phar のサポート (PHPUnitのため).
  • 書き込み可能なデータベースにアクセスできる MySQL または MariaDB。
  • テストディレクトリ全体の書き込み可能なファイルシステム (詳細については #40910 を参照して下さい).

1. Prepare

The prepare.php step:

  1. Extracts the base64-encoded SSH private key, if necessary.
  2. Clones the master branch of the WordPress develop git repo into the preparation directory.
  3. Downloads phpunit.phar to the preparation directory.
  4. Generates wp-tests-config.php and puts it into the preparation directory.
  5. Delivers the prepared test directory to the test environment.

2. Test

The test.php step:

  1. Calls php phpunit.phar to produce tests/phpunit/build/logs/junit.xml.

3. 報告

report.php の手順:

  1. PHPUnit の XML を処理して、JSON の blob にする。
  2. JSON を WordPress.org に送信する。

4. 初期化

cleanup.php の手順:

  1. データベースをリセットする。
  2. テスト環境に送信したすべてのファイルを削除する。

貢献者

tk

ライセンス

プロジェクトのライセンスは LICENSE (英文)を参照してください。