git.delta.rocks / jrsonnet / refs/commits / 3421cac4341a

difftreelog

test use insta for jrsonnet own golden testsuite

mlulykymYaroslav Bolyukin2026-02-12parent: #144cb74.patch.diff
in: master

39 files changed

modifiedCargo.lockdiffbeforeafterboth
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1413,6 +1413,7 @@
 name = "tests"
 version = "0.1.0"
 dependencies = [
+ "insta",
  "jrsonnet-evaluator",
  "jrsonnet-gcmodule",
  "jrsonnet-stdlib",
modifiedtests/Cargo.tomldiffbeforeafterboth
--- a/tests/Cargo.toml
+++ b/tests/Cargo.toml
@@ -14,3 +14,6 @@
 serde.workspace = true
 json-structural-diff.workspace = true
 serde_json.workspace = true
+
+[dev-dependencies]
+insta.workspace = true
deletedtests/golden/array_comp.jsonnet.goldendiffbeforeafterboth
--- a/tests/golden/array_comp.jsonnet.golden
+++ /dev/null
@@ -1,38 +0,0 @@
-[
-    [
-        1,
-        4
-    ],
-    [
-        1,
-        5
-    ],
-    [
-        1,
-        6
-    ],
-    [
-        2,
-        4
-    ],
-    [
-        2,
-        5
-    ],
-    [
-        2,
-        6
-    ],
-    [
-        3,
-        4
-    ],
-    [
-        3,
-        5
-    ],
-    [
-        3,
-        6
-    ]
-]
\ No newline at end of file
deletedtests/golden/builtin_json.jsonnet.goldendiffbeforeafterboth

no changes

deletedtests/golden/builtin_json_minified.jsonnet.goldendiffbeforeafterboth
--- a/tests/golden/builtin_json_minified.jsonnet.golden
+++ /dev/null
@@ -1 +0,0 @@
-"{\"a\":3,\"b\":4,\"c\":6}"
\ No newline at end of file
deletedtests/golden/builtin_parseJson.jsonnet.goldendiffbeforeafterboth
--- a/tests/golden/builtin_parseJson.jsonnet.golden
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "a": -1,
-    "b": 1,
-    "c": 3.141,
-    "d": [ ]
-}
\ No newline at end of file
deletedtests/golden/builtin_strings.jsonnet.goldendiffbeforeafterboth
--- a/tests/golden/builtin_strings.jsonnet.golden
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-    "split": [
-        "ab",
-        "cd",
-        "ef"
-    ],
-    "splitlimit": [
-        "ab",
-        "cd::ef"
-    ],
-    "splitlimitR": [
-        "ab::cd",
-        "ef"
-    ],
-    "splitlimitRNoLimit": [
-        "ab",
-        "cd",
-        "ef"
-    ]
-}
\ No newline at end of file
deletedtests/golden/builtin_strings_string.jsonnet.goldendiffbeforeafterboth
--- a/tests/golden/builtin_strings_string.jsonnet.golden
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-    "lstripChars_array": "rward",
-    "lstripChars_multipleChars": "mn",
-    "lstripChars_singleChar": "bcdef",
-    "rstripChars_array": "cool just c",
-    "rstripChars_multipleChars": "amogu",
-    "rstripChars_singleChar": "nice_bo",
-    "stripChars_array": " Lel Sto",
-    "stripChars_arrayL": "hel medvedo svin",
-    "stripChars_arrayR": "lach-vs-m",
-    "stripChars_multipleChars": " sus ",
-    "stripChars_multipleCharsL": "defg",
-    "stripChars_multipleCharsR": "still brea",
-    "stripChars_singleChar": "oper je",
-    "stripChars_singleCharL": "eefoofaa",
-    "stripChars_singleCharR": "lolkek"
-}
\ No newline at end of file
deletedtests/golden/issue126.jsonnet.goldendiffbeforeafterboth
--- a/tests/golden/issue126.jsonnet.golden
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "int_lhs": 4294967296,
-    "unary_plus": 1
-}
\ No newline at end of file
deletedtests/golden/issue153.jsonnet.goldendiffbeforeafterboth
--- a/tests/golden/issue153.jsonnet.golden
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "foo": {
-        "bar": "nope"
-    }
-}
\ No newline at end of file
deletedtests/golden/issue172.jsonnet.goldendiffbeforeafterboth
--- a/tests/golden/issue172.jsonnet.golden
+++ /dev/null
@@ -1,4 +0,0 @@
-local is not defined: b
-    issue172.jsonnet:1:45-47: local <b> access
-    issue172.jsonnet:1:4-10:  field <value> access
-    elem <0> evaluation
\ No newline at end of file
deletedtests/golden/issue187.jsonnet.goldendiffbeforeafterboth
--- a/tests/golden/issue187.jsonnet.golden
+++ /dev/null
@@ -1 +0,0 @@
-"foo bar � baz"
\ No newline at end of file
deletedtests/golden/issue187.rev.jsonnet.goldendiffbeforeafterboth
--- a/tests/golden/issue187.rev.jsonnet.golden
+++ /dev/null
@@ -1,2 +0,0 @@
-runtime error: bad utf8
-    issue187.rev.jsonnet:1:1-92: function <builtin_decode_utf8> call
\ No newline at end of file
deletedtests/golden/issue188.jsonnet.goldendiffbeforeafterboth
--- a/tests/golden/issue188.jsonnet.golden
+++ /dev/null
@@ -1 +0,0 @@
-{ }
\ No newline at end of file
deletedtests/golden/issue195.jsonnet.goldendiffbeforeafterboth
--- a/tests/golden/issue195.jsonnet.golden
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "x": 42,
-    "y": {
-        "false": false
-    }
-}
\ No newline at end of file
deletedtests/golden/issue23.jsonnet.goldendiffbeforeafterboth
--- a/tests/golden/issue23.jsonnet.golden
+++ /dev/null
@@ -1,2 +0,0 @@
-infinite recursion detected
-    issue23.jsonnet:1:1-26: import "issue23.jsonnet"
\ No newline at end of file
deletedtests/golden/issue40.jsonnet.goldendiffbeforeafterboth
--- a/tests/golden/issue40.jsonnet.golden
+++ /dev/null
@@ -1,3 +0,0 @@
-assert failed: is number
-    issue40.jsonnet:6:10-31: assertion failure
-    issue40.jsonnet:9:1-32:  function <builtin_manifest_json_ex> call
\ No newline at end of file
deletedtests/golden/missing_binding.jsonnet.goldendiffbeforeafterboth
--- a/tests/golden/missing_binding.jsonnet.golden
+++ /dev/null
@@ -1,3 +0,0 @@
-local is not defined: sta
-There is a local with similar name present: std
-    missing_binding.jsonnet:1:1-5: local <sta> access
\ No newline at end of file
deletedtests/golden/object_comp.jsonnet.goldendiffbeforeafterboth
--- a/tests/golden/object_comp.jsonnet.golden
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-    "h1_2": "0a",
-    "h1_3": "0a",
-    "h1_4": "0a",
-    "h2_3": "a1",
-    "h2_4": "a1",
-    "h3_2": "0a",
-    "h3_4": "a1"
-}
\ No newline at end of file
deletedtests/golden/test_assertThrow.jsonnet.goldendiffbeforeafterboth
--- a/tests/golden/test_assertThrow.jsonnet.golden
+++ /dev/null
@@ -1,2 +0,0 @@
-runtime error: expected argument to throw on evaluation, but it returned instead
-    test_assertThrow.jsonnet:2:1-26: function <assert_throw> call
\ No newline at end of file
modifiedtests/tests/golden.rsdiffbeforeafterboth
--- a/tests/tests/golden.rs
+++ b/tests/tests/golden.rs
@@ -1,8 +1,6 @@
-use std::{
-	fs, io,
-	path::{Path, PathBuf},
-};
+use std::path::Path;
 
