git.delta.rocks / jrsonnet / refs/commits / 36e84a6e688e

difftreelog

source

tests/tests/suite.rs1.2 KiBsourcehistory
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}