diff -r b10e4c19f8c5 -r 90512ca6a255 rust/hg-core/src/matchers.rs --- a/rust/hg-core/src/matchers.rs Tue Aug 30 10:52:32 2022 +0100 +++ b/rust/hg-core/src/matchers.rs Mon Aug 29 16:09:30 2022 +0200 @@ -791,7 +791,7 @@ dirs, parents, } = roots_dirs_and_parents(&ignore_patterns)?; - let prefix = ignore_patterns.iter().any(|k| match k.syntax { + let prefix = ignore_patterns.iter().all(|k| match k.syntax { PatternSyntax::Path | PatternSyntax::RelPath => true, _ => false, }); @@ -1094,6 +1094,31 @@ matcher.visit_children_set(HgPath::new(b"dir/subdir/x")), VisitChildrenSet::This ); + + // Test multiple patterns + let matcher = IncludeMatcher::new(vec![ + IgnorePattern::new(PatternSyntax::RelPath, b"foo", Path::new("")), + IgnorePattern::new(PatternSyntax::Glob, b"g*", Path::new("")), + ]) + .unwrap(); + + assert_eq!( + matcher.visit_children_set(HgPath::new(b"")), + VisitChildrenSet::This + ); + + // Test multiple patterns + let matcher = IncludeMatcher::new(vec![IgnorePattern::new( + PatternSyntax::Glob, + b"**/*.exe", + Path::new(""), + )]) + .unwrap(); + + assert_eq!( + matcher.visit_children_set(HgPath::new(b"")), + VisitChildrenSet::This + ); } #[test]