From ff903674f95205cb51fb7f5489e9f15610dd6820 Mon Sep 17 00:00:00 2001 From: Eric Biedert Date: Tue, 23 May 2023 12:36:54 +0200 Subject: [PATCH] Fix tests on windows (#1222) --- docs/src/html.rs | 15 ++++++++++----- tests/src/tests.rs | 6 +++++- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/docs/src/html.rs b/docs/src/html.rs index e0b524ce0..d02f768e3 100644 --- a/docs/src/html.rs +++ b/docs/src/html.rs @@ -124,6 +124,7 @@ struct Metadata { struct Handler<'a> { resolver: &'a dyn Resolver, lang: Option, + code: String, outline: Vec, id_base: String, ids: &'a Arena, @@ -134,6 +135,7 @@ impl<'a> Handler<'a> { Self { resolver, lang: None, + code: String::new(), outline: vec![], id_base, ids, @@ -141,7 +143,6 @@ impl<'a> Handler<'a> { } fn handle(&mut self, event: &mut md::Event<'a>) -> bool { - let lang = self.lang.take(); match event { // Rewrite Markdown images. md::Event::Start(md::Tag::Image(_, path, _)) => { @@ -207,17 +208,21 @@ impl<'a> Handler<'a> { // Code blocks. md::Event::Start(md::Tag::CodeBlock(md::CodeBlockKind::Fenced(lang))) => { self.lang = Some(lang.as_ref().into()); + self.code = String::new(); return false; } md::Event::End(md::Tag::CodeBlock(md::CodeBlockKind::Fenced(_))) => { - return false; + let Some(lang) = self.lang.take() else { return false }; + let html = code_block(self.resolver, &lang, &self.code); + *event = md::Event::Html(html.raw.into()); } // Example with preview. md::Event::Text(text) => { - let Some(lang) = lang.as_deref() else { return true }; - let html = code_block(self.resolver, lang, text); - *event = md::Event::Html(html.raw.into()); + if self.lang.is_some() { + self.code.push_str(text); + return false; + } } _ => {} diff --git a/tests/src/tests.rs b/tests/src/tests.rs index c2d0cc686..61414daa6 100644 --- a/tests/src/tests.rs +++ b/tests/src/tests.rs @@ -378,7 +378,11 @@ fn test( let mut compare_ever = false; let mut rng = LinearShift::new(); - let parts: Vec<_> = text.split("\n---").collect(); + let parts: Vec<_> = text + .split("\n---") + .map(|s| s.strip_suffix('\r').unwrap_or(s)) + .collect(); + for (i, &part) in parts.iter().enumerate() { if let Some(x) = args.subtest { let x = usize::try_from(