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
--- a/tests/golden/builtin_json.jsonnet.golden
+++ /dev/null
@@ -1 +0,0 @@
-"{\n\"a\": 3,\n\"b\": 4,\n\"c\": 6\n}"
\ No newline at end of file
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
1use std::{1use std::path::Path;
2 fs, io,2
3 path::{Path, PathBuf},3use insta::{assert_snapshot, glob};
4};
5
6use jrsonnet_evaluator::{4use jrsonnet_evaluator::{
7 FileImportResolver, State,5 FileImportResolver, State,
40}38}
4139
42#[test]40#[test]
43fn test() -> io::Result<()> {41fn golden() {
44 use json_structural_diff::JsonDiff;
45
46 let mut root = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
47 root.push("golden");
48
49 for entry in fs::read_dir(&root)? {
50 let entry = entry?;
51 if !entry.path().extension().map_or(false, |e| e == "jsonnet") {
52 continue;
53 }
54
55 let result = run(&entry.path());
56
57 let mut golden_path = entry.path();
58 golden_path.set_extension("jsonnet.golden");
59
60 if !golden_path.exists() {
61 fs::write(golden_path, &result)?;
62 continue;
63 }
64
65 let golden = fs::read_to_string(golden_path)?;
66
67 match (serde_json::from_str(&result), serde_json::from_str(&golden)) {
68 (Err(_), Ok(_)) => assert_eq!(
69 result,
70 golden,
71 "unexpected error for golden {}",
72 entry.path().display()
73 ),
74 (Ok(_), Err(_)) => assert_eq!(42 glob!("../", "golden/*.jsonnet", |path| {
75 result,
76 golden,
77 "expected error for golden {}",
78 entry.path().display()
79 ),
80 (Ok(result), Ok(golden)) => {
81 // Show diff relative to golden`.
82 let diff = JsonDiff::diff_string(&golden, &result, false);43 let result = run(&path);
83 if let Some(diff) = diff {44
84 panic!(45 assert_snapshot!(result)
85 "Result \n{result:#}\n\
86 and golden \n{golden:#}\n\
87 did not match structurally:\n{diff:#}\n\
88 for golden {}",
89 entry.path().display()
90 );
91 }
92 }46 });
93 (Err(_), Err(_)) => {}
94 };47}
95
96 assert_eq!(
97 result,
98 golden,
99 "golden didn't match for {}",
100 entry.path().display()
101 );
102 }
103
104 Ok(())
105}
10648
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