use std::fs::File;
use std::io::Write as _;
mod util_ng;
pub use util_ng::*;
const SMOL_PNG: &str = "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAAA1BMVEW10NBjBBbqAAAAH0lEQVRoge3BAQ0AAADCoPdPbQ43oAAAAAAAAAAAvg0hAAABmmDh1QAAAABJRU5ErkJggg==";
#[test]
fn watch() {
const TEST_STR: &str = "watch test watch test";
let build = TestProject::new("watch")
.song(
"watch.md",
indoc! {r#"
# Watch Test
1. `C`Watch.

"#},
)
.binary_asset("smol.png", SMOL_PNG)
.output("songbook.html")
.build()
.unwrap();
let (watch_thread, control) = build.watch();
control.wait_watching();
let md_file = build.dir_songs().join("watch.md");
File::options()
.append(true)
.open(&md_file)
.unwrap()
.write_all(TEST_STR.as_bytes())
.unwrap();
control.wait_watching();
let img_file = build.dir_output().join("smol.png");
let content = SMOL_PNG.decode_base64();
File::create(&img_file)
.unwrap()
.write_all(&content)
.unwrap();
control.wait_watching();
build.interrupt();
let html = build.read_output(".html");
assert!(html.contains(TEST_STR));
watch_thread.join().unwrap();
}