Skip to content

Commit

Permalink
Add enclosing group to alternations in globs
Browse files Browse the repository at this point in the history
  • Loading branch information
tiehuis committed Mar 4, 2017
1 parent df1bf4a commit 5537147
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 2 deletions.
13 changes: 11 additions & 2 deletions globset/src/glob.rs
Original file line number Diff line number Diff line change
Expand Up @@ -659,9 +659,18 @@ impl Tokens {
for pat in patterns {
let mut altre = String::new();
self.tokens_to_regex(options, &pat, &mut altre);
parts.push(altre);
if !altre.is_empty() {
parts.push(altre);
}
}

// It is possible to have an empty set in which case the
// resulting alternation '()' would be an error.
if !parts.is_empty() {
re.push('(');
re.push_str(&parts.join("|"));
re.push(')');
}
re.push_str(&parts.join("|"));
}
}
}
Expand Down
21 changes: 21 additions & 0 deletions tests/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1326,6 +1326,27 @@ fn regression_270() {
assert_eq!(lines, path("foo:-test\n"));
}

// See: https://github.com/BurntSushi/ripgrep/issues/391
#[test]
fn regression_391() {
let wd = WorkDir::new("regression_391");
wd.create_dir(".git");
wd.create("lock", "");
wd.create("bar.py", "");
wd.create(".git/packed-refs", "");
wd.create(".git/description", "");

let mut cmd = wd.command();
cmd.arg("--no-ignore").arg("--hidden").arg("--follow").arg("--files")
.arg("--glob")
.arg("!{.git,node_modules,plugged}/**")
.arg("--glob")
.arg("*.{js,json,php,md,styl,scss,sass,pug,html,config,py,cpp,c,go,hs}");

let lines: String = wd.stdout(&mut cmd);
assert_eq!(lines, "bar.py\n");
}

#[test]
fn type_list() {
let wd = WorkDir::new("type_list");
Expand Down

0 comments on commit 5537147

Please sign in to comment.