Skip to content

Commit

Permalink
Merge 29d4660 into sapling-pr-archive-arduano
Browse files Browse the repository at this point in the history
  • Loading branch information
arduano authored May 30, 2024
2 parents c79fdd4 + 29d4660 commit 2919e0a
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 2919e0a

Please sign in to comment.