summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAndrew Gallant <jamslam@gmail.com>2021-05-31 19:00:56 -0400
committerAndrew Gallant <jamslam@gmail.com>2021-05-31 21:51:18 -0400
commitee23ab51736d35028c7f3eee23295429377742b4 (patch)
tree2e43d4ded4f3e76e5b6a8c68c6bc005ec8a326a3 /tests
parentefd9cfb2fc1f0233de9eda4c03416d32ef2c3ce8 (diff)
printer: trim line terminator before finding submatches
This fixes a bug where PCRE2 look-around could change the result of a match if it observed a line terminator in the printer. And in particular, this is precisely how the searcher operates: the line is considered unto itself *without* the line terminator. Fixes #1401
Diffstat (limited to 'tests')
-rw-r--r--tests/regression.rs27
1 files changed, 26 insertions, 1 deletions
diff --git a/tests/regression.rs b/tests/regression.rs
index d110c99c..cd14d5e4 100644
--- a/tests/regression.rs
+++ b/tests/regression.rs
@@ -806,7 +806,32 @@ rgtest!(r1389_bad_symlinks_no_biscuit, |dir: Dir, mut cmd: TestCommand| {
eqnice!("mylink/file.txt:test\n", stdout);
});
-// printf "foo\nbar\n" | rg -PU '(?<=foo\n)bar' -r quux
+// See: https://github.com/BurntSushi/ripgrep/issues/1401
+rgtest!(r1401_look_ahead_only_matching_1, |dir: Dir, mut cmd: TestCommand| {
+ // Only PCRE2 supports look-around.
+ if !dir.is_pcre2() {
+ return;
+ }
+ dir.create("ip.txt", "foo 42\nxoyz\ncat\tdog\n");
+ cmd.args(&["-No", r".*o(?!.*\s)", "ip.txt"]);
+ eqnice!("xo\ncat\tdo\n", cmd.stdout());
+
+ let mut cmd = dir.command();
+ cmd.args(&["-No", r".*o(?!.*[ \t])", "ip.txt"]);
+ eqnice!("xo\ncat\tdo\n", cmd.stdout());
+});
+
+// See: https://github.com/BurntSushi/ripgrep/issues/1401
+rgtest!(r1401_look_ahead_only_matching_2, |dir: Dir, mut cmd: TestCommand| {
+ // Only PCRE2 supports look-around.
+ if !dir.is_pcre2() {
+ return;
+ }
+ dir.create("ip.txt", "foo 42\nxoyz\ncat\tdog\nfoo");
+ cmd.args(&["-No", r".*o(?!.*\s)", "ip.txt"]);
+ eqnice!("xo\ncat\tdo\nfoo\n", cmd.stdout());
+});
+
// See: https://github.com/BurntSushi/ripgrep/issues/1412
rgtest!(r1412_look_behind_no_replacement, |dir: Dir, mut cmd: TestCommand| {
// Only PCRE2 supports look-around.