Skip to content

Commit

Permalink
More robust import tests
Browse files Browse the repository at this point in the history
Everything I've done in previous PRs fixed issues with these tests. They test importing both using paths and strings, importing from the same folder, from a parent folder, from a child folder.
  • Loading branch information
arduano@localhost authored and arduano committed May 30, 2024
1 parent 6f8c917 commit 29d4660
Show file tree
Hide file tree
Showing 7 changed files with 76 additions and 3 deletions.
9 changes: 8 additions & 1 deletion nixjs-rt/src/builtins.ts
Original file line number Diff line number Diff line change
Expand Up @@ -550,7 +550,14 @@ export function getBuiltins() {
throw new Error("unimplemented");
},

toString: (arg) => {
toString: (arg: NixType) => {
if (arg instanceof NixString) {
return arg;
} else if (arg instanceof Path) {
return new NixString(arg.path);
}

// TODO: Expand on this
throw new Error("unimplemented");
},

Expand Down
52 changes: 50 additions & 2 deletions src/tests/builtins.rs
Original file line number Diff line number Diff line change
Expand Up @@ -488,11 +488,59 @@ mod import {
#[test]
fn eval() {
assert_eq!(
eval_ok("(builtins.import ./flake.nix).description"),
Value::Str("A reimplementation or nix in Rust.".into())
eval_ok("(builtins.import ./src/tests/import_tests/basic.nix).data"),
Value::Str("imported!".into())
);
}

#[test]
fn eval_same_folder_import() {
assert_eq!(
eval_ok("(builtins.import ./src/tests/import_tests/same-folder-import.nix).dataPath"),
Value::Str("imported!".into())
);
assert_eq!(
eval_ok("(builtins.import ./src/tests/import_tests/same-folder-import.nix).dataString"),
Value::Str("imported!".into())
);
}

#[test]
fn eval_child_folder_import() {
assert_eq!(
eval_ok("(builtins.import ./src/tests/import_tests/child-folder-import.nix).dataPath"),
Value::Str("imported!".into())
);
assert_eq!(
eval_ok(
"(builtins.import ./src/tests/import_tests/child-folder-import.nix).dataString"
),
Value::Str("imported!".into())
);
}

#[test]
fn eval_parent_folder_import() {
assert_eq!(
eval_ok("(builtins.import ./src/tests/import_tests/nested/parent-folder-import.nix).dataPath"),
Value::Str("imported!".into())
);
assert_eq!(
eval_ok("(builtins.import ./src/tests/import_tests/nested/parent-folder-import.nix).dataString"),
Value::Str("imported!".into())
);
}

#[test]
fn eval_relative_string() {
assert_eq!(
eval_err(r#"builtins.import "./foo.nix""#),
NixErrorKind::Other {
codename: "builtins-import-non-absolute-path".to_owned()
}
)
}

#[test]
fn eval_lazy() {
assert_eq!(
Expand Down
3 changes: 3 additions & 0 deletions src/tests/import_tests/basic.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
data = "imported!";
}
4 changes: 4 additions & 0 deletions src/tests/import_tests/child-folder-import.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
dataPath = (builtins.import ./nested/basic.nix).data;
dataString = (builtins.import (builtins.toString ./nested/basic.nix)).data;
}
3 changes: 3 additions & 0 deletions src/tests/import_tests/nested/basic.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
data = "imported!";
}
4 changes: 4 additions & 0 deletions src/tests/import_tests/nested/parent-folder-import.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
dataPath = (builtins.import ../basic.nix).data;
dataString = (builtins.import (builtins.toString ../basic.nix)).data;
}
4 changes: 4 additions & 0 deletions src/tests/import_tests/same-folder-import.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
dataPath = (builtins.import ./basic.nix).data;
dataString = (builtins.import (builtins.toString ./basic.nix)).data;
}

0 comments on commit 29d4660

Please sign in to comment.