Skip to content

Commit 1379a28

Browse files
Merge pull request #56 from wp-cli/regex_fail_default
Avoid displaying default delimiter on regex fail in db search.
2 parents 16e42ed + 8c4840b commit 1379a28

File tree

2 files changed

+38
-2
lines changed

2 files changed

+38
-2
lines changed

features/db-search.feature

+28
Original file line numberDiff line numberDiff line change
@@ -719,6 +719,34 @@ Feature: Search through the database
719719
"""
720720
And the return code should be 1
721721

722+
When I try `wp db search 'regex error)' --regex`
723+
Then STDERR should be:
724+
"""
725+
Error: The regex pattern 'regex error)' with default delimiter 'chr(1)' and no flags fails.
726+
"""
727+
And the return code should be 1
728+
729+
When I try `wp db search 'regex error)' --regex --regex-flags=u`
730+
Then STDERR should be:
731+
"""
732+
Error: The regex pattern 'regex error)' with default delimiter 'chr(1)' and flags 'u' fails.
733+
"""
734+
And the return code should be 1
735+
736+
When I try `wp db search 'regex error)' --regex --regex-delimiter=/`
737+
Then STDERR should be:
738+
"""
739+
Error: The regex '/regex error)/' fails.
740+
"""
741+
And the return code should be 1
742+
743+
When I try `wp db search 'regex error)' --regex --regex-delimiter=/ --regex-flags=u`
744+
Then STDERR should be:
745+
"""
746+
Error: The regex '/regex error)/u' fails.
747+
"""
748+
And the return code should be 1
749+
722750
When I run `wp db search '[0-9é]+?https:' --regex --regex-flags=u --before_context=0 --after_context=0`
723751
Then STDOUT should contain:
724752
"""

src/DB_Command.php

+10-2
Original file line numberDiff line numberDiff line change
@@ -818,9 +818,11 @@ public function search( $args, $assoc_args ) {
818818

819819
if ( ( $regex = \WP_CLI\Utils\get_flag_value( $assoc_args, 'regex', false ) ) ) {
820820
$regex_flags = \WP_CLI\Utils\get_flag_value( $assoc_args, 'regex-flags', false );
821-
$regex_delimiter = \WP_CLI\Utils\get_flag_value( $assoc_args, 'regex-delimiter', chr( 1 ) );
821+
$default_regex_delimiter = false;
822+
$regex_delimiter = \WP_CLI\Utils\get_flag_value( $assoc_args, 'regex-delimiter', '' );
822823
if ( '' === $regex_delimiter ) {
823824
$regex_delimiter = chr( 1 );
825+
$default_regex_delimiter = true;
824826
}
825827
}
826828

@@ -841,7 +843,13 @@ public function search( $args, $assoc_args ) {
841843
$search_regex .= $regex_flags;
842844
}
843845
if ( false === @preg_match( $search_regex, '' ) ) {
844-
WP_CLI::error( "The regex '$search_regex' fails." );
846+
if ( $default_regex_delimiter ) {
847+
$flags_msg = $regex_flags ? "flags '$regex_flags'" : "no flags";
848+
$msg = "The regex pattern '$search' with default delimiter 'chr(1)' and {$flags_msg} fails.";
849+
} else {
850+
$msg = "The regex '$search_regex' fails.";
851+
}
852+
WP_CLI::error( $msg );
845853
}
846854
} else {
847855
$search_regex = '#' . preg_quote( $search, '#' ) . '#i';

0 commit comments

Comments
 (0)