diff --git a/features/core-check-update.feature b/features/core-check-update.feature index 3eda2d73..91522990 100644 --- a/features/core-check-update.feature +++ b/features/core-check-update.feature @@ -42,3 +42,37 @@ Feature: Check for more recent versions """ 1 """ + + Scenario: Check output of check update in different formats (no updates available) + Given a WP install + And a setup.php file: + """ + updates = []; + $obj->last_checked = strtotime( '1 January 2099' ); + $obj->version_checked = $wp_version; + $obj->translations = []; + set_site_transient( 'update_core', $obj ); + """ + And I run `wp eval-file setup.php` + + When I run `wp core check-update` + Then STDOUT should be: + """ + Success: WordPress is at the latest version. + """ + + When I run `wp core check-update --format=json` + Then STDOUT should be: + """ + [] + """ + + When I run `wp core check-update --format=yaml` + Then STDOUT should be: + """ + --- + """ diff --git a/src/Core_Command.php b/src/Core_Command.php index 80139080..950f1293 100644 --- a/src/Core_Command.php +++ b/src/Core_Command.php @@ -77,16 +77,18 @@ class Core_Command extends WP_CLI_Command { * @subcommand check-update */ public function check_update( $_, $assoc_args ) { + $format = Utils\get_flag_value( $assoc_args, 'format', 'table' ); $updates = $this->get_updates( $assoc_args ); - if ( $updates ) { + + if ( $updates || 'table' !== $format ) { $updates = array_reverse( $updates ); $formatter = new Formatter( $assoc_args, [ 'version', 'update_type', 'package_url' ] ); $formatter->display_items( $updates ); - } elseif ( empty( $assoc_args['format'] ) || 'table' === $assoc_args['format'] ) { + } else { WP_CLI::success( 'WordPress is at the latest version.' ); } }