Suggest --fixed-strings flag in case of regex parse error (closes #709)
This is the most straightforward fix I could think of for #709. Please let me know if it could be improved upon.

Thanks!
```
$ rg "foo("
Error parsing regex near 'foo(' at character offset 3: Unclosed parenthesis.
```

I think ripgrep should suggest the `--fixed-strings` argument if there's a regex syntax error.
Suggest --fixed-strings on invalid regexps
diff --git a/src/args.rs b/src/args.rs
index 77cf8cc0a..f0f93ccbe 100644
--- a/src/args.rs
+++ b/src/args.rs
@@ -11,7 +11,7 @@ use std::sync::atomic::{AtomicBool, Ordering};
 use clap;
 use encoding_rs::Encoding;
 use env_logger;
-use grep::{Grep, GrepBuilder};
+use grep::{Grep, GrepBuilder, Error as GrepError};
 use log;
 use num_cpus;
 use regex;
@@ -783,7 +783,16 @@ impl<'a> ArgMatches<'a> {
         if let Some(limit) = self.regex_size_limit()? {
             gb = gb.size_limit(limit);
         }
-        gb.build().map_err(From::from)
+        gb.build().map_err(|err| {
+            match err {
+                GrepError::Regex(err) => {
+                  let s = format!("{}\n(Hint: Try the --fixed-strings flag \
+                  to search for a literal string.)", err.to_string());
+                  From::from(s)
+                },
+                err => From::from(err)
+            }
+        })
     }
 
     /// Builds the set of glob overrides from the command line flags.

diff --git a/tests/tests.rs b/tests/tests.rs
index 152eca309..4bd852cdb 100644
--- a/tests/tests.rs
+++ b/tests/tests.rs
@@ -1599,6 +1599,16 @@ sherlock!(feature_419_zero_as_shortcut_for_null, "Sherlock", ".",
     assert_eq!(lines, "sherlock\x002\n");
 });
 
