mirror of
https://github.com/BurntSushi/ripgrep.git
synced 2025-08-04 10:08:36 +00:00
ignore/gitignore: Skip BOM at start of ignore file
Match Git's behavior. Fixes #2177.
This commit is contained in:
parent
d922b7ac11
commit
4ab99abb97
3 changed files with 22 additions and 0 deletions
|
@ -401,6 +401,12 @@ impl GitignoreBuilder {
|
|||
break;
|
||||
}
|
||||
};
|
||||
|
||||
// Match Git's handling of .gitignore files that begin with the Unicode BOM
|
||||
const UTF8_BOM: &str = "\u{feff}";
|
||||
let line =
|
||||
if i == 0 { line.trim_start_matches(UTF8_BOM) } else { &line };
|
||||
|
||||
if let Err(err) = self.add_line(Some(path.to_path_buf()), &line) {
|
||||
errs.push(err.tagged(path, lineno));
|
||||
}
|
||||
|
|
2
crates/ignore/tests/gitignore_skip_bom.gitignore
Normal file
2
crates/ignore/tests/gitignore_skip_bom.gitignore
Normal file
|
@ -0,0 +1,2 @@
|
|||
ignore/this/path
|
||||
# This file begins with a BOM (U+FEFF)
|
14
crates/ignore/tests/gitignore_skip_bom.rs
Normal file
14
crates/ignore/tests/gitignore_skip_bom.rs
Normal file
|
@ -0,0 +1,14 @@
|
|||
use ignore::gitignore::GitignoreBuilder;
|
||||
|
||||
const IGNORE_FILE: &'static str = "tests/gitignore_skip_bom.gitignore";
|
||||
|
||||
/// Skip a Byte-Order Mark (BOM) at the beginning of the file, matching Git's behavior.
|
||||
#[test]
|
||||
fn gitignore_skip_bom() {
|
||||
let mut builder = GitignoreBuilder::new("ROOT");
|
||||
let error = builder.add(IGNORE_FILE);
|
||||
assert!(error.is_none(), "failed to open gitignore file");
|
||||
let g = builder.build().unwrap();
|
||||
|
||||
assert!(g.matched("ignore/this/path", false).is_ignore());
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue