diff --git a/src/Context/GivenStepDefinitions.php b/src/Context/GivenStepDefinitions.php index 670ae5ba3..248766a0e 100644 --- a/src/Context/GivenStepDefinitions.php +++ b/src/Context/GivenStepDefinitions.php @@ -184,7 +184,7 @@ public function given_a_request_to_a_url_respond_with_file( $url_or_pattern, PyS mkdir( $dir, 0777, true /*recursive*/ ); } - $config_file_contents = <<temp_dir . '/features/extension.feature', $contents ); + + $expected = '--tags=' . implode( '&&', array_merge( array( '~@github-api', '~@broken' ), $expecteds ) ); + $output = exec( "cd {$this->temp_dir}; php $behat_tags" ); + $this->assertSame( $expected, $output ); + } } diff --git a/utils/behat-tags.php b/utils/behat-tags.php index 5571fe996..c6fa9833e 100644 --- a/utils/behat-tags.php +++ b/utils/behat-tags.php @@ -40,6 +40,12 @@ function version_tags( return $skip_tags; } +function get_db_version() { + $version_string = exec( getenv( 'WP_CLI_TEST_DBTYPE' ) === 'mariadb' ? 'mariadb --version' : 'mysql -V' ); + preg_match( '@[0-9]+\.[0-9]+\.[0-9]+@', $version_string, $version ); + return $version[0]; +} + $features_folder = getenv( 'BEHAT_FEATURES_FOLDER' ) ?: 'features'; $wp_version = getenv( 'WP_VERSION' ); $wp_version_reqs = array(); @@ -79,10 +85,16 @@ function version_tags( $skip_tags[] = '@broken-trunk'; } +$db_version = get_db_version(); + switch ( getenv( 'WP_CLI_TEST_DBTYPE' ) ) { case 'mariadb': - $skip_tags[] = '@require-mysql'; - $skip_tags[] = '@require-sqlite'; + $skip_tags = array_merge( + $skip_tags, + [ '@require-mysql', '@require-sqlite' ], + version_tags( 'require-mariadb', $db_version, '<', $features_folder ), + version_tags( 'less-than-mariadb', $db_version, '>=', $features_folder ) + ); break; case 'sqlite': $skip_tags[] = '@require-mariadb'; @@ -91,8 +103,12 @@ function version_tags( break; case 'mysql': default: - $skip_tags[] = '@require-mariadb'; - $skip_tags[] = '@require-sqlite'; + $skip_tags = array_merge( + $skip_tags, + [ '@require-mariadb', '@require-sqlite' ], + version_tags( 'require-mysql', $db_version, '<', $features_folder ), + version_tags( 'less-than-mysql', $db_version, '>=', $features_folder ) + ); break; }