summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/test_typeset.rs45
1 files changed, 26 insertions, 19 deletions
diff --git a/tests/test_typeset.rs b/tests/test_typeset.rs
index e9051d10..2c8a093d 100644
--- a/tests/test_typeset.rs
+++ b/tests/test_typeset.rs
@@ -19,7 +19,8 @@ use typstc::layout::MultiLayout;
use typstc::length::Length;
use typstc::paper::PaperClass;
use typstc::style::PageStyle;
-use typstc::Typesetter;
+use typstc::syntax::LineMap;
+use typstc::{Feedback, Pass, Typesetter};
const TEST_DIR: &str = "tests";
const OUT_DIR: &str = "tests/out";
@@ -79,29 +80,35 @@ fn main() {
fn test(
name: &str,
src: &str,
- path: &Path,
+ src_path: &Path,
typesetter: &mut Typesetter,
loader: &SharedFontLoader,
) {
println!("Testing {}.", name);
- let typeset = block_on(typesetter.typeset(src));
- let layouts = typeset.output;
- let mut feedback = typeset.feedback;
-
- feedback.diagnostics.sort();
- for diagnostic in feedback.diagnostics {
- let span = diagnostic.span;
- println!(
- " {:?}: {}:{}:{} - {}:{}: {}",
- diagnostic.v.level,
- path.display(),
- span.start.line + 1,
- span.start.column + 1,
- span.end.line + 1,
- span.end.column + 1,
- diagnostic.v.message,
- );
+ let Pass {
+ output: layouts,
+ feedback: Feedback { mut diagnostics, .. },
+ } = block_on(typesetter.typeset(&src));
+
+ if !diagnostics.is_empty() {
+ diagnostics.sort();
+
+ let map = LineMap::new(&src);
+ for diagnostic in diagnostics {
+ let span = diagnostic.span;
+ let start = map.location(span.start);
+ let end = map.location(span.end);
+
+ println!(
+ " {}: {}:{}-{}: {}",
+ diagnostic.v.level,
+ src_path.display(),
+ start,
+ end,
+ diagnostic.v.message,
+ );
+ }
}
let loader = loader.borrow();