summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
Diffstat (limited to 'cli')
-rw-r--r--cli/tests/integration/run_tests.rs90
-rw-r--r--cli/tests/testdata/unstable_ffi_1.js1
-rw-r--r--cli/tests/testdata/unstable_ffi_1.js.out1
-rw-r--r--cli/tests/testdata/unstable_ffi_10.js1
-rw-r--r--cli/tests/testdata/unstable_ffi_10.js.out1
-rw-r--r--cli/tests/testdata/unstable_ffi_11.js1
-rw-r--r--cli/tests/testdata/unstable_ffi_11.js.out1
-rw-r--r--cli/tests/testdata/unstable_ffi_12.js1
-rw-r--r--cli/tests/testdata/unstable_ffi_12.js.out1
-rw-r--r--cli/tests/testdata/unstable_ffi_13.js1
-rw-r--r--cli/tests/testdata/unstable_ffi_13.js.out1
-rw-r--r--cli/tests/testdata/unstable_ffi_14.js1
-rw-r--r--cli/tests/testdata/unstable_ffi_14.js.out1
-rw-r--r--cli/tests/testdata/unstable_ffi_15.js1
-rw-r--r--cli/tests/testdata/unstable_ffi_15.js.out1
-rw-r--r--cli/tests/testdata/unstable_ffi_2.js10
-rw-r--r--cli/tests/testdata/unstable_ffi_2.js.out1
-rw-r--r--cli/tests/testdata/unstable_ffi_3.js10
-rw-r--r--cli/tests/testdata/unstable_ffi_3.js.out1
-rw-r--r--cli/tests/testdata/unstable_ffi_4.js1
-rw-r--r--cli/tests/testdata/unstable_ffi_4.js.out1
-rw-r--r--cli/tests/testdata/unstable_ffi_5.js1
-rw-r--r--cli/tests/testdata/unstable_ffi_5.js.out1
-rw-r--r--cli/tests/testdata/unstable_ffi_6.js1
-rw-r--r--cli/tests/testdata/unstable_ffi_6.js.out1
-rw-r--r--cli/tests/testdata/unstable_ffi_7.js1
-rw-r--r--cli/tests/testdata/unstable_ffi_7.js.out1
-rw-r--r--cli/tests/testdata/unstable_ffi_8.js1
-rw-r--r--cli/tests/testdata/unstable_ffi_8.js.out1
-rw-r--r--cli/tests/testdata/unstable_ffi_9.js1
-rw-r--r--cli/tests/testdata/unstable_ffi_9.js.out1
-rw-r--r--cli/tests/unit/ffi_test.ts51
32 files changed, 189 insertions, 0 deletions
diff --git a/cli/tests/integration/run_tests.rs b/cli/tests/integration/run_tests.rs
index c789a3389..fb6f72c6e 100644
--- a/cli/tests/integration/run_tests.rs
+++ b/cli/tests/integration/run_tests.rs
@@ -2523,3 +2523,93 @@ itest!(fetch_async_error_stack {
output: "fetch_async_error_stack.ts.out",
exit_code: 1,
});
+
+itest!(unstable_ffi_1 {
+ args: "run unstable_ffi_1.js",
+ output: "unstable_ffi_1.js.out",
+ exit_code: 70,
+});
+
+itest!(unstable_ffi_2 {
+ args: "run unstable_ffi_2.js",
+ output: "unstable_ffi_2.js.out",
+ exit_code: 70,
+});
+
+itest!(unstable_ffi_3 {
+ args: "run unstable_ffi_3.js",
+ output: "unstable_ffi_3.js.out",
+ exit_code: 70,
+});
+
+itest!(unstable_ffi_4 {
+ args: "run unstable_ffi_4.js",
+ output: "unstable_ffi_4.js.out",
+ exit_code: 70,
+});
+
+itest!(unstable_ffi_5 {
+ args: "run unstable_ffi_5.js",
+ output: "unstable_ffi_5.js.out",
+ exit_code: 70,
+});
+
+itest!(unstable_ffi_6 {
+ args: "run unstable_ffi_6.js",
+ output: "unstable_ffi_6.js.out",
+ exit_code: 70,
+});
+
+itest!(unstable_ffi_7 {
+ args: "run unstable_ffi_7.js",
+ output: "unstable_ffi_7.js.out",
+ exit_code: 70,
+});
+
+itest!(unstable_ffi_8 {
+ args: "run unstable_ffi_8.js",
+ output: "unstable_ffi_8.js.out",
+ exit_code: 70,
+});
+
+itest!(unstable_ffi_9 {
+ args: "run unstable_ffi_9.js",
+ output: "unstable_ffi_9.js.out",
+ exit_code: 70,
+});
+
+itest!(unstable_ffi_10 {
+ args: "run unstable_ffi_10.js",
+ output: "unstable_ffi_10.js.out",
+ exit_code: 70,
+});
+
+itest!(unstable_ffi_11 {
+ args: "run unstable_ffi_11.js",
+ output: "unstable_ffi_11.js.out",
+ exit_code: 70,
+});
+
+itest!(unstable_ffi_12 {
+ args: "run unstable_ffi_12.js",
+ output: "unstable_ffi_12.js.out",
+ exit_code: 70,
+});
+
+itest!(unstable_ffi_13 {
+ args: "run unstable_ffi_13.js",
+ output: "unstable_ffi_13.js.out",
+ exit_code: 70,
+});
+
+itest!(unstable_ffi_14 {
+ args: "run unstable_ffi_14.js",
+ output: "unstable_ffi_14.js.out",
+ exit_code: 70,
+});
+
+itest!(unstable_ffi_15 {
+ args: "run unstable_ffi_15.js",
+ output: "unstable_ffi_15.js.out",
+ exit_code: 70,
+});
diff --git a/cli/tests/testdata/unstable_ffi_1.js b/cli/tests/testdata/unstable_ffi_1.js
new file mode 100644
index 000000000..a24a00238
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_1.js
@@ -0,0 +1 @@
+Deno.core.opSync("op_ffi_load", { path: "", symbols: {} });
diff --git a/cli/tests/testdata/unstable_ffi_1.js.out b/cli/tests/testdata/unstable_ffi_1.js.out
new file mode 100644
index 000000000..7c564be8c
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_1.js.out
@@ -0,0 +1 @@
+Unstable API 'Deno.dlopen'. The --unstable flag must be provided.
diff --git a/cli/tests/testdata/unstable_ffi_10.js b/cli/tests/testdata/unstable_ffi_10.js
new file mode 100644
index 000000000..c7cafd3ea
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_10.js
@@ -0,0 +1 @@
+Deno.core.opSync("op_ffi_read_i16", [0, 0]);
diff --git a/cli/tests/testdata/unstable_ffi_10.js.out b/cli/tests/testdata/unstable_ffi_10.js.out
new file mode 100644
index 000000000..bf7e1bd4f
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_10.js.out
@@ -0,0 +1 @@
+Unstable API 'Deno.UnsafePointerView#getInt16'. The --unstable flag must be provided.
diff --git a/cli/tests/testdata/unstable_ffi_11.js b/cli/tests/testdata/unstable_ffi_11.js
new file mode 100644
index 000000000..37bd75cc9
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_11.js
@@ -0,0 +1 @@
+Deno.core.opSync("op_ffi_read_u32", [0, 0]);
diff --git a/cli/tests/testdata/unstable_ffi_11.js.out b/cli/tests/testdata/unstable_ffi_11.js.out
new file mode 100644
index 000000000..2d2d72666
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_11.js.out
@@ -0,0 +1 @@
+Unstable API 'Deno.UnsafePointerView#getUint32'. The --unstable flag must be provided.
diff --git a/cli/tests/testdata/unstable_ffi_12.js b/cli/tests/testdata/unstable_ffi_12.js
new file mode 100644
index 000000000..b05f92d39
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_12.js
@@ -0,0 +1 @@
+Deno.core.opSync("op_ffi_read_i32", [0, 0]);
diff --git a/cli/tests/testdata/unstable_ffi_12.js.out b/cli/tests/testdata/unstable_ffi_12.js.out
new file mode 100644
index 000000000..377d8e4a5
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_12.js.out
@@ -0,0 +1 @@
+Unstable API 'Deno.UnsafePointerView#getInt32'. The --unstable flag must be provided.
diff --git a/cli/tests/testdata/unstable_ffi_13.js b/cli/tests/testdata/unstable_ffi_13.js
new file mode 100644
index 000000000..a83b8dc18
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_13.js
@@ -0,0 +1 @@
+Deno.core.opSync("op_ffi_read_u64", [0, 0]);
diff --git a/cli/tests/testdata/unstable_ffi_13.js.out b/cli/tests/testdata/unstable_ffi_13.js.out
new file mode 100644
index 000000000..6ca67a6f2
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_13.js.out
@@ -0,0 +1 @@
+Unstable API 'Deno.UnsafePointerView#getBigUint64'. The --unstable flag must be provided.
diff --git a/cli/tests/testdata/unstable_ffi_14.js b/cli/tests/testdata/unstable_ffi_14.js
new file mode 100644
index 000000000..b39b99da5
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_14.js
@@ -0,0 +1 @@
+Deno.core.opSync("op_ffi_read_f32", [0, 0]);
diff --git a/cli/tests/testdata/unstable_ffi_14.js.out b/cli/tests/testdata/unstable_ffi_14.js.out
new file mode 100644
index 000000000..11fcd5580
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_14.js.out
@@ -0,0 +1 @@
+Unstable API 'Deno.UnsafePointerView#getFloat32'. The --unstable flag must be provided.
diff --git a/cli/tests/testdata/unstable_ffi_15.js b/cli/tests/testdata/unstable_ffi_15.js
new file mode 100644
index 000000000..afd49b722
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_15.js
@@ -0,0 +1 @@
+Deno.core.opSync("op_ffi_read_f64", [0, 0]);
diff --git a/cli/tests/testdata/unstable_ffi_15.js.out b/cli/tests/testdata/unstable_ffi_15.js.out
new file mode 100644
index 000000000..3015e5c91
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_15.js.out
@@ -0,0 +1 @@
+Unstable API 'Deno.UnsafePointerView#getFloat64'. The --unstable flag must be provided.
diff --git a/cli/tests/testdata/unstable_ffi_2.js b/cli/tests/testdata/unstable_ffi_2.js
new file mode 100644
index 000000000..de392fa7d
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_2.js
@@ -0,0 +1,10 @@
+Deno.core.opSync("op_ffi_call_ptr", {
+ pointer: [0, 0],
+ def: {
+ name: null,
+ parameters: [],
+ result: "void",
+ },
+ parameters: [],
+ buffers: [],
+});
diff --git a/cli/tests/testdata/unstable_ffi_2.js.out b/cli/tests/testdata/unstable_ffi_2.js.out
new file mode 100644
index 000000000..cc4cc3dc6
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_2.js.out
@@ -0,0 +1 @@
+Unstable API 'Deno.UnsafeFnPointer#call'. The --unstable flag must be provided.
diff --git a/cli/tests/testdata/unstable_ffi_3.js b/cli/tests/testdata/unstable_ffi_3.js
new file mode 100644
index 000000000..4924d9d67
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_3.js
@@ -0,0 +1,10 @@
+Deno.core.opAsync("op_ffi_call_ptr_nonblocking", {
+ pointer: [0, 0],
+ def: {
+ name: null,
+ parameters: [],
+ result: "void",
+ },
+ parameters: [],
+ buffers: [],
+});
diff --git a/cli/tests/testdata/unstable_ffi_3.js.out b/cli/tests/testdata/unstable_ffi_3.js.out
new file mode 100644
index 000000000..cc4cc3dc6
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_3.js.out
@@ -0,0 +1 @@
+Unstable API 'Deno.UnsafeFnPointer#call'. The --unstable flag must be provided.
diff --git a/cli/tests/testdata/unstable_ffi_4.js b/cli/tests/testdata/unstable_ffi_4.js
new file mode 100644
index 000000000..3e05bbf42
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_4.js
@@ -0,0 +1 @@
+Deno.core.opSync("op_ffi_ptr_of", new Uint8Array(0));
diff --git a/cli/tests/testdata/unstable_ffi_4.js.out b/cli/tests/testdata/unstable_ffi_4.js.out
new file mode 100644
index 000000000..e0f40f2ee
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_4.js.out
@@ -0,0 +1 @@
+Unstable API 'Deno.UnsafePointer#of'. The --unstable flag must be provided.
diff --git a/cli/tests/testdata/unstable_ffi_5.js b/cli/tests/testdata/unstable_ffi_5.js
new file mode 100644
index 000000000..447ff5842
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_5.js
@@ -0,0 +1 @@
+Deno.core.opSync("op_ffi_buf_copy_into", [[0, 0], new Uint8Array(0), 0]);
diff --git a/cli/tests/testdata/unstable_ffi_5.js.out b/cli/tests/testdata/unstable_ffi_5.js.out
new file mode 100644
index 000000000..e3db6af26
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_5.js.out
@@ -0,0 +1 @@
+Unstable API 'Deno.UnsafePointerView#copyInto'. The --unstable flag must be provided.
diff --git a/cli/tests/testdata/unstable_ffi_6.js b/cli/tests/testdata/unstable_ffi_6.js
new file mode 100644
index 000000000..cc791b8f0
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_6.js
@@ -0,0 +1 @@
+Deno.core.opSync("op_ffi_cstr_read", [0, 0]);
diff --git a/cli/tests/testdata/unstable_ffi_6.js.out b/cli/tests/testdata/unstable_ffi_6.js.out
new file mode 100644
index 000000000..c59f51d04
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_6.js.out
@@ -0,0 +1 @@
+Unstable API 'Deno.UnsafePointerView#getCString'. The --unstable flag must be provided.
diff --git a/cli/tests/testdata/unstable_ffi_7.js b/cli/tests/testdata/unstable_ffi_7.js
new file mode 100644
index 000000000..02ef455ee
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_7.js
@@ -0,0 +1 @@
+Deno.core.opSync("op_ffi_read_u8", [0, 0]);
diff --git a/cli/tests/testdata/unstable_ffi_7.js.out b/cli/tests/testdata/unstable_ffi_7.js.out
new file mode 100644
index 000000000..6ab413537
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_7.js.out
@@ -0,0 +1 @@
+Unstable API 'Deno.UnsafePointerView#getUint8'. The --unstable flag must be provided.
diff --git a/cli/tests/testdata/unstable_ffi_8.js b/cli/tests/testdata/unstable_ffi_8.js
new file mode 100644
index 000000000..d250c9f21
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_8.js
@@ -0,0 +1 @@
+Deno.core.opSync("op_ffi_read_i8", [0, 0]);
diff --git a/cli/tests/testdata/unstable_ffi_8.js.out b/cli/tests/testdata/unstable_ffi_8.js.out
new file mode 100644
index 000000000..338db2631
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_8.js.out
@@ -0,0 +1 @@
+Unstable API 'Deno.UnsafePointerView#getInt8'. The --unstable flag must be provided.
diff --git a/cli/tests/testdata/unstable_ffi_9.js b/cli/tests/testdata/unstable_ffi_9.js
new file mode 100644
index 000000000..f21a4cdbf
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_9.js
@@ -0,0 +1 @@
+Deno.core.opSync("op_ffi_read_u16", [0, 0]);
diff --git a/cli/tests/testdata/unstable_ffi_9.js.out b/cli/tests/testdata/unstable_ffi_9.js.out
new file mode 100644
index 000000000..fb6d75f14
--- /dev/null
+++ b/cli/tests/testdata/unstable_ffi_9.js.out
@@ -0,0 +1 @@
+Unstable API 'Deno.UnsafePointerView#getUint16'. The --unstable flag must be provided.
diff --git a/cli/tests/unit/ffi_test.ts b/cli/tests/unit/ffi_test.ts
index b7772e8e2..22da88d27 100644
--- a/cli/tests/unit/ffi_test.ts
+++ b/cli/tests/unit/ffi_test.ts
@@ -23,3 +23,54 @@ Deno.test({ permissions: { ffi: true } }, function dlopenInvalidArguments() {
Deno.dlopen(filename);
}, TypeError);
});
+
+Deno.test({ permissions: { ffi: false } }, function ffiPermissionDenied() {
+ assertThrows(() => {
+ Deno.dlopen("/usr/lib/libc.so.6", {});
+ }, Deno.errors.PermissionDenied);
+ const ptr = new Deno.UnsafePointer(0n);
+ const fnptr = new Deno.UnsafeFnPointer(
+ ptr,
+ {
+ parameters: ["u32", "pointer"],
+ result: "void",
+ } as const,
+ );
+ assertThrows(() => {
+ fnptr.call(123, null);
+ }, Deno.errors.PermissionDenied);
+ assertThrows(() => {
+ Deno.UnsafePointer.of(new Uint8Array(0));
+ }, Deno.errors.PermissionDenied);
+ const ptrView = new Deno.UnsafePointerView(ptr);
+ assertThrows(() => {
+ ptrView.copyInto(new Uint8Array(0));
+ }, Deno.errors.PermissionDenied);
+ assertThrows(() => {
+ ptrView.getCString();
+ }, Deno.errors.PermissionDenied);
+ assertThrows(() => {
+ ptrView.getUint8();
+ }, Deno.errors.PermissionDenied);
+ assertThrows(() => {
+ ptrView.getInt8();
+ }, Deno.errors.PermissionDenied);
+ assertThrows(() => {
+ ptrView.getUint16();
+ }, Deno.errors.PermissionDenied);
+ assertThrows(() => {
+ ptrView.getInt16();
+ }, Deno.errors.PermissionDenied);
+ assertThrows(() => {
+ ptrView.getUint32();
+ }, Deno.errors.PermissionDenied);
+ assertThrows(() => {
+ ptrView.getInt32();
+ }, Deno.errors.PermissionDenied);
+ assertThrows(() => {
+ ptrView.getFloat32();
+ }, Deno.errors.PermissionDenied);
+ assertThrows(() => {
+ ptrView.getFloat64();
+ }, Deno.errors.PermissionDenied);
+});