From 9f461766495e029e319c71c961f97528a60e477d Mon Sep 17 00:00:00 2001 From: Karl Gutwin Date: Fri, 7 Aug 2026 10:28:59 -0400 Subject: [PATCH 1/2] test: filter std.prql spans from unrelated snapshots --- prqlc/prqlc/src/semantic/resolver/mod.rs | 20 +++++++++++-------- ..._resolver__test__functions_pipeline-2.snap | 2 +- ...c__resolver__test__functions_pipeline.snap | 2 +- ...ms__tests__aggregate_positional_arg-2.snap | 6 +++--- .../prqlc/src/semantic/resolver/transforms.rs | 7 ++++++- prqlc/prqlc/tests/integration/queries.rs | 5 ++++- ...ueries__debug_lineage__set_ops_remove.snap | 18 ++++++++--------- 7 files changed, 36 insertions(+), 24 deletions(-) diff --git a/prqlc/prqlc/src/semantic/resolver/mod.rs b/prqlc/prqlc/src/semantic/resolver/mod.rs index ee7ad5599c95..1121d8a31c36 100644 --- a/prqlc/prqlc/src/semantic/resolver/mod.rs +++ b/prqlc/prqlc/src/semantic/resolver/mod.rs @@ -154,24 +154,28 @@ pub(super) mod test { #[test] fn test_functions_pipeline() { - assert_yaml_snapshot!(resolve_derive( - r#" + let mut settings = insta::Settings::clone_current(); + settings.add_filter(r"\b0:\d+-\d+", "[std]"); + settings.bind(|| { + assert_yaml_snapshot!(resolve_derive( + r#" from a derive one = (foo | sum) "# - ) - .unwrap()); + ) + .unwrap()); - assert_yaml_snapshot!(resolve_derive( - r#" + assert_yaml_snapshot!(resolve_derive( + r#" let plus_one = x -> x + 1 let plus = x y -> x + y from a derive {b = (sum foo | plus_one | plus 2)} "# - ) - .unwrap()); + ) + .unwrap()); + }); } #[test] fn test_named_args() { diff --git a/prqlc/prqlc/src/semantic/resolver/snapshots/prqlc__semantic__resolver__test__functions_pipeline-2.snap b/prqlc/prqlc/src/semantic/resolver/snapshots/prqlc__semantic__resolver__test__functions_pipeline-2.snap index 9ef8e038b41f..798792c009cb 100644 --- a/prqlc/prqlc/src/semantic/resolver/snapshots/prqlc__semantic__resolver__test__functions_pipeline-2.snap +++ b/prqlc/prqlc/src/semantic/resolver/snapshots/prqlc__semantic__resolver__test__functions_pipeline-2.snap @@ -27,7 +27,7 @@ expression: "resolve_derive(r#\"\n let plus_one = x -> x + 1\n ty: kind: Array: ~ - span: "0:1699-1701" + span: "[std]" name: array span: "1:120-127" - Literal: diff --git a/prqlc/prqlc/src/semantic/resolver/snapshots/prqlc__semantic__resolver__test__functions_pipeline.snap b/prqlc/prqlc/src/semantic/resolver/snapshots/prqlc__semantic__resolver__test__functions_pipeline.snap index f966bb922f13..b78566004b52 100644 --- a/prqlc/prqlc/src/semantic/resolver/snapshots/prqlc__semantic__resolver__test__functions_pipeline.snap +++ b/prqlc/prqlc/src/semantic/resolver/snapshots/prqlc__semantic__resolver__test__functions_pipeline.snap @@ -13,7 +13,7 @@ expression: "resolve_derive(r#\"\n from a\n derive one = ( ty: kind: Array: ~ - span: "0:1699-1701" + span: "[std]" name: array span: "1:52-55" alias: one diff --git a/prqlc/prqlc/src/semantic/resolver/snapshots/prqlc__semantic__resolver__transforms__tests__aggregate_positional_arg-2.snap b/prqlc/prqlc/src/semantic/resolver/snapshots/prqlc__semantic__resolver__transforms__tests__aggregate_positional_arg-2.snap index c1bbac2b8bd2..c919b7dee525 100644 --- a/prqlc/prqlc/src/semantic/resolver/snapshots/prqlc__semantic__resolver__transforms__tests__aggregate_positional_arg-2.snap +++ b/prqlc/prqlc/src/semantic/resolver/snapshots/prqlc__semantic__resolver__transforms__tests__aggregate_positional_arg-2.snap @@ -14,9 +14,9 @@ TransformCall: kind: Tuple: - Wildcard: ~ - span: "0:1740-1744" + span: "[std]" name: ~ - span: "0:1739-1745" + span: "[std]" name: relation lineage: columns: @@ -44,7 +44,7 @@ TransformCall: ty: kind: Array: ~ - span: "0:1699-1701" + span: "[std]" name: array span: "1:73-87" span: "1:73-87" diff --git a/prqlc/prqlc/src/semantic/resolver/transforms.rs b/prqlc/prqlc/src/semantic/resolver/transforms.rs index 7b8246e37b3f..10b6519c9b3f 100644 --- a/prqlc/prqlc/src/semantic/resolver/transforms.rs +++ b/prqlc/prqlc/src/semantic/resolver/transforms.rs @@ -1471,7 +1471,12 @@ mod tests { let (res, _) = ctx.find_main_rel(&[]).unwrap().clone(); let expr = res.clone().into_relation_var().unwrap(); let expr = super::super::test::erase_ids(*expr); - assert_yaml_snapshot!(expr); + + let mut settings = insta::Settings::clone_current(); + settings.add_filter(r"\b0:\d+-\d+", "[std]"); + settings.bind(|| { + assert_yaml_snapshot!(expr); + }); } #[test] diff --git a/prqlc/prqlc/tests/integration/queries.rs b/prqlc/prqlc/tests/integration/queries.rs index ab4aef819756..48409a12552f 100644 --- a/prqlc/prqlc/tests/integration/queries.rs +++ b/prqlc/prqlc/tests/integration/queries.rs @@ -148,7 +148,10 @@ mod debug_lineage { let lineage = serde_yaml::to_string(&fc).unwrap(); - with_settings!({ input_file => prql_path }, { + with_settings!({ + input_file => prql_path, + filters => vec![(r"\b0:\d+-\d+", "[std]")], + }, { assert_snapshot!(test_name, &lineage, &prql) }); } diff --git a/prqlc/prqlc/tests/integration/snapshots/integration__queries__debug_lineage__set_ops_remove.snap b/prqlc/prqlc/tests/integration/snapshots/integration__queries__debug_lineage__set_ops_remove.snap index 2e7a39e3e2e7..5f8dabf89a31 100644 --- a/prqlc/prqlc/tests/integration/snapshots/integration__queries__debug_lineage__set_ops_remove.snap +++ b/prqlc/prqlc/tests/integration/snapshots/integration__queries__debug_lineage__set_ops_remove.snap @@ -18,7 +18,7 @@ frames: table: - default_db - _literal_16 -- - 0:3522-3608 +- - [std] - columns: - !Single name: @@ -43,7 +43,7 @@ frames: table: - default_db - _literal_11 -- - 0:3611-3665 +- - [std] - columns: - !Single name: @@ -157,14 +157,14 @@ nodes: - 11 - id: 55 kind: RqOperator - span: 0:3551-3607 + span: [std] targets: - 48 - 50 parent: 57 - id: 57 kind: 'TransformCall: Join' - span: 0:3522-3608 + span: [std] children: - 42 - 11 @@ -172,7 +172,7 @@ nodes: parent: 64 - id: 60 kind: Ident - span: 0:6512-6520 + span: [std] ident: !Ident - this - b @@ -181,7 +181,7 @@ nodes: - 11 - id: 64 kind: 'TransformCall: Filter' - span: 0:3611-3665 + span: [std] children: - 57 - 4000000147 @@ -197,7 +197,7 @@ nodes: parent: 66 - id: 66 kind: Tuple - span: 0:3675-3678 + span: [std] children: - 65 parent: 67 @@ -226,14 +226,14 @@ nodes: - 68 - id: 4000000147 kind: RqOperator - span: 0:3619-3664 + span: [std] targets: - 60 - 4000000149 parent: 64 - id: 4000000149 kind: Literal - span: 0:6524-6528 + span: [std] ast: name: Project stmts: From e7fc7b1c4a539f8b876ade03d76ed36e26b68f8d Mon Sep 17 00:00:00 2001 From: Karl Gutwin Date: Fri, 7 Aug 2026 11:14:56 -0400 Subject: [PATCH 2/2] Apply suggestions from code review Co-authored-by: prql-bot <107324867+prql-bot@users.noreply.github.com> --- prqlc/prqlc/src/semantic/resolver/mod.rs | 7 ++++--- prqlc/prqlc/src/semantic/resolver/transforms.rs | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/prqlc/prqlc/src/semantic/resolver/mod.rs b/prqlc/prqlc/src/semantic/resolver/mod.rs index 1121d8a31c36..54724eb14fb2 100644 --- a/prqlc/prqlc/src/semantic/resolver/mod.rs +++ b/prqlc/prqlc/src/semantic/resolver/mod.rs @@ -154,9 +154,10 @@ pub(super) mod test { #[test] fn test_functions_pipeline() { - let mut settings = insta::Settings::clone_current(); - settings.add_filter(r"\b0:\d+-\d+", "[std]"); - settings.bind(|| { + // Spans from `std.prql` carry source id 0 (`STD_LIB_SOURCE_ID`); user + // sources start at 1. Filtering them keeps this snapshot stable when the + // stdlib shifts, without hiding spans from the query under test. + insta::with_settings!({ filters => vec![(r"\b0:\d+-\d+", "[std]")] }, { assert_yaml_snapshot!(resolve_derive( r#" from a diff --git a/prqlc/prqlc/src/semantic/resolver/transforms.rs b/prqlc/prqlc/src/semantic/resolver/transforms.rs index 10b6519c9b3f..c0521aa58224 100644 --- a/prqlc/prqlc/src/semantic/resolver/transforms.rs +++ b/prqlc/prqlc/src/semantic/resolver/transforms.rs @@ -1472,9 +1472,10 @@ mod tests { let expr = res.clone().into_relation_var().unwrap(); let expr = super::super::test::erase_ids(*expr); - let mut settings = insta::Settings::clone_current(); - settings.add_filter(r"\b0:\d+-\d+", "[std]"); - settings.bind(|| { + // Spans from `std.prql` carry source id 0 (`STD_LIB_SOURCE_ID`); user + // sources start at 1. Filtering them keeps this snapshot stable when the + // stdlib shifts, without hiding spans from the query under test. + insta::with_settings!({ filters => vec![(r"\b0:\d+-\d+", "[std]")] }, { assert_yaml_snapshot!(expr); }); }