commit
643d5ecc5c
|
@ -264,6 +264,10 @@ fn load_chapter<P: AsRef<Path>>(
|
||||||
format!("Unable to read \"{}\" ({})", link.name, location.display())
|
format!("Unable to read \"{}\" ({})", link.name, location.display())
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
|
if content.as_bytes().starts_with(b"\xef\xbb\xbf") {
|
||||||
|
content.replace_range(..3, "");
|
||||||
|
}
|
||||||
|
|
||||||
let stripped = location
|
let stripped = location
|
||||||
.strip_prefix(&src_dir)
|
.strip_prefix(&src_dir)
|
||||||
.expect("Chapters are always inside a book");
|
.expect("Chapters are always inside a book");
|
||||||
|
@ -393,6 +397,29 @@ And here is some \
|
||||||
assert_eq!(got, should_be);
|
assert_eq!(got, should_be);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn load_a_single_chapter_with_utf8_bom_from_disk() {
|
||||||
|
let temp_dir = TempFileBuilder::new().prefix("book").tempdir().unwrap();
|
||||||
|
|
||||||
|
let chapter_path = temp_dir.path().join("chapter_1.md");
|
||||||
|
File::create(&chapter_path)
|
||||||
|
.unwrap()
|
||||||
|
.write_all(("\u{feff}".to_owned() + DUMMY_SRC).as_bytes())
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
let link = Link::new("Chapter 1", chapter_path);
|
||||||
|
|
||||||
|
let should_be = Chapter::new(
|
||||||
|
"Chapter 1",
|
||||||
|
DUMMY_SRC.to_string(),
|
||||||
|
"chapter_1.md",
|
||||||
|
Vec::new(),
|
||||||
|
);
|
||||||
|
|
||||||
|
let got = load_chapter(&link, temp_dir.path(), Vec::new()).unwrap();
|
||||||
|
assert_eq!(got, should_be);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn cant_load_a_nonexistent_chapter() {
|
fn cant_load_a_nonexistent_chapter() {
|
||||||
let link = Link::new("Chapter 1", "/foo/bar/baz.md");
|
let link = Link::new("Chapter 1", "/foo/bar/baz.md");
|
||||||
|
|
Loading…
Reference in New Issue