From b4d978cd6aeeac25897dc86b437fd2e96827626f Mon Sep 17 00:00:00 2001 From: Griffin Smith Date: Sat, 8 Oct 2022 13:48:08 -0400 Subject: feat(tvix/tests): Import default.nix inside directory This requires actually passing the source directory into `interpret` in the eval tests, but otherwise this is fairly straightforward - if we're trying to import a directory, just push `default.nix` onto it and import that instead. Change-Id: I0b7d4234f81977e78d14dfa651bf0cf9721017e5 Reviewed-on: https://cl.tvl.fyi/c/depot/+/6893 Autosubmit: grfn Reviewed-by: sterni Tested-by: BuildkiteCI --- tvix/eval/src/builtins/impure.rs | 5 ++++- tvix/eval/src/tests/mod.rs | 2 +- tvix/eval/src/tests/tvix_tests/directory/default.nix | 1 + tvix/eval/src/tests/tvix_tests/eval-okay-import.exp | 1 + tvix/eval/src/tests/tvix_tests/eval-okay-import.nix | 4 ++++ 5 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 tvix/eval/src/tests/tvix_tests/directory/default.nix create mode 100644 tvix/eval/src/tests/tvix_tests/eval-okay-import.exp create mode 100644 tvix/eval/src/tests/tvix_tests/eval-okay-import.nix (limited to 'tvix') diff --git a/tvix/eval/src/builtins/impure.rs b/tvix/eval/src/builtins/impure.rs index a1bcc602dc89..8e23003edb47 100644 --- a/tvix/eval/src/builtins/impure.rs +++ b/tvix/eval/src/builtins/impure.rs @@ -52,7 +52,10 @@ pub fn builtins_import( "import", &[true], move |mut args: Vec, vm: &mut VM| { - let path = super::coerce_value_to_path(&args.pop().unwrap(), vm)?; + let mut path = super::coerce_value_to_path(&args.pop().unwrap(), vm)?; + if path.is_dir() { + path.push("default.nix"); + } let contents = std::fs::read_to_string(&path).map_err(|err| ErrorKind::ReadFileError { diff --git a/tvix/eval/src/tests/mod.rs b/tvix/eval/src/tests/mod.rs index 49ca35973e56..8540a5641bcf 100644 --- a/tvix/eval/src/tests/mod.rs +++ b/tvix/eval/src/tests/mod.rs @@ -12,7 +12,7 @@ fn eval_okay_test(code_path: &str) { 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, None, Default::default()) + let result = interpret(&code, Some(code_path.into()), Default::default()) .expect("evaluation of eval-okay test should succeed"); let result_str = format!("{}", result); diff --git a/tvix/eval/src/tests/tvix_tests/directory/default.nix b/tvix/eval/src/tests/tvix_tests/directory/default.nix new file mode 100644 index 000000000000..d81cc0710eb6 --- /dev/null +++ b/tvix/eval/src/tests/tvix_tests/directory/default.nix @@ -0,0 +1 @@ +42 diff --git a/tvix/eval/src/tests/tvix_tests/eval-okay-import.exp b/tvix/eval/src/tests/tvix_tests/eval-okay-import.exp new file mode 100644 index 000000000000..5ba7f64d78a7 --- /dev/null +++ b/tvix/eval/src/tests/tvix_tests/eval-okay-import.exp @@ -0,0 +1 @@ +[ 42 42 ] diff --git a/tvix/eval/src/tests/tvix_tests/eval-okay-import.nix b/tvix/eval/src/tests/tvix_tests/eval-okay-import.nix new file mode 100644 index 000000000000..49cd244f06c1 --- /dev/null +++ b/tvix/eval/src/tests/tvix_tests/eval-okay-import.nix @@ -0,0 +1,4 @@ +[ + (import ./directory) + (import ./directory/default.nix) +] -- cgit 1.4.1