+use insta::{assert_snapshot, glob};
 use jrsonnet_evaluator::{
 	FileImportResolver, State,
 	manifest::JsonFormat,
@@ -40,66 +38,10 @@
 }
 
 #[test]
-fn test() -> io::Result<()> {
-	use json_structural_diff::JsonDiff;
-
-	let mut root = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
-	root.push("golden");
+fn golden() {
+	glob!("../", "golden/*.jsonnet", |path| {
+		let result = run(&path);
 
-	for entry in fs::read_dir(&root)? {
-		let entry = entry?;
-		if !entry.path().extension().map_or(false, |e| e == "jsonnet") {
-			continue;
-		}
-
-		let result = run(&entry.path());
-
-		let mut golden_path = entry.path();
-		golden_path.set_extension("jsonnet.golden");
-
-		if !golden_path.exists() {
-			fs::write(golden_path, &result)?;
-			continue;
-		}
-
-		let golden = fs::read_to_string(golden_path)?;
-
-		match (serde_json::from_str(&result), serde_json::from_str(&golden)) {
-			(Err(_), Ok(_)) => assert_eq!(
-				result,
-				golden,
-				"unexpected error for golden {}",
-				entry.path().display()
-			),
-			(Ok(_), Err(_)) => assert_eq!(
-				result,
-				golden,
-				"expected error for golden {}",
-				entry.path().display()
-			),
-			(Ok(result), Ok(golden)) => {
-				// Show diff relative to golden`.
-				let diff = JsonDiff::diff_string(&golden, &result, false);
-				if let Some(diff) = diff {
-					panic!(
-						"Result \n{result:#}\n\
-							and golden \n{golden:#}\n\
-							did not match structurally:\n{diff:#}\n\
-							for golden {}",
-						entry.path().display()
-					);
-				}
-			}
-			(Err(_), Err(_)) => {}
-		};
-
-		assert_eq!(
-			result,
-			golden,
-			"golden didn't match for {}",
-			entry.path().display()
-		);
-	}
-
-	Ok(())
+		assert_snapshot!(result)
+	});
 }
addedtests/tests/snapshots/golden__golden@array_comp.jsonnet.snapdiffbeforeafterboth
--- /dev/null
+++ b/tests/tests/snapshots/golden__golden@array_comp.jsonnet.snap
@@ -0,0 +1,43 @@
+---
+source: tests/tests/golden.rs
+expression: result
+input_file: tests/golden/array_comp.jsonnet
+---
+[
+    [
+        1,
+        4
+    ],
+    [
+        1,
+        5
+    ],
+    [
+        1,
+        6
+    ],
+    [
+        2,
+        4
+    ],
+    [
+        2,
+        5
+    ],
+    [
+        2,
+        6
+    ],
+    [
+        3,
+        4
+    ],
+    [
+        3,
+        5
+    ],
+    [
+        3,
+        6
+    ]
+]
addedtests/tests/snapshots/golden__golden@builtin_json.jsonnet.snapdiffbeforeafterboth
--- /dev/null
+++ b/tests/tests/snapshots/golden__golden@builtin_json.jsonnet.snap
@@ -0,0 +1,6 @@
+---
+source: tests/tests/golden.rs
+expression: result
+input_file: tests/golden/builtin_json.jsonnet
+---
+"{\n\"a\": 3,\n\"b\": 4,\n\"c\": 6\n}"
addedtests/tests/snapshots/golden__golden@builtin_json_minified.jsonnet.snapdiffbeforeafterboth
--- /dev/null
+++ b/tests/tests/snapshots/golden__golden@builtin_json_minified.jsonnet.snap
@@ -0,0 +1,6 @@
+---
+source: tests/tests/golden.rs
+expression: result
+input_file: tests/golden/builtin_json_minified.jsonnet
+---
+"{\"a\":3,\"b\":4,\"c\":6}"
addedtests/tests/snapshots/golden__golden@builtin_parseJson.jsonnet.snapdiffbeforeafterboth
--- /dev/null
+++ b/tests/tests/snapshots/golden__golden@builtin_parseJson.jsonnet.snap
@@ -0,0 +1,11 @@
+---
+source: tests/tests/golden.rs
+expression: result
+input_file: tests/golden/builtin_parseJson.jsonnet
+---
+{
+    "a": -1,
+    "b": 1,
+    "c": 3.141,
+    "d": [ ]
+}
addedtests/tests/snapshots/golden__golden@builtin_strings.jsonnet.snapdiffbeforeafterboth
--- /dev/null
+++ b/tests/tests/snapshots/golden__golden@builtin_strings.jsonnet.snap
@@ -0,0 +1,25 @@
+---
+source: tests/tests/golden.rs
+expression: result
+input_file: tests/golden/builtin_strings.jsonnet
+---
+{
+    "split": [
+        "ab",
+        "cd",
+        "ef"
+    ],
+    "splitlimit": [
+        "ab",
+        "cd::ef"
+    ],
+    "splitlimitR": [
+        "ab::cd",
+        "ef"
+    ],
+    "splitlimitRNoLimit": [
+        "ab",
+        "cd",
+        "ef"
+    ]
+}
addedtests/tests/snapshots/golden__golden@builtin_strings_string.jsonnet.snapdiffbeforeafterboth
--- /dev/null
+++ b/tests/tests/snapshots/golden__golden@builtin_strings_string.jsonnet.snap
@@ -0,0 +1,22 @@
+---
+source: tests/tests/golden.rs
+expression: result
+input_file: tests/golden/builtin_strings_string.jsonnet
+---
+{
+    "lstripChars_array": "rward",
+    "lstripChars_multipleChars": "mn",
+    "lstripChars_singleChar": "bcdef",
+    "rstripChars_array": "cool just c",
+    "rstripChars_multipleChars": "amogu",
+    "rstripChars_singleChar": "nice_bo",
+    "stripChars_array": " Lel Sto",
+    "stripChars_arrayL": "hel medvedo svin",
+    "stripChars_arrayR": "lach-vs-m",
+    "stripChars_multipleChars": " sus ",
+    "stripChars_multipleCharsL": "defg",
+    "stripChars_multipleCharsR": "still brea",
+    "stripChars_singleChar": "oper je",
+    "stripChars_singleCharL": "eefoofaa",
+    "stripChars_singleCharR": "lolkek"
+}
addedtests/tests/snapshots/golden__golden@issue126.jsonnet.snapdiffbeforeafterboth
--- /dev/null
+++ b/tests/tests/snapshots/golden__golden@issue126.jsonnet.snap
@@ -0,0 +1,9 @@
+---
+source: tests/tests/golden.rs
+expression: result
+input_file: tests/golden/issue126.jsonnet
+---
+{
+    "int_lhs": 4294967296,
+    "unary_plus": 1
+}
addedtests/tests/snapshots/golden__golden@issue153.jsonnet.snapdiffbeforeafterboth
--- /dev/null
+++ b/tests/tests/snapshots/golden__golden@issue153.jsonnet.snap
@@ -0,0 +1,10 @@
+---
+source: tests/tests/golden.rs
+expression: result
+input_file: tests/golden/issue153.jsonnet
+---
+{
+    "foo": {
+        "bar": "nope"
+    }
+}
addedtests/tests/snapshots/golden__golden@issue172.jsonnet.snapdiffbeforeafterboth
--- /dev/null
+++ b/tests/tests/snapshots/golden__golden@issue172.jsonnet.snap
@@ -0,0 +1,9 @@
+---
+source: tests/tests/golden.rs
+expression: result
+input_file: tests/golden/issue172.jsonnet
+---
+local is not defined: b
+    issue172.jsonnet:1:45-47: local <b> access
+    issue172.jsonnet:1:4-10:  field <value> access
+    elem <0> evaluation
addedtests/tests/snapshots/golden__golden@issue187.jsonnet.snapdiffbeforeafterboth
--- /dev/null
+++ b/tests/tests/snapshots/golden__golden@issue187.jsonnet.snap
@@ -0,0 +1,6 @@
+---
+source: tests/tests/golden.rs
+expression: result
+input_file: tests/golden/issue187.jsonnet
+---
+"foo bar � baz"
addedtests/tests/snapshots/golden__golden@issue187.rev.jsonnet.snapdiffbeforeafterboth
--- /dev/null
+++ b/tests/tests/snapshots/golden__golden@issue187.rev.jsonnet.snap
@@ -0,0 +1,7 @@
+---
+source: tests/tests/golden.rs
+expression: result
+input_file: tests/golden/issue187.rev.jsonnet
+---
+runtime error: bad utf8
+    issue187.rev.jsonnet:1:1-92: function <builtin_decode_utf8> call
addedtests/tests/snapshots/golden__golden@issue188.jsonnet.snapdiffbeforeafterboth
--- /dev/null
+++ b/tests/tests/snapshots/golden__golden@issue188.jsonnet.snap
@@ -0,0 +1,6 @@
+---
+source: tests/tests/golden.rs
+expression: result
+input_file: tests/golden/issue188.jsonnet
+---
+{ }
addedtests/tests/snapshots/golden__golden@issue195.jsonnet.snapdiffbeforeafterboth
--- /dev/null
+++ b/tests/tests/snapshots/golden__golden@issue195.jsonnet.snap
@@ -0,0 +1,11 @@
+---
+source: tests/tests/golden.rs
+expression: result
+input_file: tests/golden/issue195.jsonnet
+---
+{
+    "x": 42,
+    "y": {
+        "false": false
+    }
+}
addedtests/tests/snapshots/golden__golden@issue23.jsonnet.snapdiffbeforeafterboth
--- /dev/null
+++ b/tests/tests/snapshots/golden__golden@issue23.jsonnet.snap
@@ -0,0 +1,7 @@
+---
+source: tests/tests/golden.rs
+expression: result
+input_file: tests/golden/issue23.jsonnet
+---
+infinite recursion detected
+    issue23.jsonnet:1:1-26: import "issue23.jsonnet"
addedtests/tests/snapshots/golden__golden@issue40.jsonnet.snapdiffbeforeafterboth
--- /dev/null
+++ b/tests/tests/snapshots/golden__golden@issue40.jsonnet.snap
@@ -0,0 +1,8 @@
+---
+source: tests/tests/golden.rs
+expression: result
+input_file: tests/golden/issue40.jsonnet
+---
+assert failed: is number
+    issue40.jsonnet:6:10-31: assertion failure
+    issue40.jsonnet:9:1-32:  function <builtin_manifest_json_ex> call
addedtests/tests/snapshots/golden__golden@missing_binding.jsonnet.snapdiffbeforeafterboth
--- /dev/null
+++ b/tests/tests/snapshots/golden__golden@missing_binding.jsonnet.snap
@@ -0,0 +1,8 @@
+---
+source: tests/tests/golden.rs
+expression: result
+input_file: tests/golden/missing_binding.jsonnet
+---
+local is not defined: sta
+There is a local with similar name present: std
+    missing_binding.jsonnet:1:1-5: local <sta> access
addedtests/tests/snapshots/golden__golden@object_comp.jsonnet.snapdiffbeforeafterboth
--- /dev/null
+++ b/tests/tests/snapshots/golden__golden@object_comp.jsonnet.snap
@@ -0,0 +1,14 @@
+---
+source: tests/tests/golden.rs
+expression: result
+input_file: tests/golden/object_comp.jsonnet
+---
+{
+    "h1_2": "0a",
+    "h1_3": "0a",
+    "h1_4": "0a",
+    "h2_3": "a1",
+    "h2_4": "a1",
+    "h3_2": "0a",
+    "h3_4": "a1"
+}
addedtests/tests/snapshots/golden__golden@test_assertThrow.jsonnet.snapdiffbeforeafterboth
--- /dev/null
+++ b/tests/tests/snapshots/golden__golden@test_assertThrow.jsonnet.snap
@@ -0,0 +1,7 @@
+---
+source: tests/tests/golden.rs
+expression: result
+input_file: tests/golden/test_assertThrow.jsonnet
+---
+runtime error: expected argument to throw on evaluation, but it returned instead
+    test_assertThrow.jsonnet:2:1-26: function <assert_throw> call