+// See: https://github.com/BurntSushi/ripgrep/issues/709
+clean!(suggest_fixed_strings_for_invalid_regex, "foo(", ".",
+|wd: WorkDir, mut cmd: Command| {
+    wd.assert_non_empty_stderr(&mut cmd);
+
+    let output = cmd.output().unwrap();
+    let err = String::from_utf8_lossy(&output.stderr);
+    assert_eq!(err.contains("--fixed-strings"), true);
+});
+
 #[test]
 fn binary_nosearch() {
     let wd = WorkDir::new("binary_nosearch");

{"suggest_fixed_strings_for_invalid_regex": {"run": "NONE", "test": "FAIL", "fix": "PASS"}}
{"printer::tests::spec_errors": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "decoder::tests::peeker_one_at_a_time": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "regression_451_only_matching_as_in_issue": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_buffer::tests::files_without_matches": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "regression_599": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "regression_506_word_boundaries_not_parenthesized": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "inverted_line_numbers": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "decoder::tests::trans_utf16_bom": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "regression_451_only_matching": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "with_heading": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::after_context_two2": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_buffer::tests::line_numbers": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::before_context_two1": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::invert_match_count": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::before_context_three1": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "decoder::tests::peeker_three": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "line_numbers": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "regression_137": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "regression_16": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "decoder::tests::trans_simple_utf16be": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "regression_50": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "unescape::tests::unescape_nl": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "printer::tests::merge": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "after_context_line_numbers": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "feature_7": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_buffer::tests::count": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "literal": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "printer::tests::specs": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::before_context_two3": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "unescape::tests::unescape_nul": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::before_context_invert_one1": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "feature_362_exceeds_regex_size_limit": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "regression_693_context_option_in_contextless_mode": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "regression_49": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "unescape::tests::unescape_nothing_simple": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "regression_229": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "feature_1_unknown_encoding": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "before_context": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "binary_search_mmap": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::before_context_two5": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "word": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "replace": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "decoder::tests::trans_simple_utf16le": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::after_context_three1": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::before_context_two2": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "columns": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "quiet": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "line": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "feature_109_case_sensitive_part2": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::previous_lines_short": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "regression_87": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "decoder::tests::trans_simple_utf8": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "decoder::tests::trans_simple_korean": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::invert_match_line_numbers": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::previous_lines_empty": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "replace_named_groups": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "ignore_ripgrep_parent_no_stop": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "decoder::tests::peeker_four": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "unescape::tests::unescape_nothing_hex0": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "binary_nosearch": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_buffer::tests::basic_search": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::before_context_two4": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "regression_131": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "unescape::tests::unescape_carriage": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "max_filesize_suffix_overflow": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "with_filename": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "decoder::tests::trans_simple_big5_hkscs": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "ignore_ripgrep": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "line_number_width_padding_character_error": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::after_context_two_max_count_two": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "regression_156": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "decoder::tests::trans_simple_eucjp": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "decoder::tests::trans_simple_chinese": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "feature_109_case_sensitive_part1": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "after_context": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_buffer::tests::invert_match_line_numbers": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "regression_228": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "decoder::tests::trans_utf16_basic": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "decoder::tests::peeker_empty": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::files_without_matches": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::before_after_context_two1": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "unescape::tests::unescape_tab": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "feature_263_sort_files": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "binary_search_no_mmap": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "ignore_hidden": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::before_context_one1": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "ignore_generic": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_buffer::tests::binary_text": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "type_list": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "decoder::tests::trans_simple_sjis": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "symlink_nofollow": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "before_context_line_numbers": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::files_with_matches": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "replace_with_only_matching": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_buffer::tests::max_count": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::after_context_one1": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::invert_match_max_count": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::binary_text": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "regression_65": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "replace_groups": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "with_heading_default": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::after_context_invert_one2": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "decoder::tests::peeker_two": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "file_type_clear": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::invert_match": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "feature_1_replacement_encoding": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "decoder::tests::trans_simple_gbk": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "regression_256_j1": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_buffer::tests::files_with_matches": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_buffer::tests::invert_match_count": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "decoder::tests::trans_simple_latin1": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "regression_483_non_matching_exit_code": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "decoder::tests::trans_simple_auto": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::previous_lines": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "unescape::tests::unescape_nothing_hex2": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "feature_362_dfa_size_limit": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "regression_568_leading_hyphen_option_arguments": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "case_insensitive": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_buffer::tests::invert_match": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_buffer::tests::binary": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::binary": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "max_filesize_parse_error_length": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "ignore_git": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "line_number_width": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "feature_159_zero_max": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::count": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "regression_210": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::after_context_invert_one1": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "single_file": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::after_context_invert_one_max_count_two": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_buffer::tests::invert_match_max_count": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::line_numbers": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "context": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "ignore_git_parent": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "decoder::tests::peeker_one": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "decoder::tests::trans_utf16_incomplete": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "regression_428_unrecognized_style": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "max_filesize_parse_error_suffix": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "regression_493": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "context_line_numbers": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "regression_99": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::max_count": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::after_context_two1": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "inverted": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "unescape::tests::unescape_nothing_hex1": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::basic_search1": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::after_context_two3": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "search_stream::tests::before_context_invert_one2": {"run": "PASS", "test": "PASS", "fix": "PASS"}}
{"suggest_fixed_strings_for_invalid_regex": {"run": "NONE", "test": "FAIL", "fix": "PASS"}}
{"passed_count": 148, "failed_count": 74, "skipped_count": 0, "passed_tests": ["printer::tests::spec_errors", "decoder::tests::peeker_one_at_a_time", "regression_451_only_matching_as_in_issue", "search_buffer::tests::files_without_matches", "regression_599", "regression_506_word_boundaries_not_parenthesized", "inverted_line_numbers", "decoder::tests::trans_utf16_bom", "regression_451_only_matching", "with_heading", "search_stream::tests::after_context_two2", "search_buffer::tests::line_numbers", "search_stream::tests::before_context_two1", "search_stream::tests::invert_match_count", "search_stream::tests::before_context_three1", "decoder::tests::peeker_three", "line_numbers", "regression_137", "regression_16", "decoder::tests::trans_simple_utf16be", "regression_50", "unescape::tests::unescape_nl", "printer::tests::merge", "after_context_line_numbers", "feature_7", "search_buffer::tests::count", "literal", "printer::tests::specs", "search_stream::tests::before_context_two3", "unescape::tests::unescape_nul", "search_stream::tests::before_context_invert_one1", "feature_362_exceeds_regex_size_limit", "regression_693_context_option_in_contextless_mode", "regression_49", "unescape::tests::unescape_nothing_simple", "regression_229", "feature_1_unknown_encoding", "before_context", "binary_search_mmap", "search_stream::tests::before_context_two5", "word", "replace", "decoder::tests::trans_simple_utf16le", "search_stream::tests::after_context_three1", "search_stream::tests::before_context_two2", "columns", "quiet", "line", "feature_109_case_sensitive_part2", "search_stream::tests::previous_lines_short", "regression_87", "decoder::tests::trans_simple_utf8", "decoder::tests::trans_simple_korean", "search_stream::tests::invert_match_line_numbers", "search_stream::tests::previous_lines_empty", "replace_named_groups", "ignore_ripgrep_parent_no_stop", "decoder::tests::peeker_four", "unescape::tests::unescape_nothing_hex0", "binary_nosearch", "search_buffer::tests::basic_search", "search_stream::tests::before_context_two4", "regression_131", "unescape::tests::unescape_carriage", "max_filesize_suffix_overflow", "with_filename", "decoder::tests::trans_simple_big5_hkscs", "ignore_ripgrep", "line_number_width_padding_character_error", "search_stream::tests::after_context_two_max_count_two", "regression_156", "decoder::tests::trans_simple_eucjp", "decoder::tests::trans_simple_chinese", "feature_109_case_sensitive_part1", "after_context", "search_buffer::tests::invert_match_line_numbers", "regression_228", "decoder::tests::trans_utf16_basic", "decoder::tests::peeker_empty", "search_stream::tests::files_without_matches", "search_stream::tests::before_after_context_two1", "unescape::tests::unescape_tab", "feature_263_sort_files", "binary_search_no_mmap", "ignore_hidden", "search_stream::tests::before_context_one1", "ignore_generic", "search_buffer::tests::binary_text", "type_list", "decoder::tests::trans_simple_sjis", "symlink_nofollow", "before_context_line_numbers", "search_stream::tests::files_with_matches", "replace_with_only_matching", "search_buffer::tests::max_count", "search_stream::tests::after_context_one1", "search_stream::tests::invert_match_max_count", "search_stream::tests::binary_text", "regression_65", "replace_groups", "with_heading_default", "search_stream::tests::after_context_invert_one2", "decoder::tests::peeker_two", "file_type_clear", "search_stream::tests::invert_match", "feature_1_replacement_encoding", "decoder::tests::trans_simple_gbk", "regression_256_j1", "search_buffer::tests::files_with_matches", "search_buffer::tests::invert_match_count", "decoder::tests::trans_simple_latin1", "regression_483_non_matching_exit_code", "decoder::tests::trans_simple_auto", "search_stream::tests::previous_lines", "unescape::tests::unescape_nothing_hex2", "feature_362_dfa_size_limit", "regression_568_leading_hyphen_option_arguments", "case_insensitive", "search_buffer::tests::invert_match", "search_buffer::tests::binary", "search_stream::tests::binary", "max_filesize_parse_error_length", "ignore_git", "line_number_width", "feature_159_zero_max", "search_stream::tests::count", "regression_210", "search_stream::tests::after_context_invert_one1", "single_file", "search_stream::tests::after_context_invert_one_max_count_two", "search_buffer::tests::invert_match_max_count", "search_stream::tests::line_numbers", "context", "ignore_git_parent", "decoder::tests::peeker_one", "decoder::tests::trans_utf16_incomplete", "regression_428_unrecognized_style", "max_filesize_parse_error_suffix", "regression_493", "context_line_numbers", "regression_99", "search_stream::tests::max_count", "search_stream::tests::after_context_two1", "inverted", "unescape::tests::unescape_nothing_hex1", "search_stream::tests::basic_search1", "search_stream::tests::after_context_two3", "search_stream::tests::before_context_invert_one2"], "failed_tests": ["regression_270", "feature_1_sjis", "feature_7_dash", "regression_391", "feature_89_files_without_matches", "feature_129_context", "feature_70_smart_case", "regression_184", "regression_199", "regression_67", "regression_30", "count", "feature_45_precedence_internal", "ignore_git_parent_stop", "file_type_add_compose", "regression_428_color_context_path", "regression_251", "regression_90", "feature_159_works", "feature_129_matches", "feature_34_only_matching", "feature_1_utf16_auto", "file_types_all", "regression_105_part2", "regression_105_part1", "max_filesize_parse_m_suffix", "unrestricted3", "feature_45_precedence_with_others", "regression_25", "feature_419_zero_as_shortcut_for_null", "regression_256", "unrestricted1", "feature_275_pathsep", "feature_129_replace", "regression_128", "regression_405", "symlink_follow", "regression_279", "feature_89_files", "regression_483_matching_no_stdout", "file_types_negate_all", "regression_64", "no_ignore", "files_without_matches", "feature_34_only_matching_line_column", "feature_243_column_line", "regression_93", "unrestricted2", "files_with_matches", "file_types", "max_filesize_parse_k_suffix", "no_ignore_hidden", "feature_68_no_ignore_vcs", "feature_1_eucjp", "dir", "vimgrep", "feature_89_files_with_matches", "feature_109_max_depth", "feature_89_count", "regression_206", "feature_89_match", "feature_20_no_filename", "file_types_negate", "glob", "max_filesize_parse_no_suffix", "feature_45_relative_cwd", "files", "file_type_add", "glob_negate", "iglob", "regression_127", "no_parent_ignore_git", "feature_1_utf16_explicit", "csglob"], "skipped_tests": []}
{"passed_count": 148, "failed_count": 75, "skipped_count": 0, "passed_tests": ["printer::tests::spec_errors", "decoder::tests::peeker_one_at_a_time", "regression_451_only_matching_as_in_issue", "search_buffer::tests::files_without_matches", "regression_599", "regression_506_word_boundaries_not_parenthesized", "inverted_line_numbers", "decoder::tests::trans_utf16_bom", "regression_451_only_matching", "with_heading", "search_stream::tests::after_context_two2", "search_buffer::tests::line_numbers", "search_stream::tests::before_context_two1", "search_stream::tests::invert_match_count", "search_stream::tests::before_context_three1", "decoder::tests::peeker_three", "line_numbers", "regression_137", "regression_16", "decoder::tests::trans_simple_utf16be", "regression_50", "unescape::tests::unescape_nl", "printer::tests::merge", "after_context_line_numbers", "feature_7", "search_buffer::tests::count", "literal", "printer::tests::specs", "search_stream::tests::before_context_two3", "unescape::tests::unescape_nul", "search_stream::tests::before_context_invert_one1", "feature_362_exceeds_regex_size_limit", "regression_693_context_option_in_contextless_mode", "regression_49", "unescape::tests::unescape_nothing_simple", "regression_229", "feature_1_unknown_encoding", "binary_search_mmap", "before_context", "search_stream::tests::before_context_two5", "word", "replace", "decoder::tests::trans_simple_utf16le", "search_stream::tests::after_context_three1", "search_stream::tests::before_context_two2", "columns", "quiet", "line", "feature_109_case_sensitive_part2", "search_stream::tests::previous_lines_short", "regression_87", "decoder::tests::trans_simple_utf8", "decoder::tests::trans_simple_korean", "search_stream::tests::invert_match_line_numbers", "search_stream::tests::previous_lines_empty", "replace_named_groups", "ignore_ripgrep_parent_no_stop", "decoder::tests::peeker_four", "unescape::tests::unescape_nothing_hex0", "binary_nosearch", "search_buffer::tests::basic_search", "search_stream::tests::before_context_two4", "regression_131", "unescape::tests::unescape_carriage", "max_filesize_suffix_overflow", "with_filename", "decoder::tests::trans_simple_big5_hkscs", "ignore_ripgrep", "line_number_width_padding_character_error", "search_stream::tests::after_context_two_max_count_two", "regression_156", "decoder::tests::trans_simple_eucjp", "decoder::tests::trans_simple_chinese", "feature_109_case_sensitive_part1", "after_context", "search_buffer::tests::invert_match_line_numbers", "regression_228", "decoder::tests::trans_utf16_basic", "decoder::tests::peeker_empty", "search_stream::tests::files_without_matches", "search_stream::tests::before_after_context_two1", "unescape::tests::unescape_tab", "feature_263_sort_files", "binary_search_no_mmap", "ignore_hidden", "search_stream::tests::before_context_one1", "ignore_generic", "search_buffer::tests::binary_text", "type_list", "decoder::tests::trans_simple_sjis", "symlink_nofollow", "before_context_line_numbers", "search_stream::tests::files_with_matches", "replace_with_only_matching", "search_buffer::tests::max_count", "search_stream::tests::after_context_one1", "search_stream::tests::invert_match_max_count", "search_stream::tests::binary_text", "regression_65", "replace_groups", "with_heading_default", "search_stream::tests::after_context_invert_one2", "decoder::tests::peeker_two", "file_type_clear", "search_stream::tests::invert_match", "feature_1_replacement_encoding", "decoder::tests::trans_simple_gbk", "regression_256_j1", "search_buffer::tests::files_with_matches", "search_buffer::tests::invert_match_count", "decoder::tests::trans_simple_latin1", "regression_483_non_matching_exit_code", "decoder::tests::trans_simple_auto", "unescape::tests::unescape_nothing_hex2", "search_stream::tests::previous_lines", "feature_362_dfa_size_limit", "regression_568_leading_hyphen_option_arguments", "case_insensitive", "search_buffer::tests::invert_match", "search_buffer::tests::binary", "search_stream::tests::binary", "max_filesize_parse_error_length", "ignore_git", "line_number_width", "feature_159_zero_max", "search_stream::tests::count", "regression_210", "search_stream::tests::after_context_invert_one1", "single_file", "search_stream::tests::after_context_invert_one_max_count_two", "search_buffer::tests::invert_match_max_count", "search_stream::tests::line_numbers", "context", "ignore_git_parent", "decoder::tests::peeker_one", "decoder::tests::trans_utf16_incomplete", "regression_428_unrecognized_style", "max_filesize_parse_error_suffix", "regression_493", "context_line_numbers", "regression_99", "search_stream::tests::max_count", "search_stream::tests::after_context_two1", "inverted", "unescape::tests::unescape_nothing_hex1", "search_stream::tests::basic_search1", "search_stream::tests::after_context_two3", "search_stream::tests::before_context_invert_one2"], "failed_tests": ["suggest_fixed_strings_for_invalid_regex", "regression_270", "feature_1_sjis", "feature_7_dash", "regression_391", "feature_89_files_without_matches", "regression_184", "feature_70_smart_case", "feature_129_context", "regression_199", "regression_67", "regression_30", "count", "file_type_add_compose", "feature_45_precedence_internal", "ignore_git_parent_stop", "regression_90", "regression_428_color_context_path", "regression_251", "feature_159_works", "feature_129_matches", "feature_34_only_matching", "feature_1_utf16_auto", "regression_105_part2", "file_types_all", "regression_105_part1", "max_filesize_parse_m_suffix", "unrestricted3", "feature_45_precedence_with_others", "regression_25", "feature_419_zero_as_shortcut_for_null", "regression_256", "unrestricted1", "feature_275_pathsep", "feature_129_replace", "regression_128", "regression_405", "symlink_follow", "regression_279", "feature_89_files", "regression_483_matching_no_stdout", "file_types_negate_all", "regression_64", "no_ignore", "files_without_matches", "feature_34_only_matching_line_column", "feature_243_column_line", "regression_93", "unrestricted2", "files_with_matches", "file_types", "max_filesize_parse_k_suffix", "no_ignore_hidden", "feature_68_no_ignore_vcs", "feature_1_eucjp", "dir", "vimgrep", "feature_89_files_with_matches", "feature_109_max_depth", "feature_89_count", "regression_206", "feature_89_match", "feature_20_no_filename", "file_types_negate", "glob", "max_filesize_parse_no_suffix", "feature_45_relative_cwd", "files", "file_type_add", "glob_negate", "iglob", "regression_127", "no_parent_ignore_git", "feature_1_utf16_explicit", "csglob"], "skipped_tests": []}
{"passed_count": 149, "failed_count": 74, "skipped_count": 0, "passed_tests": ["printer::tests::spec_errors", "decoder::tests::peeker_one_at_a_time", "regression_451_only_matching_as_in_issue", "search_buffer::tests::files_without_matches", "regression_599", "regression_506_word_boundaries_not_parenthesized", "inverted_line_numbers", "decoder::tests::trans_utf16_bom", "regression_451_only_matching", "with_heading", "search_stream::tests::after_context_two2", "search_buffer::tests::line_numbers", "search_stream::tests::before_context_two1", "search_stream::tests::invert_match_count", "search_stream::tests::before_context_three1", "decoder::tests::peeker_three", "line_numbers", "regression_137", "regression_16", "decoder::tests::trans_simple_utf16be", "regression_50", "unescape::tests::unescape_nl", "printer::tests::merge", "after_context_line_numbers", "feature_7", "search_buffer::tests::count", "literal", "printer::tests::specs", "search_stream::tests::before_context_two3", "unescape::tests::unescape_nul", "search_stream::tests::before_context_invert_one1", "feature_362_exceeds_regex_size_limit", "regression_693_context_option_in_contextless_mode", "regression_49", "unescape::tests::unescape_nothing_simple", "regression_229", "feature_1_unknown_encoding", "binary_search_mmap", "before_context", "search_stream::tests::before_context_two5", "word", "replace", "decoder::tests::trans_simple_utf16le", "search_stream::tests::after_context_three1", "search_stream::tests::before_context_two2", "columns", "quiet", "line", "feature_109_case_sensitive_part2", "search_stream::tests::previous_lines_short", "regression_87", "decoder::tests::trans_simple_utf8", "decoder::tests::trans_simple_korean", "search_stream::tests::invert_match_line_numbers", "search_stream::tests::previous_lines_empty", "replace_named_groups", "ignore_ripgrep_parent_no_stop", "decoder::tests::peeker_four", "unescape::tests::unescape_nothing_hex0", "binary_nosearch", "search_buffer::tests::basic_search", "search_stream::tests::before_context_two4", "regression_131", "unescape::tests::unescape_carriage", "max_filesize_suffix_overflow", "with_filename", "decoder::tests::trans_simple_big5_hkscs", "ignore_ripgrep", "line_number_width_padding_character_error", "search_stream::tests::after_context_two_max_count_two", "regression_156", "decoder::tests::trans_simple_eucjp", "decoder::tests::trans_simple_chinese", "feature_109_case_sensitive_part1", "after_context", "search_buffer::tests::invert_match_line_numbers", "regression_228", "decoder::tests::trans_utf16_basic", "decoder::tests::peeker_empty", "search_stream::tests::files_without_matches", "search_stream::tests::before_after_context_two1", "unescape::tests::unescape_tab", "feature_263_sort_files", "binary_search_no_mmap", "ignore_hidden", "search_stream::tests::before_context_one1", "ignore_generic", "search_buffer::tests::binary_text", "type_list", "decoder::tests::trans_simple_sjis", "symlink_nofollow", "before_context_line_numbers", "search_stream::tests::files_with_matches", "replace_with_only_matching", "search_buffer::tests::max_count", "search_stream::tests::after_context_one1", "search_stream::tests::invert_match_max_count", "search_stream::tests::binary_text", "regression_65", "replace_groups", "with_heading_default", "search_stream::tests::after_context_invert_one2", "decoder::tests::peeker_two", "file_type_clear", "search_stream::tests::invert_match", "feature_1_replacement_encoding", "decoder::tests::trans_simple_gbk", "regression_256_j1", "search_buffer::tests::files_with_matches", "search_buffer::tests::invert_match_count", "decoder::tests::trans_simple_latin1", "suggest_fixed_strings_for_invalid_regex", "regression_483_non_matching_exit_code", "decoder::tests::trans_simple_auto", "unescape::tests::unescape_nothing_hex2", "search_stream::tests::previous_lines", "feature_362_dfa_size_limit", "regression_568_leading_hyphen_option_arguments", "case_insensitive", "search_buffer::tests::invert_match", "search_buffer::tests::binary", "search_stream::tests::binary", "max_filesize_parse_error_length", "ignore_git", "line_number_width", "feature_159_zero_max", "search_stream::tests::count", "regression_210", "search_stream::tests::after_context_invert_one1", "single_file", "search_stream::tests::after_context_invert_one_max_count_two", "search_buffer::tests::invert_match_max_count", "search_stream::tests::line_numbers", "context", "ignore_git_parent", "decoder::tests::peeker_one", "decoder::tests::trans_utf16_incomplete", "regression_428_unrecognized_style", "max_filesize_parse_error_suffix", "regression_493", "context_line_numbers", "regression_99", "search_stream::tests::max_count", "search_stream::tests::after_context_two1", "inverted", "unescape::tests::unescape_nothing_hex1", "search_stream::tests::basic_search1", "search_stream::tests::after_context_two3", "search_stream::tests::before_context_invert_one2"], "failed_tests": ["regression_270", "feature_1_sjis", "feature_7_dash", "regression_391", "feature_89_files_without_matches", "feature_129_context", "feature_70_smart_case", "regression_184", "regression_199", "regression_67", "regression_30", "count", "feature_45_precedence_internal", "ignore_git_parent_stop", "file_type_add_compose", "regression_428_color_context_path", "regression_251", "regression_90", "feature_159_works", "feature_129_matches", "regression_105_part2", "feature_1_utf16_auto", "feature_34_only_matching", "file_types_all", "regression_105_part1", "max_filesize_parse_m_suffix", "unrestricted3", "feature_45_precedence_with_others", "regression_25", "feature_419_zero_as_shortcut_for_null", "unrestricted1", "regression_256", "feature_275_pathsep", "feature_129_replace", "regression_128", "regression_405", "symlink_follow", "regression_279", "feature_89_files", "regression_483_matching_no_stdout", "file_types_negate_all", "regression_64", "no_ignore", "files_without_matches", "feature_34_only_matching_line_column", "feature_243_column_line", "regression_93", "unrestricted2", "files_with_matches", "file_types", "max_filesize_parse_k_suffix", "no_ignore_hidden", "feature_68_no_ignore_vcs", "feature_1_eucjp", "dir", "vimgrep", "feature_89_files_with_matches", "feature_109_max_depth", "feature_89_count", "regression_206", "feature_89_match", "file_types_negate", "feature_20_no_filename", "glob", "files", "feature_45_relative_cwd", "max_filesize_parse_no_suffix", "glob_negate", "file_type_add", "iglob", "regression_127", "no_parent_ignore_git", "feature_1_utf16_explicit", "csglob"], "skipped_tests": []}