feat(tvix/eval): add EvalIO to public crate API

This lets users set the `io_handle` field on an `Evaluation`, which is
then propagated to the VM.

Change-Id: I616d7140724fb2b4db47c2ebf95451d5303a487a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7566
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
This commit is contained in:
Vincent Ambo 2022-12-12 17:38:28 +03:00 committed by tazjin
parent 25fc6b7c25
commit c3c4d752c9
6 changed files with 42 additions and 14 deletions

View file

@ -17,7 +17,10 @@ fn eval_test(code_path: &str, expect_success: bool) {
return;
}
let result = crate::Evaluation::new(&code, Some(code_path.into())).evaluate();
let mut eval = crate::Evaluation::new(&code, Some(code_path.into()));
eval.io_handle = Box::new(crate::StdIO);
let result = eval.evaluate();
if expect_success && !result.errors.is_empty() {
panic!(
@ -64,7 +67,10 @@ fn eval_test(code_path: &str, expect_success: bool) {
fn identity(code_path: &str) {
let code = std::fs::read_to_string(code_path).expect("should be able to read test code");
let result = crate::Evaluation::new(&code, None).evaluate();
let mut eval = crate::Evaluation::new(&code, None);
eval.io_handle = Box::new(crate::StdIO);
let result = eval.evaluate();
assert!(
result.errors.is_empty(),
"evaluation of identity test failed: {:?}",