From 31dfb2a2c22934068b9833dbbf175b93dddca82c Mon Sep 17 00:00:00 2001 From: gitlost Date: Sat, 2 Dec 2017 01:34:09 +0000 Subject: [PATCH 1/4] Speed up the tests a bit, primarily when running locally. --- features/bootstrap.feature | 2 +- features/bootstrap/FeatureContext.php | 114 ++++++++++++++++++++++++-- features/cli.feature | 32 ++------ features/skip-themes.feature | 80 ++++++++---------- features/steps/given.php | 6 +- utils/make-phar.php | 9 +- 6 files changed, 157 insertions(+), 86 deletions(-) diff --git a/features/bootstrap.feature b/features/bootstrap.feature index 6f1365d5d6..f2e1f2f1f7 100644 --- a/features/bootstrap.feature +++ b/features/bootstrap.feature @@ -148,7 +148,7 @@ Feature: Bootstrap WP-CLI Scenario: Override command bundled with freshly built PHAR Given an empty directory - And a new Phar with the same version + And a new Phar with the same version and cli build And a cli-override-command/cli.php file: """ '127.0.0.1', ); + /** + * Variables for `do_mysqli()`. + */ + private static $dbh = null; // Database handle. + private static $db_selected = false; // Whether database selected (opened). + /** * Array of background process ids started by the current scenario. Used to terminate them at the end of the scenario. */ @@ -88,7 +94,7 @@ class FeatureContext extends BehatContext implements ClosuredContextInterface { /** * Array of variables available as {VARIABLE_NAME}. Some are always set: CORE_CONFIG_SETTINGS, SRC_DIR, CACHE_DIR, WP_VERSION-version-latest. Some are step-dependent: - * RUN_DIR, SUITE_CACHE_DIR, COMPOSER_LOCAL_REPOSITORY, PHAR_PATH. Scenarios can define their own variables using "Given save" steps. Variables are reset for each scenario. + * RUN_DIR, SUITE_CACHE_DIR, COMPOSER_LOCAL_REPOSITORY, COMPOSER_PATH, PHAR_PATH. Scenarios can define their own variables using "Given save" steps. Variables are reset for each scenario. */ public $variables = array(); @@ -409,7 +415,13 @@ public function create_run_dir() { } } - public function build_phar( $version = 'same' ) { + /** + * Build a phar based on whatever's in the directory from which behat is run. + * + * @param string $version Version to set it to. (Note: has no correspondence with the actual version of the contained source.) + * @param string $build If set to "cli" will do a fast build without any bundled commands - "cli" command only. Defaults to '' (full build). + */ + public function build_phar( $version = 'same', $build = '' ) { $this->variables['PHAR_PATH'] = $this->variables['RUN_DIR'] . '/' . uniqid( "wp-cli-build-", TRUE ) . '.phar'; // Test running against a package installed as a WP-CLI dependency @@ -425,13 +437,17 @@ public function build_phar( $version = 'same' ) { } $this->proc( Utils\esc_cmd( - 'php -dphar.readonly=0 %1$s %2$s --version=%3$s && chmod +x %2$s', + 'php -dphar.readonly=0 %1$s %2$s --version=%3$s --quiet --build=%4$s', $make_phar_path, $this->variables['PHAR_PATH'], - $version + $version, + $build ) )->run_check(); } + /** + * Download a released phar from github.com. Note: not currently used in any test. + */ public function download_phar( $version = 'same' ) { if ( 'same' === $version ) { $version = WP_CLI_VERSION; @@ -483,20 +499,30 @@ private static function run_sql( $sql_cmd, $assoc_args = array(), $add_database $start_time = microtime( true ); Utils\run_mysql_command( $sql_cmd, array_merge( $assoc_args, $default_assoc_args ) ); if ( self::$log_run_times ) { - self::log_proc_method_run_time( 'run_sql ' . $sql_cmd, $start_time ); + self::log_proc_method_run_time( $sql_cmd . ' ' . Utils\assoc_args_to_str( $assoc_args ), $start_time ); } } + /** + * Create the `$db_settings['dbname']` test database. Called on a "Given a database" step and on the various "Given a WP install..." steps. + */ public function create_db() { $dbname = self::$db_settings['dbname']; - self::run_sql( 'mysql --no-defaults', array( 'execute' => "CREATE DATABASE IF NOT EXISTS $dbname" ) ); + self::do_mysqli( "CREATE DATABASE IF NOT EXISTS `$dbname` CHARSET 'UTF8'" ); } + /** + * Drop the `$db_settings['dbname']` test database. Done at the beginning of every scenario. + */ public function drop_db() { $dbname = self::$db_settings['dbname']; - self::run_sql( 'mysql --no-defaults', array( 'execute' => "DROP DATABASE IF EXISTS $dbname" ) ); + self::do_mysqli( "DROP DATABASE IF EXISTS `$dbname`" ); + self::$db_selected = false; } + /** + * Run a process from the RUN_DIR directory (or a sub-directory of it if given `$path`). + */ public function proc( $command, $assoc_args = array(), $path = '' ) { if ( !empty( $assoc_args ) ) $command .= Utils\assoc_args_to_str( $assoc_args ); @@ -563,6 +589,9 @@ public function add_line_to_wp_config( &$wp_config_code, $line ) { $wp_config_code = str_replace( $token, "$line\n\n$token", $wp_config_code ); } + /** + * "Downloads" wp in the sense that it copies the version downloaded and cached by `cache_wp_files()` from CACHE_DIR to RUN_DIR (or a sub-directory of it if given `$subdir`). + */ public function download_wp( $subdir = '' ) { $dest_dir = $this->variables['RUN_DIR'] . "/$subdir"; @@ -584,6 +613,7 @@ public function create_config( $subdir = '', $extra_php = false ) { $params['dbprefix'] = $subdir ? preg_replace( '#[^a-zA-Z\_0-9]#', '_', $subdir ) : 'wp_'; $params['skip-salts'] = true; + $params['skip-check'] = true; if( false !== $extra_php ) { $params['extra-php'] = $extra_php; @@ -636,13 +666,16 @@ public function install_wp( $subdir = '' ) { if ( $install_cache_path && file_exists( $install_cache_path ) ) { self::copy_dir( $install_cache_path, $run_dir ); - self::run_sql( 'mysql --no-defaults', array( 'execute' => "source {$install_cache_path}.sql" ), true /*add_database*/ ); + self::do_mysqli_source( $install_cache_path . '.sql' ); } else { $this->proc( 'wp core install', $install_args, $subdir )->run_check(); if ( $install_cache_path ) { mkdir( $install_cache_path ); self::dir_diff_copy( $run_dir, self::$cache_dir, $install_cache_path ); - self::run_sql( 'mysqldump --no-defaults', array( 'result-file' => "{$install_cache_path}.sql" ), true /*add_database*/ ); + $install_cache_sql = $install_cache_path . '.sql'; + self::run_sql( 'mysqldump --no-defaults --skip-comments', array( 'result-file' => $install_cache_sql ), true /*add_database*/ ); + // Remove conditional and lock tables statements. + file_put_contents( $install_cache_sql, preg_replace( array( '/^\/\*[^*]+\*\/;\n/m', '/^(?:UN)?LOCK TABLES[^;]*;\n/m' ), '', file_get_contents( $install_cache_sql ) ) ); } } } @@ -717,6 +750,69 @@ private function composer_command($cmd) { $this->proc( $this->variables['COMPOSER_PATH'] . ' ' . $cmd )->run_check(); } + /** + * Do a MySQL query with `$db_settings`, using the PHP mysqli extension. Slightly faster than `run_sql()`. + * + * @param string $sql_cmd MySQL query. + * @param bool $open_database Whether to open (select) the database or not. + * @param bool $multi_query Whether the query contains multiple statements or not. + * @param bool $no_log If set won't log timing if using log run times. + */ + private static function do_mysqli( $sql_cmd, $open_database = false, $multi_query = false, $no_log = false ) { + $start_time = microtime( true ); + + if ( null === self::$dbh ) { + if ( ! ( self::$dbh = mysqli_connect( self::$db_settings['dbhost'], self::$db_settings['dbuser'], self::$db_settings['dbpass'] ) ) ) { + throw new \RuntimeException( + sprintf( "Failed to connect to MySQL database host '%s', user '%s', pass '%s'.", self::$db_settings['dbhost'], self::$db_settings['dbuser'], self::$db_settings['dbpass'] ) + ); + } + } + if ( $open_database && ! self::$db_selected ) { + if ( ! mysqli_select_db( self::$dbh, self::$db_settings['dbname'] ) ) { + throw new \RuntimeException( sprintf( "Failed to open MySQL database name '%s'.", self::$db_settings['dbname'] ) ); + } + self::$db_selected = true; + } + if ( $multi_query ) { + if ( ! mysqli_multi_query( self::$dbh, $sql_cmd ) ) { + throw new \RuntimeException( sprintf( "Failed to execute MySQL query '%s': %d: %s", $sql_cmd, mysqli_errno( self::$dbh ), mysqli_error( self::$dbh ) ) ); + } + // Throw away the stored results (otherwise will get "out of sync" errors). + while ( mysqli_more_results( self::$dbh ) ) { + mysqli_next_result( self::$dbh ); + } + } else { + if ( ! mysqli_query( self::$dbh, $sql_cmd ) ) { + throw new \RuntimeException( sprintf( "Failed to execute MySQL query '%s': %d: %s", $sql_cmd, mysqli_errno( self::$dbh ), mysqli_error( self::$dbh ) ) ); + } + } + if ( self::$log_run_times && ! $no_log ) { + self::log_proc_method_run_time( 'do_mysqli ' . $sql_cmd, $start_time ); + } + } + + /** + * Do a MySQL SOURCE command using the PHP mysqli extension. Slightly faster than doing a mysql SOURCE command using `run_sql()`. + * + * @param string $source_file Name of MySQL source ".sql" file. + */ + private static function do_mysqli_source( $source_file ) { + $start_time = microtime( true ); + + static $files = array(); + + if ( ! isset( $files[ $source_file ] ) ) { + $files[ $source_file ] = file_get_contents( $source_file ); + } + + self::do_mysqli( $files[ $source_file ], true /*open_database*/, true /*multi_query*/, true /*no_log*/ ); + + if ( self::$log_run_times ) { + self::log_proc_method_run_time( 'do_mysqli_source ' . $source_file, $start_time ); + } + } + /** * Initialize run time logging. */ diff --git a/features/cli.feature b/features/cli.feature index 819fe01c58..7c29e5dfa3 100644 --- a/features/cli.feature +++ b/features/cli.feature @@ -30,7 +30,7 @@ Feature: `wp cli` tasks Scenario: Ability to set a custom version when building Given an empty directory And save the {SRC_DIR}/VERSION file as {TRUE_VERSION} - And a new Phar with version "1.2.3" + And a new Phar with version "1.2.3" and cli build When I run `{PHAR_PATH} cli version` Then STDOUT should be: @@ -45,19 +45,18 @@ Feature: `wp cli` tasks @github-api Scenario: Check for updates Given an empty directory - And a new Phar with version "0.0.0" + And a new Phar with version "0.0.0" and cli build When I run `{PHAR_PATH} cli check-update` Then STDOUT should contain: """ package_url """ - And STDERR should be empty @github-api Scenario: Do WP-CLI Update Given an empty directory - And a new Phar with version "0.0.0" + And a new Phar with version "0.0.0" and cli build When I run `{PHAR_PATH} --info` Then STDOUT should contain: @@ -78,8 +77,6 @@ Feature: `wp cli` tasks """ Success: """ - And STDERR should be empty - And the return code should be 0 When I run `{PHAR_PATH} --info` Then STDOUT should contain: @@ -100,7 +97,7 @@ Feature: `wp cli` tasks @github-api Scenario: Patch update from 0.14.0 to 0.14.1 Given an empty directory - And a new Phar with version "0.14.0" + And a new Phar with version "0.14.0" and cli build When I run `{PHAR_PATH} --version` Then STDOUT should be: @@ -117,8 +114,6 @@ Feature: `wp cli` tasks """ Success: Updated WP-CLI to 0.14.1 """ - And STDERR should be empty - And the return code should be 0 When I run `{PHAR_PATH} --version` Then STDOUT should be: @@ -129,7 +124,7 @@ Feature: `wp cli` tasks @github-api Scenario: Not a patch update from 0.14.0 Given an empty directory - And a new Phar with version "0.14.0" + And a new Phar with version "0.14.0" and cli build When I run `{PHAR_PATH} cli update --no-patch --yes` Then STDOUT should contain: @@ -140,13 +135,11 @@ Feature: `wp cli` tasks """ 0.14.1 """ - And STDERR should be empty - And the return code should be 0 - @require-php-5.6 + @github-api Scenario: Install WP-CLI nightly Given an empty directory - And a new Phar with version "0.14.0" + And a new Phar with version "0.14.0" and cli build When I run `{PHAR_PATH} cli update --nightly --yes` Then STDOUT should contain: @@ -158,13 +151,10 @@ Feature: `wp cli` tasks Success: Updated WP-CLI to the latest nightly release. """ - And STDERR should be empty - And the return code should be 0 - - @github-api @less-than-php-7 + @github-api Scenario: Install WP-CLI stable Given an empty directory - And a new Phar with version "0.14.0" + And a new Phar with version "0.14.0" and cli build And a session file: """ y @@ -187,8 +177,6 @@ Feature: `wp cli` tasks """ Success: Updated WP-CLI to the latest stable release. """ - And STDERR should be empty - And the return code should be 0 When I run `{PHAR_PATH} cli check-update` Then STDOUT should be: @@ -210,5 +198,3 @@ Feature: `wp cli` tasks """ 17"current": """ - And STDERR should be empty - And the return code should be 0 diff --git a/features/skip-themes.feature b/features/skip-themes.feature index 7a710c719b..01756a6418 100644 --- a/features/skip-themes.feature +++ b/features/skip-themes.feature @@ -1,118 +1,109 @@ Feature: Skipping themes + Given download: + | path | url | + | {CACHE_DIR}/classic.1.6.zip | https://downloads.wordpress.org/theme/classic.1.6.zip | + | {CACHE_DIR}/espied.1.2.2.zip | https://downloads.wordpress.org/theme/espied.1.2.2.zip | + | {CACHE_DIR}/sidespied.1.0.3.zip | https://downloads.wordpress.org/theme/sidespied.1.0.3.zip | Scenario: Skipping themes via global flag Given a WP install - And I run `wp theme install classic` - And I run `wp theme install default --activate` + And I run `wp theme install {CACHE_DIR}/classic.1.6.zip` + And I run `wp theme install {CACHE_DIR}/espied.1.2.2.zip --activate` - When I run `wp eval 'var_export( function_exists( "kubrick_head" ) );'` + When I run `wp eval 'var_export( function_exists( "espied_scripts" ) );'` Then STDOUT should be: """ true """ - And STDERR should be empty # The specified theme should be skipped - When I run `wp --skip-themes=default eval 'var_export( function_exists( "kubrick_head" ) );'` + When I run `wp --skip-themes=espied eval 'var_export( function_exists( "espied_scripts" ) );'` Then STDOUT should be: """ false """ - And STDERR should be empty # All themes should be skipped - When I run `wp --skip-themes eval 'var_export( function_exists( "kubrick_head" ) );'` + When I run `wp --skip-themes eval 'var_export( function_exists( "espied_scripts" ) );'` Then STDOUT should be: """ false """ - And STDERR should be empty # Skip another theme - When I run `wp --skip-themes=classic eval 'var_export( function_exists( "kubrick_head" ) );'` + When I run `wp --skip-themes=classic eval 'var_export( function_exists( "espied_scripts" ) );'` Then STDOUT should be: """ true """ - And STDERR should be empty # The specified theme should still show up as an active theme - When I run `wp --skip-themes theme status default` + When I run `wp --skip-themes theme status espied` Then STDOUT should contain: """ Active """ - And STDERR should be empty # Skip several themes - When I run `wp --skip-themes=classic,default eval 'var_export( function_exists( "kubrick_head" ) );'` + When I run `wp --skip-themes=classic,espied eval 'var_export( function_exists( "espied_scripts" ) );'` Then STDOUT should be: """ false """ - And STDERR should be empty Scenario: Skip parent and child themes Given a WP install - And I run `wp theme install jolene biker` + And I run `wp theme install {CACHE_DIR}/espied.1.2.2.zip {CACHE_DIR}/sidespied.1.0.3.zip` - When I run `wp theme activate jolene` - When I run `wp eval 'var_export( function_exists( "jolene_setup" ) );'` + When I run `wp theme activate espied` + When I run `wp eval 'var_export( function_exists( "espied_scripts" ) );'` Then STDOUT should be: """ true """ - And STDERR should be empty - When I run `wp --skip-themes=jolene eval 'var_export( function_exists( "jolene_setup" ) );'` + When I run `wp --skip-themes=espied eval 'var_export( function_exists( "espied_scripts" ) );'` Then STDOUT should be: """ false """ - And STDERR should be empty - When I run `wp theme activate biker` - When I run `wp eval 'var_export( function_exists( "jolene_setup" ) );'` + When I run `wp theme activate sidespied` + When I run `wp eval 'var_export( function_exists( "espied_scripts" ) );'` Then STDOUT should be: """ true """ - And STDERR should be empty - When I run `wp eval 'var_export( function_exists( "biker_setup" ) );'` + When I run `wp eval 'var_export( function_exists( "sidespied_scripts" ) );'` Then STDOUT should be: """ true """ - And STDERR should be empty - When I run `wp --skip-themes=biker eval 'var_export( function_exists( "jolene_setup" ) );'` + When I run `wp --skip-themes=sidespied eval 'var_export( function_exists( "espied_scripts" ) );'` Then STDOUT should be: """ false """ - And STDERR should be empty - When I run `wp --skip-themes=biker eval 'var_export( function_exists( "biker_setup" ) );'` + When I run `wp --skip-themes=sidespied eval 'var_export( function_exists( "sidespied_scripts" ) );'` Then STDOUT should be: """ false """ - And STDERR should be empty - When I run `wp --skip-themes=biker eval 'echo get_template_directory();'` + When I run `wp --skip-themes=sidespied eval 'echo get_template_directory();'` Then STDOUT should contain: """ - wp-content/themes/jolene + wp-content/themes/espied """ - And STDERR should be empty - When I run `wp --skip-themes=biker eval 'echo get_stylesheet_directory();'` + When I run `wp --skip-themes=sidespied eval 'echo get_stylesheet_directory();'` Then STDOUT should contain: """ - wp-content/themes/biker + wp-content/themes/sidespied """ - And STDERR should be empty Scenario: Skipping multiple themes via config file Given a WP install @@ -120,10 +111,10 @@ Feature: Skipping themes """ skip-themes: - classic - - default + - espied """ - And I run `wp theme install classic --activate` - And I run `wp theme install default` + And I run `wp theme install {CACHE_DIR}/classic.1.6.zip --activate` + And I run `wp theme install {CACHE_DIR}/espied.1.2.2.zip` # The classic theme should show up as an active theme When I run `wp theme status` @@ -131,22 +122,19 @@ Feature: Skipping themes """ A classic """ - And STDERR should be empty - # The default theme should show up as an installed theme + # The espied theme should show up as an installed theme When I run `wp theme status` Then STDOUT should contain: """ - I default + I espied """ - And STDERR should be empty - And I run `wp theme activate default` + And I run `wp theme activate espied` - # The default theme should be skipped - When I run `wp eval 'var_export( function_exists( "kubrick_head" ) );'` + # The espied theme should be skipped + When I run `wp eval 'var_export( function_exists( "espied_scripts" ) );'` Then STDOUT should be: """ false """ - And STDERR should be empty diff --git a/features/steps/given.php b/features/steps/given.php index f2eae113f5..6af042c6e1 100644 --- a/features/steps/given.php +++ b/features/steps/given.php @@ -158,9 +158,9 @@ function ( $world, $stream, $output_filter, $key ) { } ); -$steps->Given( '/^a new Phar with (?:the same version|version "([^"]+)")$/', - function ( $world, $version = 'same' ) { - $world->build_phar( $version ); +$steps->Given( '/^a new Phar with (?:the same version|version "([^"]+)")(?: and (cli) build)?$/', + function ( $world, $version = 'same', $build = '' ) { + $world->build_phar( $version, $build ); } ); diff --git a/utils/make-phar.php b/utils/make-phar.php index 26b961b457..2820716ddc 100644 --- a/utils/make-phar.php +++ b/utils/make-phar.php @@ -24,7 +24,7 @@ list( $args, $assoc_args, $runtime_config ) = $configurator->parse_args( array_slice( $GLOBALS['argv'], 1 ) ); if ( ! isset( $args[0] ) || empty( $args[0] ) ) { - echo "usage: php -dphar.readonly=0 $argv[0] [--quiet] [--version=same|patch|minor|major|x.y.z] [--store-version]\n"; + echo "usage: php -dphar.readonly=0 $argv[0] [--quiet] [--version=same|patch|minor|major|x.y.z] [--store-version] [--build=cli]\n"; exit(1); } @@ -60,11 +60,11 @@ function add_file( $phar, $path ) { if ( null === $strip_res ) { if ( 'cli' === BUILD ) { $strips = array( - '\/(?:behat|composer|gherkin)\/src', + '\/(?:behat|composer|gherkin)\/src\/', '\/phpunit\/', - '\/nb\/oxymel', + '\/nb\/oxymel\/', '-command\/src\/', - '\/wp-cli\/[^\n]+-command\/', + '\/wp-cli\/[^\n]+?-command\/', '\/symfony\/(?!finder|polyfill-mbstring)[^\/]+\/', '\/(?:dealerdirect|squizlabs|wimg)\/', ); @@ -149,6 +149,7 @@ function set_file_contents( $phar, $path, $content ) { ->in(WP_CLI_VENDOR_DIR . '/symfony/filesystem') ->in(WP_CLI_VENDOR_DIR . '/symfony/process') ->in(WP_CLI_VENDOR_DIR . '/justinrainbow/json-schema') + ->exclude('demo') ->exclude('nb/oxymel/OxymelTest.php') ->exclude('composer/spdx-licenses') ->exclude('composer/composer/src/Composer/Command') From 5a8eb90333716c1b528ec4c04448bb767cc1b2a9 Mon Sep 17 00:00:00 2001 From: gitlost Date: Sat, 2 Dec 2017 02:21:34 +0000 Subject: [PATCH 2/4] Missing Background keyword for skip-themes. --- features/skip-themes.feature | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/features/skip-themes.feature b/features/skip-themes.feature index 01756a6418..def4d4095a 100644 --- a/features/skip-themes.feature +++ b/features/skip-themes.feature @@ -1,9 +1,11 @@ Feature: Skipping themes - Given download: - | path | url | - | {CACHE_DIR}/classic.1.6.zip | https://downloads.wordpress.org/theme/classic.1.6.zip | - | {CACHE_DIR}/espied.1.2.2.zip | https://downloads.wordpress.org/theme/espied.1.2.2.zip | - | {CACHE_DIR}/sidespied.1.0.3.zip | https://downloads.wordpress.org/theme/sidespied.1.0.3.zip | + + Background: + Given download: + | path | url | + | {CACHE_DIR}/classic.1.6.zip | https://downloads.wordpress.org/theme/classic.1.6.zip | + | {CACHE_DIR}/espied.1.2.2.zip | https://downloads.wordpress.org/theme/espied.1.2.2.zip | + | {CACHE_DIR}/sidespied.1.0.3.zip | https://downloads.wordpress.org/theme/sidespied.1.0.3.zip | Scenario: Skipping themes via global flag Given a WP install From c455ef926cf464dfaa3efb561fa6fd8afaeec2fe Mon Sep 17 00:00:00 2001 From: gitlost Date: Sat, 2 Dec 2017 15:48:33 +0000 Subject: [PATCH 3/4] Temp put back unneeded tags. --- features/cli.feature | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/features/cli.feature b/features/cli.feature index 7c29e5dfa3..2d44784a43 100644 --- a/features/cli.feature +++ b/features/cli.feature @@ -136,7 +136,8 @@ Feature: `wp cli` tasks 0.14.1 """ - @github-api + # Temp put back @require-php-5.6 + @require-php-5.6 @github-api Scenario: Install WP-CLI nightly Given an empty directory And a new Phar with version "0.14.0" and cli build @@ -151,7 +152,8 @@ Feature: `wp cli` tasks Success: Updated WP-CLI to the latest nightly release. """ - @github-api + # Temp put back @less-than-php-7 + @github-api @less-than-php-7 Scenario: Install WP-CLI stable Given an empty directory And a new Phar with version "0.14.0" and cli build From 5b5ca4c0d69e9517acfd1963056d0546a460338f Mon Sep 17 00:00:00 2001 From: gitlost Date: Sat, 2 Dec 2017 16:17:44 +0000 Subject: [PATCH 4/4] Undo temp put back unneeded tags. --- features/cli.feature | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/features/cli.feature b/features/cli.feature index 2d44784a43..7c29e5dfa3 100644 --- a/features/cli.feature +++ b/features/cli.feature @@ -136,8 +136,7 @@ Feature: `wp cli` tasks 0.14.1 """ - # Temp put back @require-php-5.6 - @require-php-5.6 @github-api + @github-api Scenario: Install WP-CLI nightly Given an empty directory And a new Phar with version "0.14.0" and cli build @@ -152,8 +151,7 @@ Feature: `wp cli` tasks Success: Updated WP-CLI to the latest nightly release. """ - # Temp put back @less-than-php-7 - @github-api @less-than-php-7 + @github-api Scenario: Install WP-CLI stable Given an empty directory And a new Phar with version "0.14.0" and cli build