feat(tvix/tests): check in Nix' language test suite
This adds scaffolding code for running the Nix language test suite. The majority of eval-okay-* tests should eventually be runnable as-is by Tvix, however the eval-fail-* tests might not as we intend to have more useful error messages than upstream Nix. Change-Id: I4f3227f0889c55e4274b804a3072850fb78dd1bd Reviewed-on: https://cl.tvl.fyi/c/depot/+/6126 Tested-by: BuildkiteCI Autosubmit: tazjin <tazjin@tvl.su> Reviewed-by: grfn <grfn@gws.fyi>
This commit is contained in:
parent
b28da8ad56
commit
92c53fe982
248 changed files with 2217 additions and 9 deletions
28
tvix/eval/src/tests/mod.rs
Normal file
28
tvix/eval/src/tests/mod.rs
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
use crate::eval::interpret;
|
||||
|
||||
use test_generator::test_resources;
|
||||
|
||||
// eval-okay-* tests contain a snippet of Nix code, and an expectation
|
||||
// of the produced string output of the evaluator.
|
||||
//
|
||||
// These evaluations are always supposed to succeed, i.e. all snippets
|
||||
// are guaranteed to be valid Nix code.
|
||||
#[test_resources("src/tests/nix_tests/eval-okay-*.nix")]
|
||||
fn eval_okay(code_path: &str) {
|
||||
let base = code_path
|
||||
.strip_suffix("nix")
|
||||
.expect("test files always end in .nix");
|
||||
let exp_path = format!("{}exp", base);
|
||||
|
||||
let code = std::fs::read_to_string(code_path).expect("should be able to read test code");
|
||||
let exp = std::fs::read_to_string(exp_path).expect("should be able to read test expectation");
|
||||
|
||||
let result = interpret(&code).expect("evaluation of eval-okay test should succeed");
|
||||
let result_str = format!("{}", result);
|
||||
|
||||
assert_eq!(
|
||||
exp.trim(),
|
||||
result_str,
|
||||
"result value (and its representation) must match expectation"
|
||||
);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue