| //! Compares input to expected output. |
| //! |
| //! Use the MDMAN_BLESS environment variable to automatically update the |
| //! expected output. |
| |
| use mdman::{Format, ManMap}; |
| use pretty_assertions::assert_eq; |
| use std::path::PathBuf; |
| use url::Url; |
| |
| fn run(name: &str) { |
| let input = PathBuf::from(format!("tests/compare/{}.md", name)); |
| let url = Some(Url::parse("https://example.org/").unwrap()); |
| let mut map = ManMap::new(); |
| map.insert( |
| ("other-cmd".to_string(), 1), |
| "https://example.org/commands/other-cmd.html".to_string(), |
| ); |
| |
| for &format in &[Format::Man, Format::Md, Format::Text] { |
| let section = mdman::extract_section(&input).unwrap(); |
| let result = mdman::convert(&input, format, url.clone(), map.clone()).unwrap(); |
| let expected_path = format!( |
| "tests/compare/expected/{}.{}", |
| name, |
| format.extension(section) |
| ); |
| if std::env::var("MDMAN_BLESS").is_ok() { |
| std::fs::write(&expected_path, result).unwrap(); |
| } else { |
| let expected = std::fs::read_to_string(&expected_path).unwrap(); |
| // Fix if Windows checked out with autocrlf. |
| let expected = expected.replace("\r\n", "\n"); |
| assert_eq!(expected, result); |
| } |
| } |
| } |
| |
| macro_rules! test( ($name:ident) => ( |
| #[test] |
| fn $name() { run(stringify!($name)); } |
| ) ); |
| |
| test!(formatting); |
| test!(links); |
| test!(options); |
| test!(tables); |
| test!(vars); |