1use jrsonnet_evaluator::{2 FileImportResolver, Result, State, Val, bail,3 trace::{CompactFormat, PathResolver, TraceFormat},4};5use jrsonnet_stdlib::ContextInitializer;67mod common;89#[test]10fn assert_positive() -> Result<()> {11 let mut s = State::builder();12 s.context_initializer(ContextInitializer::new(PathResolver::new_cwd_fallback()))13 .import_resolver(FileImportResolver::default());14 let s = s.build();1516 let v = s.evaluate_snippet("snip".to_owned(), "assert 1 == 1: 'fail'; null")?;17 ensure_val_eq!(v, Val::Null);18 let v = s.evaluate_snippet("snip".to_owned(), "std.assertEqual(1, 1)")?;19 ensure_val_eq!(v, Val::Bool(true));2021 Ok(())22}2324#[test]25fn assert_negative() -> Result<()> {26 let mut s = State::builder();27 s.context_initializer(ContextInitializer::new(PathResolver::new_cwd_fallback()))28 .import_resolver(FileImportResolver::default());29 let s = s.build();3031 let trace_format = CompactFormat::default();3233 {34 let Err(e) = s.evaluate_snippet("snip".to_owned(), "assert 1 == 2: 'fail'; null") else {35 bail!("assertion should fail");36 };37 let e = trace_format.format(&e).unwrap();38 ensure!(e.starts_with("assert failed: fail\n"));39 }40 {41 let Err(e) = s.evaluate_snippet("snip".to_owned(), "std.assertEqual(1, 2)") else {42 bail!("assertion should fail")43 };44 let e = trace_format.format(&e).unwrap();45 ensure!(e.starts_with("runtime error: assertion failed: A != B\nA: 1\nB: 2\n"));46 }4748 Ok(())49}