@@ -40,6 +40,12 @@ function version_tags(
4040 return $ skip_tags ;
4141}
4242
43+ function get_db_version () {
44+ $ version_string = exec ( getenv ( 'WP_CLI_TEST_DBTYPE ' ) === 'mariadb ' ? 'mariadb --version ' : 'mysql -V ' );
45+ preg_match ( '@[0-9]+\.[0-9]+\.[0-9]+@ ' , $ version_string , $ version );
46+ return $ version [0 ];
47+ }
48+
4349$ features_folder = getenv ( 'BEHAT_FEATURES_FOLDER ' ) ?: 'features ' ;
4450$ wp_version = getenv ( 'WP_VERSION ' );
4551$ wp_version_reqs = array ();
@@ -79,10 +85,16 @@ function version_tags(
7985 $ skip_tags [] = '@broken-trunk ' ;
8086}
8187
88+ $ db_version = get_db_version ();
89+
8290switch ( getenv ( 'WP_CLI_TEST_DBTYPE ' ) ) {
8391 case 'mariadb ' :
84- $ skip_tags [] = '@require-mysql ' ;
85- $ skip_tags [] = '@require-sqlite ' ;
92+ $ skip_tags = array_merge (
93+ $ skip_tags ,
94+ [ '@require-mysql ' , '@require-sqlite ' ],
95+ version_tags ( 'require-mariadb ' , $ db_version , '< ' , $ features_folder ),
96+ version_tags ( 'less-than-mariadb ' , $ db_version , '>= ' , $ features_folder )
97+ );
8698 break ;
8799 case 'sqlite ' :
88100 $ skip_tags [] = '@require-mariadb ' ;
@@ -91,8 +103,12 @@ function version_tags(
91103 break ;
92104 case 'mysql ' :
93105 default :
94- $ skip_tags [] = '@require-mariadb ' ;
95- $ skip_tags [] = '@require-sqlite ' ;
106+ $ skip_tags = array_merge (
107+ $ skip_tags ,
108+ [ '@require-mariadb ' , '@require-sqlite ' ],
109+ version_tags ( 'require-mysql ' , $ db_version , '< ' , $ features_folder ),
110+ version_tags ( 'less-than-mysql ' , $ db_version , '>= ' , $ features_folder )
111+ );
96112 break ;
97113}
98114
0 commit comments