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

@ -565,7 +565,7 @@ mod tests {
#[proptest(ProptestConfig { cases: 5, ..Default::default() })]
fn reflexive(x: Value) {
let mut observer = NoOpObserver {};
let mut vm = VM::new(Default::default(), &mut observer);
let mut vm = VM::new(Default::default(), Box::new(crate::DummyIO), &mut observer);
assert!(x.nix_eq(&x, &mut vm).unwrap())
}
@ -573,7 +573,7 @@ mod tests {
#[proptest(ProptestConfig { cases: 5, ..Default::default() })]
fn symmetric(x: Value, y: Value) {
let mut observer = NoOpObserver {};
let mut vm = VM::new(Default::default(), &mut observer);
let mut vm = VM::new(Default::default(), Box::new(crate::DummyIO), &mut observer);
assert_eq!(
x.nix_eq(&y, &mut vm).unwrap(),
@ -584,7 +584,7 @@ mod tests {
#[proptest(ProptestConfig { cases: 5, ..Default::default() })]
fn transitive(x: Value, y: Value, z: Value) {
let mut observer = NoOpObserver {};
let mut vm = VM::new(Default::default(), &mut observer);
let mut vm = VM::new(Default::default(), Box::new(crate::DummyIO), &mut observer);
if x.nix_eq(&y, &mut vm).unwrap() && y.nix_eq(&z, &mut vm).unwrap() {
assert!(x.nix_eq(&z, &mut vm).unwrap())
@ -594,7 +594,7 @@ mod tests {
#[test]
fn list_int_float_fungibility() {
let mut observer = NoOpObserver {};
let mut vm = VM::new(Default::default(), &mut observer);
let mut vm = VM::new(Default::default(), Box::new(crate::DummyIO), &mut observer);
let v1 = Value::List(NixList::from(vec![Value::Integer(1)]));
let v2 = Value::List(NixList::from(vec![Value::Float(1.0)]));