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}