From d30640344090fc3ffde6d58e0c5a4c928fb00990 Mon Sep 17 00:00:00 2001 From: Andrew Gallant Date: Mon, 26 Sep 2016 19:09:59 -0400 Subject: [PATCH] Fix an off-by-one error with --column. Fixes #105. --- src/printer.rs | 2 +- tests/tests.rs | 22 ++++++++++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/printer.rs b/src/printer.rs index 84a72fba..0645b7e4 100644 --- a/src/printer.rs +++ b/src/printer.rs @@ -186,7 +186,7 @@ impl Printer { let column = if self.column { Some(re.find(&buf[start..end]) - .map(|(s, _)| s + 1).unwrap_or(0) as u64) + .map(|(s, _)| s).unwrap_or(0) as u64) } else { None }; diff --git a/tests/tests.rs b/tests/tests.rs index 3ae568e7..582eb841 100644 --- a/tests/tests.rs +++ b/tests/tests.rs @@ -86,8 +86,8 @@ sherlock!(columns, |wd: WorkDir, mut cmd: Command| { cmd.arg("--column"); let lines: String = wd.stdout(&mut cmd); let expected = "\ -58:For the Doctor Watsons of this world, as opposed to the Sherlock -50:be, to a very large extent, the result of luck. Sherlock Holmes +57:For the Doctor Watsons of this world, as opposed to the Sherlock +49:be, to a very large extent, the result of luck. Sherlock Holmes "; assert_eq!(lines, expected); }); @@ -716,6 +716,24 @@ clean!(regression_93, r"(\d{1,3}\.){3}\d{1,3}", ".", assert_eq!(lines, "foo:192.168.1.1\n"); }); +// See: https://github.com/BurntSushi/ripgrep/issues/105 +clean!(regression_105_part1, "test", ".", |wd: WorkDir, mut cmd: Command| { + wd.create("foo", "zztest"); + cmd.arg("--vimgrep"); + + let lines: String = wd.stdout(&mut cmd); + assert_eq!(lines, "foo:1:3:zztest\n"); +}); + +// See: https://github.com/BurntSushi/ripgrep/issues/105 +clean!(regression_105_part2, "test", ".", |wd: WorkDir, mut cmd: Command| { + wd.create("foo", "zztest"); + cmd.arg("--column"); + + let lines: String = wd.stdout(&mut cmd); + assert_eq!(lines, "foo:3:zztest\n"); +}); + // See: https://github.com/BurntSushi/ripgrep/issues/20 sherlock!(feature_20, "Sherlock", ".", |wd: WorkDir, mut cmd: Command| { cmd.arg("--no-filename");