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

difftreelog

source

crates/jrsonnet-evaluator/tests/golden.rs1.3 KiBsourcehistory
1use std::{2	fs, io,3	path::{Path, PathBuf},4};56use jrsonnet_evaluator::{7	trace::{CompactFormat, PathResolver},8	FileImportResolver, State,9};1011mod common;1213fn run(root: &Path, file: &Path) -> String {14	let s = State::default();15	s.set_trace_format(Box::new(CompactFormat {16		resolver: PathResolver::Relative(root.to_owned()),17		padding: 3,18	}));19	s.with_stdlib();20	common::with_test(&s);21	s.set_import_resolver(Box::new(FileImportResolver::default()));2223	let v = match s.evaluate_file_raw(file) {24		Ok(v) => v,25		Err(e) => return s.stringify_err(&e),26	};27	match v.to_json(s.clone(), 3) {28		Ok(v) => v.to_string(),29		Err(e) => s.stringify_err(&e),30	}31}3233#[test]34fn test() -> io::Result<()> {35	let mut root = PathBuf::from(env!("CARGO_MANIFEST_DIR"));36	root.push("tests/golden");3738	for entry in fs::read_dir(&root)? {39		let entry = entry?;40		if !entry.path().extension().map_or(false, |e| e == "jsonnet") {41			continue;42		}4344		let result = run(&root, &entry.path());4546		let mut golden_path = entry.path();47		golden_path.set_extension("jsonnet.golden");4849		if !golden_path.exists() {50			fs::write(golden_path, &result)?;51		} else {52			let golden = fs::read_to_string(golden_path)?;5354			assert_eq!(55				result,56				golden,57				"golden didn't match for {}",58				entry.path().display()59			)60		}61	}6263	Ok(())64}