33 lines
1.1 KiB
Rust
33 lines
1.1 KiB
Rust
|
#[cfg(test)]
|
||
|
mod r#ref;
|
||
|
|
||
|
#[macro_export]
|
||
|
macro_rules! compare {
|
||
|
($src:expr, $expected:expr) => {
|
||
|
use jotdown::Render;
|
||
|
let src = $src;
|
||
|
let expected = std::fs::read_to_string($expected).expect("read failed");
|
||
|
let p = jotdown::Parser::new(src);
|
||
|
let mut actual = String::new();
|
||
|
jotdown::html::Renderer::default()
|
||
|
.push(p, &mut actual)
|
||
|
.unwrap();
|
||
|
assert_eq!(actual, expected, "\n{}", {
|
||
|
use std::io::Write;
|
||
|
let mut child = std::process::Command::new("diff")
|
||
|
.arg("--color=always")
|
||
|
.arg("-")
|
||
|
.arg($expected)
|
||
|
.stdin(std::process::Stdio::piped())
|
||
|
.stdout(std::process::Stdio::piped())
|
||
|
.spawn()
|
||
|
.expect("spawn diff failed");
|
||
|
let mut stdin = child.stdin.take().unwrap();
|
||
|
let actual = actual.clone();
|
||
|
std::thread::spawn(move || stdin.write_all(actual.as_bytes()).unwrap());
|
||
|
let stdout = child.wait_with_output().unwrap().stdout;
|
||
|
String::from_utf8(stdout).unwrap()
|
||
|
});
|
||
|
};
|
||
|
}
|