1use std::{2 fs, io,3 path::{Path, PathBuf},4};56use jrsonnet_evaluator::{7 FileImportResolver, State, Val,8 trace::{CompactFormat, PathResolver, TraceFormat},9};10use jrsonnet_stdlib::ContextInitializer;1112mod common;13use common::ContextInitializer as TestContextInitializer;1415fn run(file: &Path) {16 let mut s = State::builder();17 s.context_initializer((18 ContextInitializer::new(PathResolver::new_cwd_fallback()),19 TestContextInitializer,20 ))21 .import_resolver(FileImportResolver::default());22 let s = s.build();2324 let trace_format = CompactFormat::default();2526 match s.import(file) {27 Ok(Val::Bool(true)) => {}28 Ok(Val::Bool(false)) => panic!("test {} returned false", file.display()),29 Ok(_) => panic!("test {} returned wrong type as result", file.display()),30 Err(e) => panic!(31 "test {} failed:\n{}",32 file.display(),33 trace_format.format(&e).unwrap()34 ),35 };36}3738#[test]39fn suite() -> io::Result<()> {40 let mut root = PathBuf::from(env!("CARGO_MANIFEST_DIR"));41 root.push("suite");4243 for entry in fs::read_dir(&root)? {44 let entry = entry?;45 if !entry.path().extension().map_or(false, |e| e == "jsonnet") {46 continue;47 }4849 run(&entry.path());50 }5152 Ok(())53}