From 2374bca62a24680c1737f97476311d9ecbe9394c Mon Sep 17 00:00:00 2001 From: Amaan Qureshi Date: Sun, 15 Dec 2024 23:45:53 -0500 Subject: [PATCH] fix(cli): gracefully handle OOB assertions --- cli/src/query_testing.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/cli/src/query_testing.rs b/cli/src/query_testing.rs index 87204841..17f9d2c7 100644 --- a/cli/src/query_testing.rs +++ b/cli/src/query_testing.rs @@ -190,13 +190,21 @@ pub fn parse_position_comments( let mut i = 0; let lines = source.lines_with_terminator().collect::>(); for assertion in &mut result { + let original_position = assertion.position; loop { let on_assertion_line = assertion_ranges[i..] .iter() .any(|(start, _)| start.row == assertion.position.row); let on_empty_line = lines[assertion.position.row].len() <= assertion.position.column; if on_assertion_line || on_empty_line { - assertion.position.row -= 1; + if assertion.position.row > 0 { + assertion.position.row -= 1; + } else { + return Err(anyhow!( + "Error: could not find a line that corresponds to the assertion `{}` located at {original_position}", + assertion.expected_capture_name + )); + } } else { while i < assertion_ranges.len() && assertion_ranges[i].0.row < assertion.position.row