From 9eb71dcf3c91ded631b3e6e833e8c77e8da36995 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 7 Mar 2026 08:10:20 +0000 Subject: [PATCH 1/9] Initial plan From 440c1dcf39ae1910f6bac9118d010e4de666ded0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 7 Mar 2026 08:25:49 +0000 Subject: [PATCH 2/9] Fix --skip-update-check in admin context by removing update hooks early Co-authored-by: swissspidy <841956+swissspidy@users.noreply.github.com> --- extension-command.php | 14 ++++++++++++++ features/plugin.feature | 9 +++++++++ features/theme.feature | 9 +++++++++ src/WP_CLI/CommandWithUpgrade.php | 6 ++++++ 4 files changed, 38 insertions(+) diff --git a/extension-command.php b/extension-command.php index 18b87efd0..670e14ba6 100644 --- a/extension-command.php +++ b/extension-command.php @@ -22,3 +22,17 @@ WP_CLI::add_command( 'theme', 'Theme_Command' ); WP_CLI::add_command( 'theme auto-updates', 'Theme_AutoUpdates_Command', $wpcli_extension_requires_wp_5_5 ); WP_CLI::add_command( 'theme mod', 'Theme_Mod_Command' ); + +// In admin context, WordPress hooks wp_update_plugins/wp_update_themes to the +// load-plugins.php/load-themes.php actions, causing update checks to run even +// when --skip-update-check is passed. Remove those callbacks via admin_init, +// which fires before load-plugins.php/load-themes.php. +if ( isset( WP_CLI::get_runner()->assoc_args['skip-update-check'] ) ) { + WP_CLI::add_wp_hook( + 'admin_init', + static function () { + remove_action( 'load-plugins.php', 'wp_update_plugins' ); + remove_action( 'load-themes.php', 'wp_update_themes' ); + } + ); +} diff --git a/features/plugin.feature b/features/plugin.feature index cacaa9966..f71eda26a 100644 --- a/features/plugin.feature +++ b/features/plugin.feature @@ -433,6 +433,15 @@ Feature: Manage WordPress plugins | name | status | update | | wordpress-importer | inactive | none | + When I run `wp plugin list --fields=name,status,update --status=inactive --skip-update-check --debug=http` + Then STDERR should not contain: + """ + HTTP POST request to https://api.wordpress.org/plugins/update-check + """ + And STDOUT should be a table containing rows: + | name | status | update | + | wordpress-importer | inactive | none | + # WordPress Importer requires WP 5.2. @require-wp-5.2 Scenario: Install a plugin when directory doesn't yet exist diff --git a/features/theme.feature b/features/theme.feature index 259f1f681..6b5aac8b8 100644 --- a/features/theme.feature +++ b/features/theme.feature @@ -233,6 +233,15 @@ Feature: Manage WordPress themes | name | status | update | | astra | inactive | none | + When I run `wp theme list --fields=name,status,update --skip-update-check --debug=http` + Then STDERR should not contain: + """ + HTTP POST request to https://api.wordpress.org/themes/update-check + """ + And STDOUT should be a table containing rows: + | name | status | update | + | astra | inactive | none | + Scenario: Doing wp theme list does a force check by default, deleting any existing transient values Given a WP install diff --git a/src/WP_CLI/CommandWithUpgrade.php b/src/WP_CLI/CommandWithUpgrade.php index d1623c979..d313a5d27 100755 --- a/src/WP_CLI/CommandWithUpgrade.php +++ b/src/WP_CLI/CommandWithUpgrade.php @@ -824,6 +824,12 @@ protected function _list( $_, $assoc_args ) { if ( false === Utils\get_flag_value( $assoc_args, 'skip-update-check', false ) ) { delete_site_transient( $this->upgrade_transient ); call_user_func( $this->upgrade_refresh ); + } else { + // In admin context, WordPress hooks wp_update_plugins/wp_update_themes to the + // load-plugins.php/load-themes.php actions. Remove those callbacks to prevent + // update checks from running when --skip-update-check is passed. + remove_action( 'load-plugins.php', 'wp_update_plugins' ); + remove_action( 'load-themes.php', 'wp_update_themes' ); } $all_items = $this->get_all_items(); From 6270d9b5fa127fff735af6d5724ba3617f05658d Mon Sep 17 00:00:00 2001 From: Pascal Birchler Date: Sun, 8 Mar 2026 22:45:43 +0100 Subject: [PATCH 3/9] Simplify tests & implementation --- extension-command.php | 40 +++++++++++++++++++++---------- features/plugin.feature | 5 ---- features/theme.feature | 5 ---- src/WP_CLI/CommandWithUpgrade.php | 6 ----- 4 files changed, 28 insertions(+), 28 deletions(-) diff --git a/extension-command.php b/extension-command.php index 670e14ba6..3cc65c80c 100644 --- a/extension-command.php +++ b/extension-command.php @@ -23,16 +23,32 @@ WP_CLI::add_command( 'theme auto-updates', 'Theme_AutoUpdates_Command', $wpcli_extension_requires_wp_5_5 ); WP_CLI::add_command( 'theme mod', 'Theme_Mod_Command' ); -// In admin context, WordPress hooks wp_update_plugins/wp_update_themes to the -// load-plugins.php/load-themes.php actions, causing update checks to run even -// when --skip-update-check is passed. Remove those callbacks via admin_init, -// which fires before load-plugins.php/load-themes.php. -if ( isset( WP_CLI::get_runner()->assoc_args['skip-update-check'] ) ) { - WP_CLI::add_wp_hook( - 'admin_init', - static function () { - remove_action( 'load-plugins.php', 'wp_update_plugins' ); - remove_action( 'load-themes.php', 'wp_update_themes' ); +// In admin context, WordPress hooks wp_update_plugins/wp_update_themes to +// various actions, causing update checks to run even when --skip-update-check is passed. + +WP_CLI::add_hook( + 'before_wp_load', + static function () { + if ( ! \WP_CLI\Utils\get_flag_value( WP_CLI::get_runner()->assoc_args, 'skip-update-check' ) ) { + return; } - ); -} + + WP_CLI::add_wp_hook( + 'wp_loaded', + static function () { + remove_action( 'load-plugins.php', 'wp_update_plugins' ); + remove_action( 'load-update.php', 'wp_update_plugins' ); + remove_action( 'load-update-core.php', 'wp_update_plugins' ); + remove_action( 'admin_init', '_maybe_update_plugins' ); + remove_action( 'wp_update_plugins', 'wp_update_plugins' ); + + remove_action( 'load-themes.php', 'wp_update_themes' ); + remove_action( 'load-update.php', 'wp_update_themes' ); + remove_action( 'load-update-core.php', 'wp_update_themes' ); + remove_action( 'admin_init', '_maybe_update_themes' ); + remove_action( 'wp_update_themes', 'wp_update_themes' ); + }, + PHP_INT_MIN + ); + } +); diff --git a/features/plugin.feature b/features/plugin.feature index f71eda26a..90fbae31f 100644 --- a/features/plugin.feature +++ b/features/plugin.feature @@ -428,11 +428,6 @@ Feature: Manage WordPress plugins Success: Transient deleted. """ - When I run `wp plugin list --fields=name,status,update --status=inactive --skip-update-check` - Then STDOUT should be a table containing rows: - | name | status | update | - | wordpress-importer | inactive | none | - When I run `wp plugin list --fields=name,status,update --status=inactive --skip-update-check --debug=http` Then STDERR should not contain: """ diff --git a/features/theme.feature b/features/theme.feature index 6b5aac8b8..591a0d877 100644 --- a/features/theme.feature +++ b/features/theme.feature @@ -228,11 +228,6 @@ Feature: Manage WordPress themes Success: Transient deleted. """ - When I run `wp theme list --fields=name,status,update --skip-update-check` - Then STDOUT should be a table containing rows: - | name | status | update | - | astra | inactive | none | - When I run `wp theme list --fields=name,status,update --skip-update-check --debug=http` Then STDERR should not contain: """ diff --git a/src/WP_CLI/CommandWithUpgrade.php b/src/WP_CLI/CommandWithUpgrade.php index d313a5d27..d1623c979 100755 --- a/src/WP_CLI/CommandWithUpgrade.php +++ b/src/WP_CLI/CommandWithUpgrade.php @@ -824,12 +824,6 @@ protected function _list( $_, $assoc_args ) { if ( false === Utils\get_flag_value( $assoc_args, 'skip-update-check', false ) ) { delete_site_transient( $this->upgrade_transient ); call_user_func( $this->upgrade_refresh ); - } else { - // In admin context, WordPress hooks wp_update_plugins/wp_update_themes to the - // load-plugins.php/load-themes.php actions. Remove those callbacks to prevent - // update checks from running when --skip-update-check is passed. - remove_action( 'load-plugins.php', 'wp_update_plugins' ); - remove_action( 'load-themes.php', 'wp_update_themes' ); } $all_items = $this->get_all_items(); From 78deb28cf7e9a4ac5e379a28ff84b1bce9730cfc Mon Sep 17 00:00:00 2001 From: Pascal Birchler Date: Mon, 9 Mar 2026 14:18:56 +0100 Subject: [PATCH 4/9] Make plugin search test more robust --- features/plugin-search.feature | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/plugin-search.feature b/features/plugin-search.feature index ab5e5bbc6..8a560a4fb 100644 --- a/features/plugin-search.feature +++ b/features/plugin-search.feature @@ -22,7 +22,7 @@ Feature: Search WordPress.org plugins Scenario: Search for plugins with url field Given a WP install - When I run `wp plugin search gutenberg --fields=slug,url --format=csv` + When I run `wp plugin search gutenberg --fields=slug,url --format=csv --per-page=20` Then STDOUT should contain: """ gutenberg,https://wordpress.org/plugins/gutenberg/ From 364548baee8dd13253ff8d75cf3d2a45707092cf Mon Sep 17 00:00:00 2001 From: Pascal Birchler Date: Mon, 9 Mar 2026 14:47:58 +0100 Subject: [PATCH 5/9] Fix stale cache & slug issue --- features/plugin-install.feature | 4 ++++ src/WP_CLI/CommandWithUpgrade.php | 16 ++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/features/plugin-install.feature b/features/plugin-install.feature index 6fc3b5382..98793c2a0 100644 --- a/features/plugin-install.feature +++ b/features/plugin-install.feature @@ -323,6 +323,10 @@ Feature: Install WordPress plugins """ Warning: Plugin already installed. """ + And STDERR should not contain: + """ + plugin could not be found + """ And STDOUT should contain: """ Success: Plugin already installed. diff --git a/src/WP_CLI/CommandWithUpgrade.php b/src/WP_CLI/CommandWithUpgrade.php index d1623c979..e7d64d406 100755 --- a/src/WP_CLI/CommandWithUpgrade.php +++ b/src/WP_CLI/CommandWithUpgrade.php @@ -254,7 +254,11 @@ public function install( $args, $assoc_args ) { } else { // $result is WP_Error here WP_CLI::warning( $result->get_error_message() ); - if ( 'already_installed' !== $result->get_error_code() ) { + if ( 'already_installed' === $result->get_error_code() ) { + if ( $result->get_error_data( 'slug' ) ) { + $slug = $result->get_error_data( 'slug' ); + } + } else { ++$errors; } } @@ -338,6 +342,11 @@ public function install( $args, $assoc_args ) { } } + // Only plugins cache really exists. + if ( 'plugin' === $this->item_type ) { + wp_cache_delete( 'plugins', 'plugins' ); + } + // Check extension is available or not. $extension = $this->fetcher->get_many( array( $slug ) ); @@ -411,7 +420,10 @@ protected function install_from_php_file( $url, $assoc_args ) { // Check if plugin is already installed before downloading. if ( file_exists( $dest_path ) && ! Utils\get_flag_value( $assoc_args, 'force' ) ) { - return new WP_Error( 'already_installed', 'Plugin already installed.' ); + $error = new WP_Error( 'already_installed', 'Plugin already installed.' ); + // An easy way to provide the slug of the installed plugin. + $error->add_data( $dest_filename, 'slug' ); + return $error; } // Ensure plugin directory exists. From cf22fe0fb9fda2a71f73ddf49e3906ef3d373f4e Mon Sep 17 00:00:00 2001 From: Pascal Birchler Date: Mon, 9 Mar 2026 14:50:19 +0100 Subject: [PATCH 6/9] Expect BuddyPress redirect warning --- features/plugin-dependencies.feature | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/features/plugin-dependencies.feature b/features/plugin-dependencies.feature index 96c0f41b2..4d60fcfcf 100644 --- a/features/plugin-dependencies.feature +++ b/features/plugin-dependencies.feature @@ -119,7 +119,8 @@ Feature: Plugin dependencies support Warning: akismet: Plugin already installed. """ - When I run `wp plugin list --fields=name,status --format=csv` + # Expecting a warning for BuddyPress attempting a redirect upon activation. + When I try `wp plugin list --fields=name,status --format=csv` Then STDOUT should contain: """ buddypress,active From d5d70d48722f20a1e63ba95866f49062affbd879 Mon Sep 17 00:00:00 2001 From: Pascal Birchler Date: Mon, 9 Mar 2026 15:15:39 +0100 Subject: [PATCH 7/9] Replace duplicate-post in tests --- features/plugin-auto-updates-disable.feature | 6 +++--- features/plugin-auto-updates-enable.feature | 6 +++--- features/plugin-auto-updates-status.feature | 20 ++++++++++---------- features/plugin-dependencies.feature | 4 ++-- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/features/plugin-auto-updates-disable.feature b/features/plugin-auto-updates-disable.feature index af988a46b..57eb1c5b5 100644 --- a/features/plugin-auto-updates-disable.feature +++ b/features/plugin-auto-updates-disable.feature @@ -2,7 +2,7 @@ Feature: Disable auto-updates for WordPress plugins Background: Given a WP install - And I run `wp plugin install duplicate-post https://github.com/wp-cli/sample-plugin/archive/refs/heads/master.zip --ignore-requirements` + And I run `wp plugin install debug-bar https://github.com/wp-cli/sample-plugin/archive/refs/heads/master.zip --ignore-requirements` And I run `wp plugin auto-updates enable --all` @require-wp-5.5 @@ -25,7 +25,7 @@ Feature: Disable auto-updates for WordPress plugins @require-wp-5.5 Scenario: Disable auto-updates for multiple plugins - When I run `wp plugin auto-updates disable sample-plugin duplicate-post` + When I run `wp plugin auto-updates disable sample-plugin debug-bar` Then STDOUT should be: """ Success: Disabled 2 of 2 plugin auto-updates. @@ -73,7 +73,7 @@ Feature: Disable auto-updates for WordPress plugins @require-wp-5.5 Scenario: Filter when disabling auto-updates for already disabled selection of plugins When I run `wp plugin auto-updates disable sample-plugin` - And I run `wp plugin auto-updates disable sample-plugin duplicate-post --enabled-only` + And I run `wp plugin auto-updates disable sample-plugin debug-bar --enabled-only` Then STDOUT should be: """ Success: Disabled 1 of 1 plugin auto-updates. diff --git a/features/plugin-auto-updates-enable.feature b/features/plugin-auto-updates-enable.feature index 73de4ba53..19b6384ac 100644 --- a/features/plugin-auto-updates-enable.feature +++ b/features/plugin-auto-updates-enable.feature @@ -2,7 +2,7 @@ Feature: Enable auto-updates for WordPress plugins Background: Given a WP install - And I run `wp plugin install duplicate-post https://github.com/wp-cli/sample-plugin/archive/refs/heads/master.zip --ignore-requirements` + And I run `wp plugin install debug-bar https://github.com/wp-cli/sample-plugin/archive/refs/heads/master.zip --ignore-requirements` @require-wp-5.5 Scenario: Show an error if required params are missing @@ -24,7 +24,7 @@ Feature: Enable auto-updates for WordPress plugins @require-wp-5.5 Scenario: Enable auto-updates for multiple plugins - When I run `wp plugin auto-updates enable sample-plugin duplicate-post` + When I run `wp plugin auto-updates enable sample-plugin debug-bar` Then STDOUT should be: """ Success: Enabled 2 of 2 plugin auto-updates. @@ -72,7 +72,7 @@ Feature: Enable auto-updates for WordPress plugins @require-wp-5.5 Scenario: Filter when enabling auto-updates for already enabled selection of plugins When I run `wp plugin auto-updates enable sample-plugin` - And I run `wp plugin auto-updates enable sample-plugin duplicate-post --disabled-only` + And I run `wp plugin auto-updates enable sample-plugin debug-bar --disabled-only` Then STDOUT should be: """ Success: Enabled 1 of 1 plugin auto-updates. diff --git a/features/plugin-auto-updates-status.feature b/features/plugin-auto-updates-status.feature index d4a7c424a..4bda97364 100644 --- a/features/plugin-auto-updates-status.feature +++ b/features/plugin-auto-updates-status.feature @@ -2,7 +2,7 @@ Feature: Show the status of auto-updates for WordPress plugins Background: Given a WP install - And I run `wp plugin install duplicate-post https://github.com/wp-cli/sample-plugin/archive/refs/heads/master.zip --ignore-requirements` + And I run `wp plugin install debug-bar https://github.com/wp-cli/sample-plugin/archive/refs/heads/master.zip --ignore-requirements` @require-wp-5.5 Scenario: Show an error if required params are missing @@ -23,10 +23,10 @@ Feature: Show the status of auto-updates for WordPress plugins @require-wp-5.5 Scenario: Show the status of auto-updates multiple plugins - When I run `wp plugin auto-updates status duplicate-post sample-plugin` + When I run `wp plugin auto-updates status debug-bar sample-plugin` Then STDOUT should be a table containing rows: | name | status | - | duplicate-post | disabled | + | debug-bar | disabled | | sample-plugin | disabled | And the return code should be 0 @@ -36,7 +36,7 @@ Feature: Show the status of auto-updates for WordPress plugins Then STDOUT should be a table containing rows: | name | status | | akismet | disabled | - | duplicate-post | disabled | + | debug-bar | disabled | | sample-plugin | disabled | And the return code should be 0 @@ -45,7 +45,7 @@ Feature: Show the status of auto-updates for WordPress plugins Then STDOUT should be a table containing rows: | name | status | | akismet | enabled | - | duplicate-post | enabled | + | debug-bar | enabled | | sample-plugin | enabled | And the return code should be 0 @@ -57,7 +57,7 @@ Feature: Show the status of auto-updates for WordPress plugins Then STDOUT should be a table containing rows: | name | status | | akismet | disabled | - | duplicate-post | disabled | + | debug-bar | disabled | | sample-plugin | enabled | And the return code should be 0 @@ -71,7 +71,7 @@ Feature: Show the status of auto-updates for WordPress plugins Then STDOUT should be a table containing rows: | name | status | | akismet | disabled | - | duplicate-post | disabled | + | debug-bar | disabled | And the return code should be 0 When I try `wp plugin auto-updates status --all --enabled-only --disabled-only` @@ -92,7 +92,7 @@ Feature: Show the status of auto-updates for WordPress plugins """ And STDOUT should contain: """ - duplicate-post + debug-bar """ When I run `wp plugin auto-updates status sample-plugin --field=status` @@ -114,7 +114,7 @@ Feature: Show the status of auto-updates for WordPress plugins """ And STDOUT should contain: """ - {"name":"duplicate-post","status":"disabled"} + {"name":"debug-bar","status":"disabled"} """ When I run `wp plugin auto-updates status --all --format=csv` @@ -128,7 +128,7 @@ Feature: Show the status of auto-updates for WordPress plugins """ And STDOUT should contain: """ - duplicate-post,disabled + debug-bar,disabled """ @require-wp-5.5 diff --git a/features/plugin-dependencies.feature b/features/plugin-dependencies.feature index 4d60fcfcf..0ff7ac1a3 100644 --- a/features/plugin-dependencies.feature +++ b/features/plugin-dependencies.feature @@ -61,7 +61,7 @@ Feature: Plugin dependencies support Date: Mon, 9 Mar 2026 15:35:19 +0100 Subject: [PATCH 8/9] Fix remaining test --- features/plugin-dependencies.feature | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/features/plugin-dependencies.feature b/features/plugin-dependencies.feature index 0ff7ac1a3..0faae7744 100644 --- a/features/plugin-dependencies.feature +++ b/features/plugin-dependencies.feature @@ -61,7 +61,7 @@ Feature: Plugin dependencies support Date: Mon, 9 Mar 2026 18:23:11 +0100 Subject: [PATCH 9/9] Replace hello-dolly in some tests --- features/plugin-install.feature | 44 ++++++++++++++++----------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/features/plugin-install.feature b/features/plugin-install.feature index 98793c2a0..c748546ef 100644 --- a/features/plugin-install.feature +++ b/features/plugin-install.feature @@ -375,14 +375,14 @@ Feature: Install WordPress plugins Scenario: Install plugin using WordPress.org directory URL Given a WP install - When I run `wp plugin install https://wordpress.org/plugins/hello-dolly/` + When I run `wp plugin install https://wordpress.org/plugins/debug-bar/` Then STDOUT should contain: """ - Detected WordPress.org plugins directory URL, using slug: hello-dolly + Detected WordPress.org plugins directory URL, using slug: debug-bar """ And the return code should be 0 - When I run `wp plugin list --name=hello-dolly --field=status` + When I run `wp plugin list --name=debug-bar --field=status` Then STDOUT should be: """ inactive @@ -391,14 +391,14 @@ Feature: Install WordPress plugins Scenario: Install and activate plugin using WordPress.org directory URL Given a WP install - When I run `wp plugin install https://wordpress.org/plugins/hello-dolly/ --activate` + When I run `wp plugin install https://wordpress.org/plugins/debug-bar/ --activate` Then STDOUT should contain: """ - Detected WordPress.org plugins directory URL, using slug: hello-dolly + Detected WordPress.org plugins directory URL, using slug: debug-bar """ And the return code should be 0 - When I run `wp plugin list --name=hello-dolly --field=status` + When I run `wp plugin list --name=debug-bar --field=status` Then STDOUT should be: """ active @@ -407,35 +407,35 @@ Feature: Install WordPress plugins Scenario: Install with --activate on already-active plugin should keep it activated Given a WP install - When I run `wp plugin install hello-dolly --activate` + When I run `wp plugin install debug-bar --activate` Then STDOUT should contain: """ - Plugin 'hello-dolly' activated. + Plugin 'debug-bar' activated. """ And the return code should be 0 - When I run `wp plugin list --name=hello-dolly --field=status` + When I run `wp plugin list --name=debug-bar --field=status` Then STDOUT should be: """ active """ - When I try `wp plugin install hello-dolly --activate` + When I try `wp plugin install debug-bar --activate` Then STDERR should contain: """ - Warning: hello-dolly: Plugin already installed. + Warning: debug-bar: Plugin already installed. """ And STDOUT should contain: """ - Activating 'hello-dolly'... + Activating 'debug-bar'... """ And STDOUT should contain: """ - Plugin 'hello-dolly' activated. + Plugin 'debug-bar' activated. """ And the return code should be 0 - When I run `wp plugin list --name=hello-dolly --field=status` + When I run `wp plugin list --name=debug-bar --field=status` Then STDOUT should be: """ active @@ -444,35 +444,35 @@ Feature: Install WordPress plugins Scenario: Install with --activate-network on already-network-active plugin should keep it activated Given a WP multisite install - When I run `wp plugin install hello-dolly --activate-network` + When I run `wp plugin install debug-bar --activate-network` Then STDOUT should contain: """ - Plugin 'hello-dolly' network activated. + Plugin 'debug-bar' network activated. """ And the return code should be 0 - When I run `wp plugin list --name=hello-dolly --field=status` + When I run `wp plugin list --name=debug-bar --field=status` Then STDOUT should be: """ active-network """ - When I try `wp plugin install hello-dolly --activate-network` + When I try `wp plugin install debug-bar --activate-network` Then STDERR should contain: """ - Warning: hello-dolly: Plugin already installed. + Warning: debug-bar: Plugin already installed. """ And STDOUT should contain: """ - Network-activating 'hello-dolly'... + Network-activating 'debug-bar'... """ And STDOUT should contain: """ - Plugin 'hello-dolly' network activated. + Plugin 'debug-bar' network activated. """ And the return code should be 0 - When I run `wp plugin list --name=hello-dolly --field=status` + When I run `wp plugin list --name=debug-bar --field=status` Then STDOUT should be: """ active-network