Skip to content

torounit/phpunit-test-runner

 
 

Repository files navigation

phpunit-test-runner

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

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

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

詳しく説明すると:

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

設定

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

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

With a direct Git clone, you can:

# Copy the default .env file.
cp .env.default .env
# Edit the .env file to define your variables.
vim .env
# Load your variables into scope.
source .env

In a CI service, you can set these environment variables through the service's web console. Importantly, the WPT_SSH_CONNECT environment variable determines whether the test suite is run locally or against a remote environment.

Concurrently run tests in the same environment by appending build ids to the test directory and table prefix:

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

Connect to a remote environment over SSH by having the CI job provision the SSH key:

# 1. Create a SSH key pair for the controller to use
ssh-keygen -t rsa -b 4096 -C "travis@travis-ci.org"
# 2. base64 encode the private key for use with the environment variable
cat ~/.ssh/id_rsa | base64 --wrap=0
# 3. Append id_rsa.pub to authorized_keys so the CI service can SSH in
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

Use a more complex SSH connection process by creating a SSH alias:

# 1. Add the following to ~/.ssh/config to create a 'wpt' alias
Host wpt
  Hostname 123.45.67.89
  User wpt
  Port 1234
# 2. Use 'wpt' wherever you might normally use a SSH connection string
ssh wpt

Running

The test suite runner is run in four steps.

0. Requirements

Both the prep and test environments must meet some basic requirements.

Prep environment:

  • PHP 5.6 or greater (to run scripts).
  • Utilities: git, rsync, wget, unzip.

Test environment:

  • PHP 5.6 or greater with Phar support enabled (for PHPUnit).
  • MySQL or MariaDB with access to a writable database.
  • Writable filesystem for the entire test directory (see #40910 for details on why).

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

The report.php step:

  1. Processes PHPUnit XML log into a JSON blob.
  2. Sends the JSON to WordPress.org.

4. Cleanup

The cleanup.php step:

  1. Resets the database.
  2. Deletes all files delivered to the test environment.

Contributing

tk

License

See LICENSE for project license.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • PHP 100.0%