Feature: Manage WordPress plugins Scenario: Create, activate and check plugin status Given a WP install And I run `wp plugin path` And save STDOUT as {PLUGIN_DIR} When I run `wp plugin scaffold --skip-tests plugin1` Then STDOUT should not be empty And the {PLUGIN_DIR}/plugin1/plugin1.php file should exist And the {PLUGIN_DIR}/zombieland/phpunit.xml.dist file should not exist When I run `wp plugin path plugin1` Then STDOUT should be: """ {PLUGIN_DIR}/plugin1/plugin1.php """ When I run `wp plugin path plugin1 --dir` Then STDOUT should be: """ {PLUGIN_DIR}/plugin1 """ When I run `wp plugin scaffold Zombieland` Then STDOUT should not be empty And the {PLUGIN_DIR}/Zombieland/Zombieland.php file should exist And the {PLUGIN_DIR}/Zombieland/phpunit.xml.dist file should exist # Ensure case sensitivity When I try `wp plugin status zombieLand` Then STDERR should contain: """ The 'zombieLand' plugin could not be found. """ And STDOUT should be empty And the return code should be 1 # Check that the inner-plugin is not picked up When I run `mv {PLUGIN_DIR}/plugin1 {PLUGIN_DIR}/Zombieland/` And I run `wp plugin status Zombieland` Then STDOUT should contain: """ Plugin Zombieland details: Name: Zombieland Status: Inactive Version: 0.1.0 Author: YOUR NAME HERE Description: PLUGIN DESCRIPTION HERE """ When I run `wp plugin activate Zombieland` Then STDOUT should not be empty When I run `wp plugin status Zombieland` Then STDOUT should contain: """ Status: Active """ When I run `wp plugin status` Then STDOUT should not be empty When I run `wp plugin list` Then STDOUT should be a table containing rows: | name | status | update | version | update_version | auto_update | | Zombieland | active | none | 0.1.0 | | off | When I try `wp plugin uninstall Zombieland` Then STDERR should be: """ Warning: The 'Zombieland' plugin is active. Error: No plugins uninstalled. """ And the return code should be 1 When I run `wp plugin deactivate Zombieland` Then STDOUT should not be empty When I run `wp option get recently_activated` Then STDOUT should contain: """ Zombieland/Zombieland.php """ When I run `wp plugin uninstall Zombieland` Then STDOUT should be: """ Uninstalled and deleted 'Zombieland' plugin. Success: Uninstalled 1 of 1 plugins. """ And the {PLUGIN_DIR}/zombieland file should not exist When I try the previous command again Then STDERR should contain: """ Warning: """ And STDERR should contain: """ Zombieland """ And STDERR should contain: """ Error: No plugins uninstalled. """ And STDOUT should be empty And the return code should be 1 @require-wp-4.0 Scenario: Install a plugin, activate, then force install an older version of the plugin Given a WP install When I run `wp plugin install wordpress-importer --version=0.5 --force` Then STDOUT should not be empty When I run `wp plugin list --name=wordpress-importer --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 | | wordpress-importer | inactive | available | 0.5 | {UPDATE_VERSION} | When I run `wp plugin activate wordpress-importer` Then STDOUT should not be empty When I run `wp plugin install wordpress-importer --version=0.5 --force` Then STDOUT should not be empty When I run `wp plugin list` Then STDOUT should be a table containing rows: | name | status | update | version | update_version | auto_update | | wordpress-importer | active | available | 0.5 | {UPDATE_VERSION} | off | When I try `wp plugin update` Then STDERR should be: """ Error: Please specify one or more plugins, or use --all. """ And STDOUT should be empty And the return code should be 1 When I run `wp plugin update --all --format=summary | grep 'updated successfully from'` Then STDOUT should contain: """ WordPress Importer updated successfully from version 0.5 to version """ When I try `wp plugin update xxx yyy` Then STDERR should contain: """ Warning: The 'xxx' plugin could not be found. """ And STDERR should contain: """ Warning: The 'yyy' plugin could not be found. """ And STDERR should contain: """ Error: No plugins updated (2 failed). """ And the return code should be 1 When I run `wp plugin install wordpress-importer --version=0.5 --force` Then STDOUT should not be empty When I try `wp plugin update xxx wordpress-importer yyy` Then STDERR should contain: """ Warning: The 'xxx' plugin could not be found. """ And STDERR should contain: """ Warning: The 'yyy' plugin could not be found. """ And STDERR should contain: """ Error: Only updated 1 of 3 plugins (2 failed). """ And the return code should be 1 Scenario: Activate a network-only plugin on single site Given a WP install And a wp-content/plugins/network-only.php file: """ response['hello-dolly/hello.php'] ); $value->no_update['hello-dolly/hello.php']->new_version = '1.5'; return $value; } ); ?> """ When I run `wp plugin list --name=hello-dolly --field=version` And save STDOUT as {PLUGIN_VERSION} When I run `wp plugin list --name=hello-dolly --field=update_version` And save STDOUT as {UPDATE_VERSION} When I run `wp plugin list` Then STDOUT should be a table containing rows: | name | status | update | version | update_version | auto_update | | hello-dolly | inactive | version higher than expected | {PLUGIN_VERSION} | {UPDATE_VERSION} | off | When I try `wp plugin update --all` Then STDERR should be: """ Warning: hello-dolly: version higher than expected. Error: No plugins updated. """ When I try `wp plugin update hello-dolly` Then STDERR should be: """ Warning: hello-dolly: version higher than expected. Error: No plugins updated. """ Scenario: Only valid status filters are accepted when listing plugins Given a WP install When I run `wp plugin list` Then STDERR should be empty When I run `wp plugin list --status=active` Then STDERR should be empty When I try `wp plugin list --status=invalid-status` Then STDERR should be: """ Error: Parameter errors: Invalid value specified for 'status' (Filter the output by plugin status.) """ Scenario: Listing mu-plugins should include name and title Given a WP install And a wp-content/mu-plugins/test-mu.php file: """