summaryrefslogtreecommitdiff
path: root/cli/tests
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests')
-rw-r--r--cli/tests/data_import_invalid.js1
-rw-r--r--cli/tests/data_import_invalid.out2
-rw-r--r--cli/tests/data_import_origin_upgrade.js2
-rw-r--r--cli/tests/data_import_origin_upgrade.out2
-rw-r--r--cli/tests/data_import_test.js59
-rw-r--r--cli/tests/data_import_test.out3
-rw-r--r--cli/tests/integration_tests.rs17
-rw-r--r--cli/tests/unsupported_dynamic_import_scheme.out1
8 files changed, 87 insertions, 0 deletions
diff --git a/cli/tests/data_import_invalid.js b/cli/tests/data_import_invalid.js
new file mode 100644
index 000000000..a7dce85c7
--- /dev/null
+++ b/cli/tests/data_import_invalid.js
@@ -0,0 +1 @@
+import _invalid from "data:";
diff --git a/cli/tests/data_import_invalid.out b/cli/tests/data_import_invalid.out
new file mode 100644
index 000000000..2dfc748fd
--- /dev/null
+++ b/cli/tests/data_import_invalid.out
@@ -0,0 +1,2 @@
+error: Malformed data url, missing comma
+Imported from [WILDCARD] \ No newline at end of file
diff --git a/cli/tests/data_import_origin_upgrade.js b/cli/tests/data_import_origin_upgrade.js
new file mode 100644
index 000000000..5d6c29715
--- /dev/null
+++ b/cli/tests/data_import_origin_upgrade.js
@@ -0,0 +1,2 @@
+// export default from "https://deno.land/std/version.ts";
+import _upgrade from "data:application/javascript;base64,ZXhwb3J0IGRlZmF1bHQgZnJvbSAiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkL3ZlcnNpb24udHMiOw==";
diff --git a/cli/tests/data_import_origin_upgrade.out b/cli/tests/data_import_origin_upgrade.out
new file mode 100644
index 000000000..00c4052c9
--- /dev/null
+++ b/cli/tests/data_import_origin_upgrade.out
@@ -0,0 +1,2 @@
+error: Modules loaded using data URL are not allowed to import other modules
+Imported from [WILDCARD] \ No newline at end of file
diff --git a/cli/tests/data_import_test.js b/cli/tests/data_import_test.js
new file mode 100644
index 000000000..bbbc67743
--- /dev/null
+++ b/cli/tests/data_import_test.js
@@ -0,0 +1,59 @@
+import { assertEquals } from "../../std/testing/asserts.ts";
+
+// export const value = 'Successful import'; export default value;
+import data1 from "data:application/javascript;base64,ZXhwb3J0IGNvbnN0IHZhbHVlID0gJ1N1Y2Nlc3NmdWwgaW1wb3J0JzsgZXhwb3J0IGRlZmF1bHQgdmFsdWU7";
+
+Deno.test("static base64 data url import", () => {
+ assertEquals(data1, "Successful import");
+});
+
+Deno.test("dynamic base64 data url import", async () => {
+ const data2 = await import(
+ // export const leet = 1337
+ "data:application/javascript;base64,ZXhwb3J0IGNvbnN0IGxlZXQgPSAxMzM3"
+ );
+ assertEquals(data2.leet, 1337);
+});
+
+Deno.test("dynamic percent-encoding data url import", async () => {
+ const data3 = await import(
+ // export const value = 42;
+ "data:application/javascript,export%20const%20value%20%3D%2042%3B"
+ );
+ assertEquals(data3.value, 42);
+});
+
+Deno.test("dynamic base64 typescript data url import", async () => {
+ const data2 = await import(
+ // export const leet: number = 1337;
+ "data:application/typescript;base64,ZXhwb3J0IGNvbnN0IGxlZXQ6IG51bWJlciA9IDEzMzc7"
+ );
+ assertEquals(data2.leet, 1337);
+});
+
+Deno.test("spawn worker with data url", async () => {
+ let resolve, timeout;
+ const promise = new Promise((res, rej) => {
+ resolve = res;
+ timeout = setTimeout(() => rej("Worker timed out"), 2000);
+ });
+
+ const worker = new Worker(
+ "data:application/javascript," +
+ encodeURIComponent("self.onmessage = () => self.postMessage('Worker');"),
+ { type: "module" },
+ );
+
+ worker.onmessage = (m) => {
+ if (m.data === "Worker") {
+ resolve();
+ }
+ };
+
+ worker.postMessage();
+
+ await promise;
+
+ clearTimeout(timeout);
+ worker.terminate();
+});
diff --git a/cli/tests/data_import_test.out b/cli/tests/data_import_test.out
new file mode 100644
index 000000000..2c1f33eea
--- /dev/null
+++ b/cli/tests/data_import_test.out
@@ -0,0 +1,3 @@
+[WILDCARD]
+test result: ok. 5 passed; [WILDCARD]
+
diff --git a/cli/tests/integration_tests.rs b/cli/tests/integration_tests.rs
index ec13f7380..dac257e8b 100644
--- a/cli/tests/integration_tests.rs
+++ b/cli/tests/integration_tests.rs
@@ -2394,6 +2394,23 @@ itest!(info_type_import {
output: "info_type_import.out",
});
+itest!(data_import {
+ args: "test --reload --unstable data_import_test.js",
+ output: "data_import_test.out",
+});
+
+itest!(data_import_invalid {
+ args: "test --reload --unstable data_import_invalid.js",
+ output: "data_import_invalid.out",
+ exit_code: 1,
+});
+
+itest!(data_import_origin_upgrade {
+ args: "test --reload --unstable data_import_origin_upgrade.js",
+ output: "data_import_origin_upgrade.out",
+ exit_code: 1,
+});
+
#[test]
fn cafile_env_fetch() {
use url::Url;
diff --git a/cli/tests/unsupported_dynamic_import_scheme.out b/cli/tests/unsupported_dynamic_import_scheme.out
index 2a1a4e01f..8a7dba2b9 100644
--- a/cli/tests/unsupported_dynamic_import_scheme.out
+++ b/cli/tests/unsupported_dynamic_import_scheme.out
@@ -2,4 +2,5 @@ error: Uncaught TypeError: Unsupported scheme "xxx" for module "xxx:". Supported
"http",
"https",
"file",
+ "data",
]