diff options
author | Anthony Huang <anthony.huang@affirm.com> | 2021-05-25 21:41:11 -0400 |
---|---|---|
committer | Andrew Gallant <jamslam@gmail.com> | 2021-05-31 21:51:18 -0400 |
commit | 578e1992fa21d3612d3e613d8869dbbb16e33cbe (patch) | |
tree | d87e8e2aee7e4d0ad393b5d97023b6b6bd5b7da6 /tests | |
parent | 46d0130597a8340c19fdd41b107c209653451698 (diff) |
cli: add --field-{context,match}-separator flags
These flags permit configuring the bytes used to delimit fields in match
or context lines, where "fields" are things like the file path, line
number, column number and the match/context itself.
Fixes #1842, Closes #1871
Diffstat (limited to 'tests')
-rw-r--r-- | tests/feature.rs | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/tests/feature.rs b/tests/feature.rs index 3cae7075..36cbad73 100644 --- a/tests/feature.rs +++ b/tests/feature.rs @@ -828,6 +828,99 @@ rgtest!(f1404_nothing_searched_ignored, |dir: Dir, mut cmd: TestCommand| { eqnice!(expected, stderr); }); +// See: https://github.com/BurntSushi/ripgrep/issues/1842 +rgtest!(f1842_field_context_separator, |dir: Dir, _: TestCommand| { + dir.create("sherlock", SHERLOCK); + + // Test the default. + let base = &["-n", "-A1", "Doctor Watsons", "sherlock"]; + let expected = "\ +1:For the Doctor Watsons of this world, as opposed to the Sherlock +2-Holmeses, success in the province of detective work must always +"; + eqnice!(expected, dir.command().args(base).stdout()); + + // Test that it can be overridden. + let mut args = vec!["--field-context-separator", "!"]; + args.extend(base); + let expected = "\ +1:For the Doctor Watsons of this world, as opposed to the Sherlock +2!Holmeses, success in the province of detective work must always +"; + eqnice!(expected, dir.command().args(&args).stdout()); + + // Test that it can use multiple bytes. + let mut args = vec!["--field-context-separator", "!!"]; + args.extend(base); + let expected = "\ +1:For the Doctor Watsons of this world, as opposed to the Sherlock +2!!Holmeses, success in the province of detective work must always +"; + eqnice!(expected, dir.command().args(&args).stdout()); + + // Test that unescaping works. + let mut args = vec!["--field-context-separator", r"\x7F"]; + args.extend(base); + let expected = "\ +1:For the Doctor Watsons of this world, as opposed to the Sherlock +2\x7FHolmeses, success in the province of detective work must always +"; + eqnice!(expected, dir.command().args(&args).stdout()); + + // Test that an empty separator is OK. + let mut args = vec!["--field-context-separator", r""]; + args.extend(base); + let expected = "\ +1:For the Doctor Watsons of this world, as opposed to the Sherlock +2Holmeses, success in the province of detective work must always +"; + eqnice!(expected, dir.command().args(&args).stdout()); +}); + +// See: https://github.com/BurntSushi/ripgrep/issues/1842 +rgtest!(f1842_field_match_separator, |dir: Dir, _: TestCommand| { + dir.create("sherlock", SHERLOCK); + + // Test the default. + let base = &["-n", "Doctor Watsons", "sherlock"]; + let expected = "\ +1:For the Doctor Watsons of this world, as opposed to the Sherlock +"; + eqnice!(expected, dir.command().args(base).stdout()); + + // Test that it can be overridden. + let mut args = vec!["--field-match-separator", "!"]; + args.extend(base); + let expected = "\ +1!For the Doctor Watsons of this world, as opposed to the Sherlock +"; + eqnice!(expected, dir.command().args(&args).stdout()); + + // Test that it can use multiple bytes. + let mut args = vec!["--field-match-separator", "!!"]; + args.extend(base); + let expected = "\ +1!!For the Doctor Watsons of this world, as opposed to the Sherlock +"; + eqnice!(expected, dir.command().args(&args).stdout()); + + // Test that unescaping works. + let mut args = vec!["--field-match-separator", r"\x7F"]; + args.extend(base); + let expected = "\ +1\x7FFor the Doctor Watsons of this world, as opposed to the Sherlock +"; + eqnice!(expected, dir.command().args(&args).stdout()); + + // Test that an empty separator is OK. + let mut args = vec!["--field-match-separator", r""]; + args.extend(base); + let expected = "\ +1For the Doctor Watsons of this world, as opposed to the Sherlock +"; + eqnice!(expected, dir.command().args(&args).stdout()); +}); + rgtest!(no_context_sep, |dir: Dir, mut cmd: TestCommand| { dir.create("test", "foo\nctx\nbar\nctx\nfoo\nctx"); cmd.args(&["-A1", "--no-context-separator", "foo", "test"]); |