difftreelog
test re-enable structural matching
in: master
4 files changed
Cargo.lockdiffbeforeafterboth282 "typenum",282 "typenum",283]283]284285[[package]]286name = "difflib"287version = "0.4.0"288source = "registry+https://github.com/rust-lang/crates.io-index"289checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8"290284291[[package]]285[[package]]292name = "digest"286name = "digest"809 "wasm-bindgen",803 "wasm-bindgen",810]804]811812[[package]]813name = "json-structural-diff"814version = "0.2.0"815source = "registry+https://github.com/rust-lang/crates.io-index"816checksum = "e878e36a8a44c158505c2c818abdc1350413ad83dcb774a0459f6a7ef2b65cbf"817dependencies = [818 "difflib",819 "regex",820 "serde_json",821]822805823[[package]]806[[package]]824name = "keccak"807name = "keccak"1448 "jrsonnet-evaluator",1431 "jrsonnet-evaluator",1449 "jrsonnet-gcmodule",1432 "jrsonnet-gcmodule",1450 "jrsonnet-stdlib",1433 "jrsonnet-stdlib",1451 "json-structural-diff",1452 "serde",1434 "serde",1453 "serde_json",1435 "serde_json",1454]1436]Cargo.tomldiffbeforeafterboth85regex = "1.12"85regex = "1.12"86lru = "0.16.3"86lru = "0.16.3"878788json-structural-diff = "0.2.0"89syn-dissect-closure = "0.1.0"88syn-dissect-closure = "0.1.0"908991[workspace.lints.rust]90[workspace.lints.rust]tests/Cargo.tomldiffbeforeafterboth19jrsonnet-gcmodule.workspace = true19jrsonnet-gcmodule.workspace = true20jrsonnet-stdlib.workspace = true20jrsonnet-stdlib.workspace = true21serde.workspace = true21serde.workspace = true22json-structural-diff.workspace = true23serde_json.workspace = true22serde_json.workspace = true242325[dev-dependencies]24[dev-dependencies]tests/tests/cpp_test_suite.rsdiffbeforeafterboth144 "pow6.jsonnet",144 "pow6.jsonnet",145 // golang escapes "e" yaml key, does it think it is float?145 // golang escapes "e" yaml key, does it think it is float?146 "builtin_manifestYamlDoc.jsonnet",146 "builtin_manifestYamlDoc.jsonnet",147 // Wtf?..148 // Result149 // [150 // {},151 // {},152 // []153 // ]154 // and golden155 // [156 // {},157 // {},158 // []159 // ]160 // did not match structurally:161 // [162 // ...163 // - {164 // - }165 // + {166 // + }167 // [168 // ]169 // ]170 "empty_object_comp.jsonnet",171 "object_hidden.jsonnet",172 // multi output is a CLI part, not an interpreter.147 // multi output is a CLI part, not an interpreter.173 "multi.jsonnet",148 "multi.jsonnet",174 "multi_no_newline.jsonnet",149 "multi_no_newline.jsonnet",183 "number_leading_zero.jsonnet",158 "number_leading_zero.jsonnet",184 // Jrsonnet has this overload159 // Jrsonnet has this overload185 "number_times_string.jsonnet",160 "number_times_string.jsonnet",186 // Jrsonnet has stricter implementations, this is a dumb thing that the filter value might not be187 // evaluated anyway...188 "std.filter7.jsonnet",189 // Golang fails with max stack frames exceeded error161 // Golang fails with max stack frames exceeded error190 "std.makeArray_recursive_evalutation_order_matters.jsonnet",162 "std.makeArray_recursive_evalutation_order_matters.jsonnet",191 // Jrsonnet has this overload163 // Jrsonnet has this overload196168197#[test]169#[test]198fn cpp_test_suite() -> io::Result<()> {170fn cpp_test_suite() -> io::Result<()> {199 use json_structural_diff::JsonDiff;200201 for root_dir in ["cpp_test_suite", "go_testdata"] {171 for root_dir in ["cpp_test_suite", "go_testdata"] {202 let root_tests = PathBuf::from(env!("CARGO_MANIFEST_DIR"));172 let root_tests = PathBuf::from(env!("CARGO_MANIFEST_DIR"));261 #[cfg(not(feature = "ir-parser"))]231 #[cfg(not(feature = "ir-parser"))]262 let update_golden_path = &golden_override;232 let update_golden_path = &golden_override;263233264 match (serde_json::from_str(&result), serde_json::from_str(&golden)) {234 match (serde_json::from_str::<serde_json::Value>(&result), serde_json::from_str::<serde_json::Value>(&golden)) {265 (Err(_), Ok(_)) => panic!(235 (Err(_), Ok(_)) => panic!(266 "unexpected error for golden {}:\n<got>\n{result}\n</got>\n<golden>\n{golden}\n</golden>",236 "unexpected error for golden {}:\n<got>\n{result}\n</got>\n<golden>\n{golden}\n</golden>",267 entry.path().display()237 entry.path().display()270 "expected error for golden {}:\n<got>\n{result}\n</got>\n<golden>\n{golden}\n</golden>",240 "expected error for golden {}:\n<got>\n{result}\n</got>\n<golden>\n{golden}\n</golden>",271 entry.path().display()241 entry.path().display()272 ),242 ),273 (Ok(result_v), Ok(golden)) => {243 (Ok(result_v), Ok(golden_v)) => {274 // Show diff relative to golden`.275 let diff = JsonDiff::diff_string(&golden, &result_v, false);276 if let Some(diff) = diff {244 if result_v != golden_v {277 if env::var_os("UPDATE_GOLDEN").is_some() {245 if env::var_os("UPDATE_GOLDEN").is_some() {278 fs::write(update_golden_path, result)?;246 fs::write(update_golden_path, result)?;279 } else {247 } else {280 panic!(248 panic!(281 "Result \n{result_v:#}\n\249 "Result \n{result_v:#}\n\282 and golden \n{golden:#}\n\250 and golden \n{golden_v:#}\n\283 did not match structurally:\n{diff:#}\n\251 did not match structurally\n\284 for golden {}",252 for golden {}",285 entry.path().display()253 entry.path().display()286 );254 );287 }255 }