Skip to content

Commit b9c3fea

Browse files
authored
fix(vscode): make "Run test" codelenses appear in the correct place and run the correct test (#2395)
Also add performance issue reproes in playground-server/tests The "Run test" codelenses were appearing in the wrong place because `str.chars()` iterates over unicode scalar values, not bytes, and people often have complex utf8 scalars in their code because LLM outputs use them! It's not just emojis: even just things like apostrophes, quotes are often modelled as their fancy utf8 analog; and of course for emojis there are things like [x] checkbox variants that will show up. Running the correct test was actually fixed drive-by in #2358, but we left in a bug where a test case with coverage for N functions would render N^2 codelenses - that's now fixed. The issue was that the runtime code didn't make it clear in its API that iterating over test cases actually iterated over (fn, test) pairs, and so the language server code would then expand those using test.parent_functions(), resulting in N^2 entries in list_testcases(). The internal APIs have been renamed to make it much more explicit what's actually going on there. <!-- ELLIPSIS_HIDDEN --> ---- > [!IMPORTANT] > Fixes "Run test" codelenses in VSCode to appear and function correctly, resolves N^2 rendering issue, and adds performance tests in playground server. > > - **Behavior**: > - Fixes "Run test" codelenses to appear correctly by iterating over `char_indices` instead of `chars` in `span.rs`. > - Resolves issue where test cases with N functions rendered N^2 codelenses by clarifying API in `ir/repr.rs` and `ir_features.rs`. > - **API Changes**: > - Renames `walk_tests()` to `walk_function_test_pairs()` in `ir/repr.rs`, `ir_features.rs`, and `test_executor/mod.rs`. > - Changes `BamlTestCase` to `BamlFunctionTestCasePair` in `baml_lsp_types.rs` and `baml_project/mod.rs`. > - **Playground Server**: > - Adds performance test cases in `playground-server/tests`. > - Implements `load_project_from_directory()` in `playground_barebones.rs` to load `.baml` files. > - **Misc**: > - Updates `Cargo.toml` files to include new dependencies `chrono` and `walkdir`. > > <sup>This description was created by </sup>[<img alt="Ellipsis" src="https://img.shields.io/badge/Ellipsis-blue?color=175173">](https://www.ellipsis.dev?ref=BoundaryML%2Fbaml&utm_source=github&utm_medium=referral)<sup> for 8d12933. You can [customize](https://app.ellipsis.dev/BoundaryML/settings/summaries) this summary. It will automatically update as commits are pushed.</sup> <!-- ELLIPSIS_HIDDEN -->
1 parent df6ee12 commit b9c3fea

File tree

43 files changed

+2015
-159
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+2015
-159
lines changed

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@
44
**/baml_client/inlinedbaml.go binary
55
**/baml_client/** merge=baml_client
66
**/baml_client/** linguist-generated=true
7+
**/*.lfs.baml filter=lfs diff=lfs merge=lfs -text

engine/Cargo.lock

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

engine/baml-lib/baml-core/src/ir/repr.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -772,7 +772,7 @@ impl IntermediateRepr {
772772
self.expr_fns.iter().map(|e| Walker { ir: self, item: e })
773773
}
774774

775-
pub fn walk_tests(
775+
pub fn walk_function_test_pairs(
776776
&self,
777777
) -> impl Iterator<Item = Walker<'_, (&Node<Function>, &Node<TestCase>)>> {
778778
self.functions.iter().flat_map(move |f| {

engine/baml-lib/baml/tests/validation_files/headers/edge_cases.mmd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ flowchart TD
119119
n50 --> n51
120120
n49 --> n50
121121
n48 --> n49
122-
%%__BAML_SPANMAP__={"n0":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":3,"start":4,"end_line":4,"end":8},"n1":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":6,"start":12,"end_line":7,"end":15},"n2":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":9,"start":19,"end_line":14,"end":0},"n3":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":16,"start":9,"end_line":17,"end":4},"n4":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":17,"start":8,"end_line":18,"end":3},"n5":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":18,"start":7,"end_line":19,"end":2},"n6":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":19,"start":6,"end_line":20,"end":1},"n7":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":20,"start":5,"end_line":21,"end":0},"n8":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":21,"start":4,"end_line":21,"end":19},"n9":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":21,"start":23,"end_line":22,"end":19},"n10":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":23,"start":2,"end_line":23,"end":19},"n11":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":24,"start":1,"end_line":25,"end":14},"n12":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":29,"start":23,"end_line":30,"end":19},"n13":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":30,"start":23,"end_line":31,"end":19},"n14":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":32,"start":1,"end_line":33,"end":14},"n15":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":35,"start":23,"end_line":36,"end":19},"n16":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":36,"start":23,"end_line":41,"end":5},"n17":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":42,"start":23,"end_line":43,"end":19},"n18":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":48,"start":23,"end_line":50,"end":14},"n19":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":51,"start":23,"end_line":56,"end":5},"n20":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":60,"start":27,"end_line":62,"end":10},"n21":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":64,"start":0,"end_line":65,"end":6},"n22":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":66,"start":35,"end_line":67,"end":19},"n23":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":70,"start":31,"end_line":72,"end":2},"n24":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":74,"start":3,"end_line":74,"end":19},"n25":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":77,"start":27,"end_line":79,"end":5},"n26":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":81,"start":23,"end_line":85,"end":5},"n27":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":86,"start":23,"end_line":87,"end":19},"n28":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":87,"start":23,"end_line":88,"end":19},"n29":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":88,"start":23,"end_line":89,"end":19},"n30":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":89,"start":23,"end_line":90,"end":19},"n31":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":90,"start":23,"end_line":91,"end":19},"n32":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":91,"start":23,"end_line":93,"end":14},"n33":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":98,"start":4,"end_line":98,"end":19},"n34":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":99,"start":3,"end_line":100,"end":0},"n35":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":102,"start":3,"end_line":102,"end":19},"n36":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":103,"start":3,"end_line":103,"end":19},"n37":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":104,"start":3,"end_line":105,"end":14},"n38":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":114,"start":5,"end_line":115,"end":2},"n39":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":116,"start":4,"end_line":117,"end":9},"n40":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":119,"start":2,"end_line":121,"end":3},"n41":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":123,"start":1,"end_line":123,"end":14},"n42":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":124,"start":5,"end_line":124,"end":19},"n43":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":126,"start":4,"end_line":128,"end":3},"n44":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":130,"start":1,"end_line":130,"end":14},"n45":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":131,"start":3,"end_line":134,"end":10},"n46":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":135,"start":23,"end_line":137,"end":14},"n47":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":137,"start":23,"end_line":139,"end":14},"n48":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":144,"start":4,"end_line":145,"end":4},"n49":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":145,"start":8,"end_line":145,"end":19},"n50":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":145,"start":23,"end_line":146,"end":19},"n51":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":146,"start":23,"end_line":147,"end":19},"n52":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":147,"start":23,"end_line":148,"end":19},"n53":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":148,"start":23,"end_line":151,"end":0}}
122+
%%__BAML_SPANMAP__={"n0":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":3,"start":4,"end_line":4,"end":0},"n1":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":6,"start":4,"end_line":7,"end":0},"n2":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":9,"start":4,"end_line":10,"end":0},"n3":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":15,"start":4,"end_line":16,"end":0},"n4":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":16,"start":4,"end_line":17,"end":0},"n5":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":17,"start":4,"end_line":18,"end":0},"n6":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":18,"start":4,"end_line":19,"end":0},"n7":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":19,"start":4,"end_line":20,"end":0},"n8":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":20,"start":4,"end_line":21,"end":0},"n9":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":21,"start":4,"end_line":22,"end":0},"n10":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":22,"start":4,"end_line":23,"end":0},"n11":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":23,"start":4,"end_line":24,"end":0},"n12":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":29,"start":4,"end_line":30,"end":0},"n13":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":30,"start":4,"end_line":31,"end":0},"n14":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":31,"start":4,"end_line":32,"end":0},"n15":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":35,"start":4,"end_line":36,"end":0},"n16":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":36,"start":4,"end_line":37,"end":0},"n17":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":42,"start":4,"end_line":43,"end":0},"n18":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":48,"start":4,"end_line":49,"end":0},"n19":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":51,"start":4,"end_line":52,"end":0},"n20":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":60,"start":8,"end_line":61,"end":0},"n21":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":63,"start":12,"end_line":64,"end":0},"n22":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":66,"start":16,"end_line":67,"end":0},"n23":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":70,"start":12,"end_line":71,"end":0},"n24":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":73,"start":12,"end_line":74,"end":0},"n25":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":77,"start":8,"end_line":78,"end":0},"n26":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":81,"start":4,"end_line":82,"end":0},"n27":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":86,"start":4,"end_line":87,"end":0},"n28":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":87,"start":4,"end_line":88,"end":0},"n29":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":88,"start":4,"end_line":89,"end":0},"n30":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":89,"start":4,"end_line":90,"end":0},"n31":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":90,"start":4,"end_line":91,"end":0},"n32":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":91,"start":4,"end_line":92,"end":0},"n33":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":97,"start":4,"end_line":98,"end":0},"n34":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":98,"start":4,"end_line":99,"end":0},"n35":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":101,"start":4,"end_line":102,"end":0},"n36":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":102,"start":4,"end_line":103,"end":0},"n37":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":103,"start":4,"end_line":104,"end":0},"n38":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":113,"start":4,"end_line":114,"end":0},"n39":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":115,"start":8,"end_line":116,"end":0},"n40":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":118,"start":8,"end_line":119,"end":0},"n41":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":121,"start":4,"end_line":122,"end":0},"n42":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":123,"start":4,"end_line":124,"end":0},"n43":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":125,"start":8,"end_line":126,"end":0},"n44":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":128,"start":4,"end_line":129,"end":0},"n45":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":130,"start":4,"end_line":131,"end":0},"n46":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":135,"start":4,"end_line":136,"end":0},"n47":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":137,"start":4,"end_line":138,"end":0},"n48":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":143,"start":4,"end_line":144,"end":0},"n49":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":144,"start":4,"end_line":145,"end":0},"n50":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":145,"start":4,"end_line":146,"end":0},"n51":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":146,"start":4,"end_line":147,"end":0},"n52":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":147,"start":4,"end_line":148,"end":0},"n53":{"file_path":"tests/validation_files/headers/edge_cases.baml","start_line":148,"start":4,"end_line":149,"end":0}}
123123
click n0 call bamlMermaidNodeClick() "Go to source"
124124
click n1 call bamlMermaidNodeClick() "Go to source"
125125
click n2 call bamlMermaidNodeClick() "Go to source"
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
error: Error validating: This line is invalid. It does not start with any known Baml schema keyword.
2-
--> tests/validation_files/headers/invalid.baml:11
3-
|
4-
10 |
5-
11 | fn MixedOnSameLine() -> string {
6-
12 | let x = "hello" ## Inline Header // Should fail
7-
|
1+
error: Error validating: This line is invalid. It does not start with any known Baml schema keyword.
2+
--> tests/validation_files/headers/invalid.baml:11
3+
 | 
4+
10 | 
5+
11 | fn MixedOnSameLine() -> string {
6+
12 |  let x = "hello" ## Inline Header // Should fail
7+
 | 

engine/baml-lib/diagnostics/src/span.rs

Lines changed: 64 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,11 @@ impl Span {
4444
let mut start = None;
4545
let mut end = None;
4646

47-
for (idx, c) in contents.chars().enumerate() {
48-
if idx == self.start {
47+
for (byte_pos, c) in contents.char_indices() {
48+
if byte_pos == self.start {
4949
start = Some((line, column));
5050
}
51-
if idx == self.end {
51+
if byte_pos == self.end {
5252
end = Some((line, column));
5353
break;
5454
}
@@ -114,3 +114,64 @@ impl SerializedSpan {
114114
}
115115
}
116116
}
117+
118+
#[cfg(test)]
119+
mod tests {
120+
use super::*;
121+
122+
#[test]
123+
fn test_line_number_basic() {
124+
let source = SourceFile::new_static("test.baml".into(), "line0\nline1\nline2");
125+
126+
// First line
127+
let span = Span::new(source.clone(), 0, 5);
128+
assert_eq!(span.line_and_column(), ((0, 0), (0, 5)));
129+
130+
// Second line
131+
let span = Span::new(source.clone(), 6, 11);
132+
assert_eq!(span.line_and_column(), ((1, 0), (1, 5)));
133+
134+
// Spanning lines
135+
let span = Span::new(source.clone(), 3, 8);
136+
assert_eq!(span.line_and_column(), ((0, 3), (1, 2)));
137+
}
138+
139+
#[test]
140+
fn test_line_number_with_emoji() {
141+
let source = SourceFile::new_static("test.baml".into(), "hi🎉\nworld");
142+
143+
// After emoji, before newline (byte 6 is the newline)
144+
let span = Span::new(source.clone(), 0, 6);
145+
assert_eq!(span.line_and_column(), ((0, 0), (0, 3)));
146+
147+
// Second line after emoji (newline at byte 6, "world" starts at byte 7)
148+
let span = Span::new(source.clone(), 7, 12);
149+
assert_eq!(span.line_and_column(), ((1, 0), (1, 5)));
150+
}
151+
152+
#[test]
153+
fn test_line_number_multiple_emojis() {
154+
let source = SourceFile::new_static("test.baml".into(), "👋🎉🚀\ntest");
155+
156+
// Each emoji is 4 bytes, so first line is bytes 0-12
157+
let span = Span::new(source.clone(), 0, 12);
158+
assert_eq!(span.line_and_column(), ((0, 0), (0, 3)));
159+
160+
// Second line starts at byte 13
161+
let span = Span::new(source.clone(), 13, 17);
162+
assert_eq!(span.line_and_column(), ((1, 0), (1, 4)));
163+
}
164+
165+
#[test]
166+
fn test_line_number_middle_of_file() {
167+
let source = SourceFile::new_static("test.baml".into(), "a\nb\nc\nd\ne\nf");
168+
169+
// Line 5 (0-indexed) - "f"
170+
let span = Span::new(source.clone(), 10, 11);
171+
assert_eq!(span.line_and_column(), ((5, 0), (5, 1)));
172+
173+
// Line 2 - "c"
174+
let span = Span::new(source.clone(), 4, 5);
175+
assert_eq!(span.line_and_column(), ((2, 0), (2, 1)));
176+
}
177+
}

engine/baml-lsp-types/src/baml_lsp_types.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,19 +41,23 @@ pub struct BamlParam {
4141
}
4242

4343
#[derive(Clone, Debug, Serialize, Deserialize)]
44-
pub struct BamlTestCase {
44+
pub struct BamlFunctionTestCasePair {
4545
pub name: String,
4646
pub inputs: Vec<BamlParam>,
4747
pub error: Option<String>,
48+
/// The span of `test TestFoo`
4849
pub span: BamlSpan,
49-
pub parent_functions: Vec<BamlParentFunction>,
50+
/// The span of `FnBar` in `functions [FnFoo, FnBar, FnBaz]`
51+
/// This is wired through to allow re-sorting these as the caller desires.
52+
pub function_name_span: Option<BamlSpan>,
53+
pub function: BamlParentFunction,
5054
}
5155

5256
#[derive(Clone, Debug, Serialize, Deserialize)]
5357
pub struct BamlFunction {
5458
pub name: String,
5559
pub span: BamlSpan,
56-
pub test_cases: Vec<BamlTestCase>,
60+
pub test_cases: Vec<BamlFunctionTestCasePair>,
5761
pub test_snippet: String,
5862
pub signature: String,
5963
}

engine/baml-runtime/src/internal/llm_client/primitive/aws/aws_client.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -729,7 +729,7 @@ impl WithRenderRawCurl for AwsClient {
729729
// pretty, multi-line JSON
730730
let input_json_str = serde_json::to_string_pretty(&serde_json::Value::Object(root))?;
731731
let input_json_escaped = escape(Cow::Borrowed(&input_json_str));
732-
cmd.push(format!("--cli-input-json {}", input_json_escaped));
732+
cmd.push(format!("--cli-input-json {input_json_escaped}"));
733733

734734
Ok(cmd.join(" "))
735735
}

engine/baml-runtime/src/runtime/ir_features.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,6 @@ impl WithInternal for InternalBamlRuntime {
1818
}
1919

2020
fn walk_tests(&self) -> impl Iterator<Item = TestCaseWalker<'_>> {
21-
self.ir().walk_tests()
21+
self.ir().walk_function_test_pairs()
2222
}
2323
}

engine/baml-runtime/src/test_executor/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ impl TestExecutor for BamlRuntime {
143143
let func_test_pairs = {
144144
let ir = &self.inner.ir;
145145
// Regular LLM function tests
146-
let from_fn_tests = ir.walk_tests().filter_map(|node_pair| {
146+
let from_fn_tests = ir.walk_function_test_pairs().filter_map(|node_pair| {
147147
let (function_name, test_name) = node_pair.name();
148148
if args.includes(function_name, test_name) {
149149
Some((function_name.to_string(), test_name.to_string()))
@@ -206,7 +206,7 @@ impl TestExecutor for BamlRuntime {
206206
let selected_tests = {
207207
let ir = &self.inner.ir;
208208
// Regular LLM function tests
209-
let from_fn_tests = ir.walk_tests().filter_map(|node_pair| {
209+
let from_fn_tests = ir.walk_function_test_pairs().filter_map(|node_pair| {
210210
let (function_name, test_name) = node_pair.name();
211211
if args.includes(function_name, test_name) {
212212
node_pair.span().map(|s| {

0 commit comments

Comments
 (0)