summaryrefslogtreecommitdiff
path: root/tests/integration/compile_tests.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/integration/compile_tests.rs')
-rw-r--r--tests/integration/compile_tests.rs63
1 files changed, 63 insertions, 0 deletions
diff --git a/tests/integration/compile_tests.rs b/tests/integration/compile_tests.rs
index 17054637e..cd6e429b3 100644
--- a/tests/integration/compile_tests.rs
+++ b/tests/integration/compile_tests.rs
@@ -1283,3 +1283,66 @@ fn standalone_jsr_dynamic_import() {
output.assert_exit_code(0);
output.assert_matches_text("Hello world\n");
}
+
+#[test]
+fn standalone_require_node_addons() {
+ #[cfg(not(target_os = "windows"))]
+ {
+ let context = TestContextBuilder::for_jsr().build();
+ let dir = context.temp_dir();
+ let libout = dir.path().join("module.node");
+
+ let cc = context
+ .new_command()
+ .name("cc")
+ .current_dir(util::testdata_path());
+
+ #[cfg(not(target_os = "macos"))]
+ let c_module = cc
+ .arg("./compile/napi/module.c")
+ .arg("-shared")
+ .arg("-o")
+ .arg(&libout);
+
+ #[cfg(target_os = "macos")]
+ let c_module = {
+ cc.arg("./compile/napi/module.c")
+ .arg("-undefined")
+ .arg("dynamic_lookup")
+ .arg("-shared")
+ .arg("-Wl,-no_fixup_chains")
+ .arg("-dynamic")
+ .arg("-o")
+ .arg(&libout)
+ };
+ let c_module_output = c_module.output().unwrap();
+
+ assert!(c_module_output.status.success());
+
+ let exe = if cfg!(windows) {
+ dir.path().join("main.exe")
+ } else {
+ dir.path().join("main")
+ };
+
+ context
+ .new_command()
+ .env("NPM_CONFIG_REGISTRY", "https://registry.npmjs.org/")
+ .args_vec([
+ "compile",
+ "--allow-read",
+ "--allow-ffi",
+ "--output",
+ &exe.to_string_lossy(),
+ "./compile/napi/main.ts",
+ ])
+ .run()
+ .skip_output_check()
+ .assert_exit_code(0);
+
+ let output = context.new_command().name(&exe).arg(&libout).run();
+
+ output.assert_exit_code(0);
+ output.assert_matches_text("{}\n");
+ }
+}