git.delta.rocks / jrsonnet / refs/commits / c420c56a5e63

difftreelog

test golden destruct

syszwlmvYaroslav Bolyukin2026-04-05parent: #864d125.patch.diff
in: master

11 files changed

addedtests/golden_destruct/mutual_recursive_cross.jsonnetdiffbeforeafterboth
--- /dev/null
+++ b/tests/golden_destruct/mutual_recursive_cross.jsonnet
@@ -0,0 +1,4 @@
+local
+  {a, b, c} = {a: y, b: c, c: x},
+  {x, y, z} = {x: a, y: 2, z: b};
+z == 2
addedtests/golden_destruct/mutual_recursive_fields.jsonnetdiffbeforeafterboth
--- /dev/null
+++ b/tests/golden_destruct/mutual_recursive_fields.jsonnet
@@ -0,0 +1 @@
+local {a, b, c} = {a: b+1, b:c+1,c:3}; a
addedtests/golden_destruct/mutual_recursive_locals.jsonnetdiffbeforeafterboth
--- /dev/null
+++ b/tests/golden_destruct/mutual_recursive_locals.jsonnet
@@ -0,0 +1 @@
+local {a= b+1, b = c+1, c = 3} = {}; a
addedtests/golden_destruct/omit.jsonnetdiffbeforeafterboth
--- /dev/null
+++ b/tests/golden_destruct/omit.jsonnet
@@ -0,0 +1,2 @@
+// ...rest works like removeField, but freezes the object core so it still can access the fields
+local {a, b, ...c} = {a: 1, b: 2, c: self.a, d: self.b}; c
addedtests/golden_destruct/params.jsonnetdiffbeforeafterboth
--- /dev/null
+++ b/tests/golden_destruct/params.jsonnet
@@ -0,0 +1,3 @@
+local myFun({a, b, c}) = a + b + c;
+
+myFun({a: 1, b: 2, c: 3})
modifiedtests/tests/golden.rsdiffbeforeafterboth
before · tests/tests/golden.rs
1use std::path::Path;23use insta::{assert_snapshot, glob};4use jrsonnet_evaluator::{5	FileImportResolver, State,6	manifest::JsonFormat,7	trace::{CompactFormat, PathResolver, TraceFormat},8};9use jrsonnet_stdlib::ContextInitializer;10mod common;11use common::ContextInitializer as TestContextInitializer;1213fn run(file: &Path) -> String {14	let mut s = State::builder();15	s.context_initializer((16		ContextInitializer::new(PathResolver::new_cwd_fallback()),17		TestContextInitializer,18	))19	.import_resolver(FileImportResolver::default());20	let s = s.build();2122	let _entered = s.enter();2324	let trace_format = CompactFormat {25		resolver: PathResolver::FileName,26		max_trace: 20,27		padding: 4,28	};2930	let v = match s.import(file) {31		Ok(v) => v,32		Err(e) => return trace_format.format(&e).unwrap(),33	};34	match v.manifest(JsonFormat::default()) {35		Ok(v) => v,36		Err(e) => trace_format.format(&e).unwrap(),37	}38}3940#[test]41fn golden() {42	glob!("../", "golden/*.jsonnet", |path| {43		let result = run(path);4445		assert_snapshot!(result);46	});47}4849#[test]50#[cfg(feature = "exp-null-coaelse")]51fn golden_null_coalesce() {52	glob!("../", "golden_null_coalesce/*.jsonnet", |path| {53		let result = run(path);5455		assert_snapshot!(result);56	});57}
after · tests/tests/golden.rs
1use std::path::Path;23use insta::{assert_snapshot, glob};4use jrsonnet_evaluator::{5	FileImportResolver, State,6	manifest::JsonFormat,7	trace::{CompactFormat, PathResolver, TraceFormat},8};9use jrsonnet_stdlib::ContextInitializer;10mod common;11use common::ContextInitializer as TestContextInitializer;1213fn run(file: &Path) -> String {14	let mut s = State::builder();15	s.context_initializer((16		ContextInitializer::new(PathResolver::new_cwd_fallback()),17		TestContextInitializer,18	))19	.import_resolver(FileImportResolver::default());20	let s = s.build();2122	let _entered = s.enter();2324	let trace_format = CompactFormat {25		resolver: PathResolver::FileName,26		max_trace: 20,27		padding: 4,28	};2930	let v = match s.import(file) {31		Ok(v) => v,32		Err(e) => return trace_format.format(&e).unwrap(),33	};34	match v.manifest(JsonFormat::default()) {35		Ok(v) => v,36		Err(e) => trace_format.format(&e).unwrap(),37	}38}3940#[test]41fn golden() {42	glob!("../", "golden/*.jsonnet", |path| {43		let result = run(path);4445		assert_snapshot!(result);46	});47}4849#[test]50#[cfg(feature = "exp-null-coaelse")]51fn golden_null_coalesce() {52	glob!("../", "golden_null_coalesce/*.jsonnet", |path| {53		let result = run(path);5455		assert_snapshot!(result);56	});57}5859#[test]60#[cfg(feature = "exp-destruct")]61fn golden_destruct() {62	glob!("../", "golden_destruct/*.jsonnet", |path| {63		let result = run(path);6465		assert_snapshot!(result);66	});67}
addedtests/tests/snapshots/golden__golden_destruct@mutual_recursive_cross.jsonnet.snapdiffbeforeafterboth
--- /dev/null
+++ b/tests/tests/snapshots/golden__golden_destruct@mutual_recursive_cross.jsonnet.snap
@@ -0,0 +1,6 @@
+---
+source: tests/tests/golden.rs
+expression: result
+input_file: tests/golden_destruct/mutual_recursive_cross.jsonnet
+---
+true
addedtests/tests/snapshots/golden__golden_destruct@mutual_recursive_fields.jsonnet.snapdiffbeforeafterboth
--- /dev/null
+++ b/tests/tests/snapshots/golden__golden_destruct@mutual_recursive_fields.jsonnet.snap
@@ -0,0 +1,6 @@
+---
+source: tests/tests/golden.rs
+expression: result
+input_file: tests/golden_destruct/mutual_recursive_fields.jsonnet
+---
+5
addedtests/tests/snapshots/golden__golden_destruct@mutual_recursive_locals.jsonnet.snapdiffbeforeafterboth
--- /dev/null
+++ b/tests/tests/snapshots/golden__golden_destruct@mutual_recursive_locals.jsonnet.snap
@@ -0,0 +1,6 @@
+---
+source: tests/tests/golden.rs
+expression: result
+input_file: tests/golden_destruct/mutual_recursive_locals.jsonnet
+---
+5
addedtests/tests/snapshots/golden__golden_destruct@omit.jsonnet.snapdiffbeforeafterboth
--- /dev/null
+++ b/tests/tests/snapshots/golden__golden_destruct@omit.jsonnet.snap
@@ -0,0 +1,9 @@
+---
+source: tests/tests/golden.rs
+expression: result
+input_file: tests/golden_destruct/omit.jsonnet
+---
+{
+    "c": 1,
+    "d": 2
+}
addedtests/tests/snapshots/golden__golden_destruct@params.jsonnet.snapdiffbeforeafterboth
--- /dev/null
+++ b/tests/tests/snapshots/golden__golden_destruct@params.jsonnet.snap
@@ -0,0 +1,6 @@
+---
+source: tests/tests/golden.rs
+expression: result
+input_file: tests/golden_destruct/params.jsonnet
+---
+6