git.delta.rocks / jrsonnet / refs/commits / ccafbf79faf6

difftreelog

source

tests/tests/golden.rs1.4 KiBsourcehistory
1use std::{2	fs, io,3	path::{Path, PathBuf},4};56use jrsonnet_evaluator::{7	manifest::JsonFormat,8	trace::{CompactFormat, PathResolver, TraceFormat},9	FileImportResolver, State,10};11use jrsonnet_stdlib::StateExt;1213mod common;1415fn run(file: &Path) -> String {16	let s = State::default();17	s.with_stdlib();18	common::with_test(&s);19	s.set_import_resolver(Box::new(FileImportResolver::default()));20	let trace_format = CompactFormat {21		resolver: PathResolver::FileName,22		max_trace: 20,23		padding: 4,24	};2526	let v = match s.import(file) {27		Ok(v) => v,28		Err(e) => return trace_format.format(&e).unwrap(),29	};30	match v.manifest(31		JsonFormat::default(),32		#[cfg(feature = "exp-preserve-order")]33		false,34	) {35		Ok(v) => v.to_string(),36		Err(e) => trace_format.format(&e).unwrap(),37	}38}3940#[test]41fn test() -> io::Result<()> {42	let mut root = PathBuf::from(env!("CARGO_MANIFEST_DIR"));43	root.push("golden");4445	for entry in fs::read_dir(&root)? {46		let entry = entry?;47		if !entry.path().extension().map_or(false, |e| e == "jsonnet") {48			continue;49		}5051		let result = run(&entry.path());5253		let mut golden_path = entry.path();54		golden_path.set_extension("jsonnet.golden");5556		if !golden_path.exists() {57			fs::write(golden_path, &result)?;58		} else {59			let golden = fs::read_to_string(golden_path)?;6061			assert_eq!(62				result,63				golden,64				"golden didn't match for {}",65				entry.path().display()66			)67		}68	}6970	Ok(())71}