LoginSignup
4
3

More than 5 years have passed since last update.

WP-CLIのテストをローカルで実行する

Last updated at Posted at 2016-08-04

WP-CLIでは、phpunitによるユニットテストの他にも、behatを使ったビヘイビア駆動のテストなどもしていて、WP-CLIにプルリクを送る際には事前にローカルでこれらのテストを実行したほうがいろいろ手っ取り早いです。

テストに必要な環境の構築や実際のテストに必要なコマンド等は.travis.ymlを見れば書いてあるんですが、いざ実行しようとするとあれ?みたいなことを毎回繰り返すので手順をメモ。

テスト環境の構築方法

以下のコマンドはすべてWP-CLIのディレクトリ直下で行うこと。

まず、過去にテストを行ったことがある場合、以下のコマンドでその環境を削除する必要があります。

MySQLのrootユーザーにパスワードが設定されていると後で実行するシェルスクリプトを手作業でごにょごにょする必要があるので注意。

$ rm -fr /tmp/wp-cli-*
$ echo "drop database wp_cli_test" | mysql -u root

つぎに環境をセットアップするためのシェルスクリプトを実行する。

環境変数が適切にセットされてないとうまく動かないのでここも注意が必要です。多くの場合このままでいけるはず。

$ WP_VERSION=latest WP_CLI_BIN_DIR=/tmp/wp-cli-phar bash ./ci/prepare.sh

テストの実行

最後に以下のコマンドでテストを実行する。

$ WP_VERSION=latest WP_CLI_BIN_DIR=/tmp/wp-cli-phar bash ci/test.sh

WP-CIのテストではすべてのコマンドが順番に実行されますのでかなり時間がかかります。30分ぐらいは見ておいたほうがいいかも。

自分が修正したサブコマンドだけテストを実行するなら、以下のような感じです。

$ vendor/bin/behat features/comment.feature

上の例ではwp comment及びそのサブコマンドのテストのみが行われます。

features/以下にはBehat用のテストケースがサブコマンドごとに別々のファイルで保存されています。

このテストコードは以下のようになってて、初めて見たときはこんなやり方があるのかと感動しました。

    When I run `wp plugin install akismet --version=2.5.7 --force`
    Then STDOUT should not be empty

    When I run `wp plugin list --name=akismet --field=update_version`
    Then STDOUT should not be empty
    And save STDOUT as {UPDATE_VERSION}

    When I run `wp plugin list --fields=name,status,update,version,update_version`
    Then STDOUT should be a table containing rows:
      | name       | status   | update    | version   | update_version   |   
      | akismet    | inactive | available | 2.5.7     | {UPDATE_VERSION} |
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3