summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAnthony Huang <anthony.huang@affirm.com>2021-05-25 21:41:11 -0400
committerAndrew Gallant <jamslam@gmail.com>2021-05-31 21:51:18 -0400
commit578e1992fa21d3612d3e613d8869dbbb16e33cbe (patch)
treed87e8e2aee7e4d0ad393b5d97023b6b6bd5b7da6 /tests
parent46d0130597a8340c19fdd41b107c209653451698 (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.rs93
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"]);