diff options
author | Griffin Smith <root@gws.fyi> | 2022-10-08T17·48-0400 |
---|---|---|
committer | grfn <grfn@gws.fyi> | 2022-10-08T19·02+0000 |
commit | b4d978cd6aeeac25897dc86b437fd2e96827626f (patch) | |
tree | e3017c05ee36156b92e4589065dd5f1466c2bd7e | |
parent | 278bccc1ea3542610012177171234ad1c3c44dcf (diff) |
feat(tvix/tests): Import default.nix inside directory r/5068
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 <grfn@gws.fyi> Reviewed-by: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI
-rw-r--r-- | tvix/eval/src/builtins/impure.rs | 5 | ||||
-rw-r--r-- | tvix/eval/src/tests/mod.rs | 2 | ||||
-rw-r--r-- | tvix/eval/src/tests/tvix_tests/directory/default.nix | 1 | ||||
-rw-r--r-- | tvix/eval/src/tests/tvix_tests/eval-okay-import.exp | 1 | ||||
-rw-r--r-- | tvix/eval/src/tests/tvix_tests/eval-okay-import.nix | 4 |
5 files changed, 11 insertions, 2 deletions
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<Value>, 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) +] |