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

difftreelog

source

tests/tests/suite.rs1.1 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().is_some_and(|e| e == "jsonnet") {46			run(&entry.path());47		}48	}4950	Ok(())51}