1
0
mirror of https://github.com/BurntSushi/ripgrep.git synced 2024-12-12 19:18:24 +02:00

Skip regression 210 test on APFS

APFS does not support creating filenames with invalid UTF-8 byte codes,
thus this test doesn't make sense. Skip it on file systems where this
shouldn't be possible.

Fixes #559
This commit is contained in:
Sebastian Nowicki 2017-10-16 11:45:20 +02:00 committed by Andrew Gallant
parent a98156e71c
commit 8dc513b5d2
2 changed files with 22 additions and 9 deletions

View File

@ -1015,11 +1015,14 @@ fn regression_210() {
let wd = WorkDir::new("regression_210");
let mut cmd = wd.command();
wd.create(badutf8, "test");
cmd.arg("-H").arg("test").arg(badutf8);
// APFS does not support creating files with invalid UTF-8 bytes.
// https://github.com/BurntSushi/ripgrep/issues/559
if wd.try_create(badutf8, "test").is_ok() {
cmd.arg("-H").arg("test").arg(badutf8);
let out = wd.output(&mut cmd);
assert_eq!(out.stdout, b"foo\xffbar:test\n".to_vec());
let out = wd.output(&mut cmd);
assert_eq!(out.stdout, b"foo\xffbar:test\n".to_vec());
}
}
// See: https://github.com/BurntSushi/ripgrep/issues/228

View File

@ -41,11 +41,16 @@ impl WorkDir {
}
}
/// Create a new file with the given name and contents in this directory.
/// Create a new file with the given name and contents in this directory, or panic on error.
pub fn create<P: AsRef<Path>>(&self, name: P, contents: &str) {
self.create_bytes(name, contents.as_bytes());
}
/// Try to create a new file with the given name and contents in this directory.
pub fn try_create<P: AsRef<Path>>(&self, name: P, contents: &str) -> io::Result<()> {
self.try_create_bytes(name, contents.as_bytes())
}
/// Create a new file with the given name and size.
pub fn create_size<P: AsRef<Path>>(&self, name: P, filesize: u64) {
let path = self.dir.join(name);
@ -53,12 +58,17 @@ impl WorkDir {
nice_err(&path, file.set_len(filesize));
}
/// Create a new file with the given name and contents in this directory.
/// Create a new file with the given name and contents in this directory, or panic on error.
pub fn create_bytes<P: AsRef<Path>>(&self, name: P, contents: &[u8]) {
let path = self.dir.join(name);
let mut file = nice_err(&path, File::create(&path));
nice_err(&path, file.write_all(contents));
nice_err(&path, file.flush());
nice_err(&path, self.try_create_bytes(&path, contents));
}
/// Try to create a new file with the given name and contents in this directory.
fn try_create_bytes<P: AsRef<Path>>(&self, path: P, contents: &[u8]) -> io::Result<()> {
let mut file = File::create(&path)?;
file.write_all(contents)?;
file.flush()
}
/// Remove a file with the given name from this directory.