diff --git a/tests/typeset.rs b/tests/typeset.rs
index ff0e44bc5..051fd92b0 100644
--- a/tests/typeset.rs
+++ b/tests/typeset.rs
@@ -131,6 +131,7 @@ fn test(
let mut frames = vec![];
let mut lines = 0;
let mut compare_ref = true;
+ let mut compare_ever = false;
let parts: Vec<_> = src.split("---").collect();
for (i, part) in parts.iter().enumerate() {
@@ -147,15 +148,17 @@ fn test(
}
}
} else {
- let (part_ok, part_frames) = test_part(part, i, compare_ref, lines, env);
+ let (part_ok, compare_here, part_frames) =
+ test_part(part, i, compare_ref, lines, env);
ok &= part_ok;
+ compare_ever |= compare_here;
frames.extend(part_frames);
}
lines += part.lines().count() as u32;
}
- if !frames.is_empty() {
+ if compare_ever {
let pdf_data = pdf::export(&env, &frames);
fs::create_dir_all(&pdf_path.parent().unwrap()).unwrap();
fs::write(pdf_path, pdf_data).unwrap();
@@ -188,7 +191,7 @@ fn test_part(
compare_ref: bool,
lines: u32,
env: &mut Env,
-) -> (bool, Vec) {
+) -> (bool, bool, Vec) {
let map = LineMap::new(src);
let (local_compare_ref, ref_diags) = parse_metadata(src, &map);
let compare_ref = local_compare_ref.unwrap_or(compare_ref);
@@ -242,7 +245,7 @@ fn test_part(
}
}
- (ok, frames)
+ (ok, compare_ref, frames)
}
fn parse_metadata(src: &str, map: &LineMap) -> (Option, DiagSet) {
@@ -336,12 +339,15 @@ fn draw(env: &Env, frames: &[Frame], pixel_per_pt: f32) -> Canvas {
.iter()
.map(|l| l.size.width)
.max_by(|a, b| a.partial_cmp(&b).unwrap())
- .unwrap();
+ .unwrap_or_default();
let pixel_width = (pixel_per_pt * width.to_pt() as f32) as u32;
let pixel_height = (pixel_per_pt * height.to_pt() as f32) as u32;
if pixel_width > 4000 || pixel_height > 4000 {
- panic!("overlarge image: {} by {}", pixel_width, pixel_height);
+ panic!(
+ "overlarge image: {} by {} ({} x {})",
+ pixel_width, pixel_height, width, height,
+ );
}
let mut canvas = Canvas::new(pixel_width, pixel_height).unwrap();