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

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.import(file.to_owned()) {24		Ok(v) => v,25		Err(e) => return s.stringify_err(&e),26	};27	match v.to_json(28		s.clone(),29		3,30		#[cfg(feature = "exp-preserve-order")]31		false,32	) {33		Ok(v) => v.to_string(),34		Err(e) => s.stringify_err(&e),35	}36}3738#[test]39fn test() -> io::Result<()> {40	let mut root = PathBuf::from(env!("CARGO_MANIFEST_DIR"));41	root.push("tests/golden");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		let result = run(&root, &entry.path());5051		let mut golden_path = entry.path();52		golden_path.set_extension("jsonnet.golden");5354		if !golden_path.exists() {55			fs::write(golden_path, &result)?;56		} else {57			let golden = fs::read_to_string(golden_path)?;5859			assert_eq!(60				result,61				golden,62				"golden didn't match for {}",63				entry.path().display()64			)65		}66	}6768	Ok(())69}