summaryrefslogtreecommitdiff
path: root/tests/src
diff options
context:
space:
mode:
authorTobias Schmitz <tobiasschmitz2001@gmail.com>2025-06-11 12:19:41 +0200
committerGitHub <noreply@github.com>2025-06-11 10:19:41 +0000
commitd1c7757da8e84ac68dcf58546a7bbaebceea8277 (patch)
tree75a11dfcab47144ebb4b3529201e8b6351e49b2d /tests/src
parent71032c83499e15103ee733619d472fdd354fbdf5 (diff)
Fix panic when test source is not found in world (#6428)
Diffstat (limited to 'tests/src')
-rw-r--r--tests/src/run.rs15
-rw-r--r--tests/src/world.rs2
2 files changed, 13 insertions, 4 deletions
diff --git a/tests/src/run.rs b/tests/src/run.rs
index a34e38db..76ce1299 100644
--- a/tests/src/run.rs
+++ b/tests/src/run.rs
@@ -10,7 +10,7 @@ use typst::layout::{Abs, Frame, FrameItem, PagedDocument, Transform};
use typst::visualize::Color;
use typst::{Document, WorldExt};
use typst_pdf::PdfOptions;
-use typst_syntax::FileId;
+use typst_syntax::{FileId, Lines};
use crate::collect::{Attr, FileSize, NoteKind, Test};
use crate::logger::TestResult;
@@ -292,7 +292,7 @@ impl<'a> Runner<'a> {
return "(empty)".into();
}
- let lines = self.world.lookup(file);
+ let lines = self.lookup(file);
lines.text()[range.clone()].replace('\n', "\\n").replace('\r', "\\r")
}
@@ -318,7 +318,7 @@ impl<'a> Runner<'a> {
/// Display a position as a line:column pair.
fn format_pos(&self, file: FileId, pos: usize) -> String {
- let lines = self.world.lookup(file);
+ let lines = self.lookup(file);
let res = lines.byte_to_line_column(pos).map(|(line, col)| (line + 1, col + 1));
let Some((line, col)) = res else {
@@ -331,6 +331,15 @@ impl<'a> Runner<'a> {
format!("{line}:{col}")
}
}
+
+ #[track_caller]
+ fn lookup(&self, file: FileId) -> Lines<String> {
+ if self.test.source.id() == file {
+ self.test.source.lines().clone()
+ } else {
+ self.world.lookup(file)
+ }
+ }
}
/// An output type we can test.
diff --git a/tests/src/world.rs b/tests/src/world.rs
index 68a65c1b..6fa1cf60 100644
--- a/tests/src/world.rs
+++ b/tests/src/world.rs
@@ -88,7 +88,7 @@ impl TestWorld {
/// Lookup line metadata for a file by id.
#[track_caller]
- pub fn lookup(&self, id: FileId) -> Lines<String> {
+ pub(crate) fn lookup(&self, id: FileId) -> Lines<String> {
self.slot(id, |slot| {
if let Some(source) = slot.source.get() {
let source = source.as_ref().expect("file is not valid");