summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAndrew Gallant <jamslam@gmail.com>2016-11-09 16:45:21 -0500
committerAndrew Gallant <jamslam@gmail.com>2016-11-09 16:45:23 -0500
commit2dce0dc0df3c9ade3d89dd1ed673213d76760509 (patch)
tree5cad9fb9e824ac9858aea30ad3c7f3f2fd2e3678 /tests
parent2e5c3c05e822d55f3752fc0f1765f128a5e3b4e1 (diff)
Fix a bug with handling --ignore-file.
Namely, passing a directory to --ignore-file caused ripgrep to allocate memory without bound. The issue was that I got a bit overzealous with partial error reporting. Namely, when processing a gitignore file, we should try to use every pattern even if some patterns are invalid globs (e.g., a**b). In the process, I applied the same logic to I/O errors. In this case, it manifest by attempting to read lines from a directory, which appears to yield Results forever, where each Result is an error of the form "you can't read from a directory silly." Since I treated it as a partial error, ripgrep was just spinning and accruing each error in memory, which caused the OOM killer to kick in. Fixes #228
Diffstat (limited to 'tests')
-rw-r--r--tests/tests.rs7
1 files changed, 7 insertions, 0 deletions
diff --git a/tests/tests.rs b/tests/tests.rs
index 59cefb59..5c5546d3 100644
--- a/tests/tests.rs
+++ b/tests/tests.rs
@@ -893,6 +893,13 @@ clean!(regression_206, "test", ".", |wd: WorkDir, mut cmd: Command| {
assert_eq!(lines, format!("{}:test\n", path("foo/bar.txt")));
});
+// See: https://github.com/BurntSushi/ripgrep/issues/228
+clean!(regression_228, "test", ".", |wd: WorkDir, mut cmd: Command| {
+ wd.create_dir("foo");
+ cmd.arg("--ignore-file").arg("foo");
+ wd.assert_err(&mut cmd);
+});
+
// See: https://github.com/BurntSushi/ripgrep/issues/20
sherlock!(feature_20_no_filename, "Sherlock", ".",
|wd: WorkDir, mut cmd: Command| {