summaryrefslogtreecommitdiff
path: root/cli/tests
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests')
-rw-r--r--cli/tests/import_blob_url.ts13
-rw-r--r--cli/tests/import_blob_url.ts.out3
-rw-r--r--cli/tests/import_blob_url_error_stack.ts13
-rw-r--r--cli/tests/import_blob_url_error_stack.ts.out6
-rw-r--r--cli/tests/import_blob_url_import_relative.ts8
-rw-r--r--cli/tests/import_blob_url_import_relative.ts.out4
-rw-r--r--cli/tests/import_blob_url_imports.ts11
-rw-r--r--cli/tests/import_blob_url_imports.ts.out1
-rw-r--r--cli/tests/import_blob_url_jsx.ts16
-rw-r--r--cli/tests/import_blob_url_jsx.ts.out1
-rw-r--r--cli/tests/integration_tests.rs28
-rw-r--r--cli/tests/unsupported_dynamic_import_scheme.out1
12 files changed, 105 insertions, 0 deletions
diff --git a/cli/tests/import_blob_url.ts b/cli/tests/import_blob_url.ts
new file mode 100644
index 000000000..86bb634e1
--- /dev/null
+++ b/cli/tests/import_blob_url.ts
@@ -0,0 +1,13 @@
+const blob = new Blob(
+ ['export const a = "a";\n\nexport enum A {\n A,\n B,\n C,\n}\n'],
+ {
+ type: "application/typescript",
+ },
+);
+const url = URL.createObjectURL(blob);
+
+const a = await import(url);
+
+console.log(a.a);
+console.log(a.A);
+console.log(a.A.A);
diff --git a/cli/tests/import_blob_url.ts.out b/cli/tests/import_blob_url.ts.out
new file mode 100644
index 000000000..bfa0b9d94
--- /dev/null
+++ b/cli/tests/import_blob_url.ts.out
@@ -0,0 +1,3 @@
+a
+{ "0": "A", "1": "B", "2": "C", A: 0, B: 1, C: 2 }
+0
diff --git a/cli/tests/import_blob_url_error_stack.ts b/cli/tests/import_blob_url_error_stack.ts
new file mode 100644
index 000000000..f9c4f2e9d
--- /dev/null
+++ b/cli/tests/import_blob_url_error_stack.ts
@@ -0,0 +1,13 @@
+const blob = new Blob(
+ [
+ "enum A {\n A,\n B,\n C,\n }\n \n export function a() {\n throw new Error(`Hello ${A.C}`);\n }\n ",
+ ],
+ {
+ type: "application/typescript",
+ },
+);
+const url = URL.createObjectURL(blob);
+
+const { a } = await import(url);
+
+a();
diff --git a/cli/tests/import_blob_url_error_stack.ts.out b/cli/tests/import_blob_url_error_stack.ts.out
new file mode 100644
index 000000000..18ca023e3
--- /dev/null
+++ b/cli/tests/import_blob_url_error_stack.ts.out
@@ -0,0 +1,6 @@
+[WILDCARD]error: Uncaught (in promise) Error: Hello 2
+ throw new Error(`Hello ${A.C}`);
+ ^
+ at a (blob:null/[WILDCARD]:8:10)
+ at file:///[WILDCARD]/cli/tests/import_blob_url_error_stack.ts:13:1
+[WILDCARD]
diff --git a/cli/tests/import_blob_url_import_relative.ts b/cli/tests/import_blob_url_import_relative.ts
new file mode 100644
index 000000000..ad130bdac
--- /dev/null
+++ b/cli/tests/import_blob_url_import_relative.ts
@@ -0,0 +1,8 @@
+const blob = new Blob(['export { a } from "./a.ts";'], {
+ type: "application/javascript",
+});
+const url = URL.createObjectURL(blob);
+
+const a = await import(url);
+
+console.log(a);
diff --git a/cli/tests/import_blob_url_import_relative.ts.out b/cli/tests/import_blob_url_import_relative.ts.out
new file mode 100644
index 000000000..9d47ab719
--- /dev/null
+++ b/cli/tests/import_blob_url_import_relative.ts.out
@@ -0,0 +1,4 @@
+error: Uncaught (in promise) TypeError: invalid URL: relative URL with a cannot-be-a-base base
+const a = await import(url);
+ ^
+ at async file://[WILDCARD]/cli/tests/import_blob_url_import_relative.ts:6:11
diff --git a/cli/tests/import_blob_url_imports.ts b/cli/tests/import_blob_url_imports.ts
new file mode 100644
index 000000000..7c2b10865
--- /dev/null
+++ b/cli/tests/import_blob_url_imports.ts
@@ -0,0 +1,11 @@
+const blob = new Blob(
+ [
+ 'export { printHello } from "http://localhost:4545/cli/tests/subdir/mod2.ts"',
+ ],
+ { type: "application/javascript" },
+);
+const url = URL.createObjectURL(blob);
+
+const { printHello } = await import(url);
+
+printHello();
diff --git a/cli/tests/import_blob_url_imports.ts.out b/cli/tests/import_blob_url_imports.ts.out
new file mode 100644
index 000000000..e965047ad
--- /dev/null
+++ b/cli/tests/import_blob_url_imports.ts.out
@@ -0,0 +1 @@
+Hello
diff --git a/cli/tests/import_blob_url_jsx.ts b/cli/tests/import_blob_url_jsx.ts
new file mode 100644
index 000000000..8d645796a
--- /dev/null
+++ b/cli/tests/import_blob_url_jsx.ts
@@ -0,0 +1,16 @@
+const blob = new Blob(
+ ["export default function() {\n return <div>Hello Deno!</div>\n}\n"],
+ { type: "text/jsx" },
+);
+const url = URL.createObjectURL(blob);
+
+const { default: render } = await import(url);
+
+// deno-lint-ignore no-explicit-any
+(globalThis as any).React = {
+ createElement(...args: unknown[]) {
+ console.log(...args);
+ },
+};
+
+render();
diff --git a/cli/tests/import_blob_url_jsx.ts.out b/cli/tests/import_blob_url_jsx.ts.out
new file mode 100644
index 000000000..c1c85f250
--- /dev/null
+++ b/cli/tests/import_blob_url_jsx.ts.out
@@ -0,0 +1 @@
+div null Hello Deno!
diff --git a/cli/tests/integration_tests.rs b/cli/tests/integration_tests.rs
index 5f8d5d403..73fdcc994 100644
--- a/cli/tests/integration_tests.rs
+++ b/cli/tests/integration_tests.rs
@@ -3683,6 +3683,34 @@ console.log("finish");
output: "import_dynamic_data_url.ts.out",
});
+ itest!(import_blob_url_error_stack {
+ args: "run --quiet --reload import_blob_url_error_stack.ts",
+ output: "import_blob_url_error_stack.ts.out",
+ exit_code: 1,
+ });
+
+ itest!(import_blob_url_import_relative {
+ args: "run --quiet --reload import_blob_url_import_relative.ts",
+ output: "import_blob_url_import_relative.ts.out",
+ exit_code: 1,
+ });
+
+ itest!(import_blob_url_imports {
+ args: "run --quiet --reload import_blob_url_imports.ts",
+ output: "import_blob_url_imports.ts.out",
+ http_server: true,
+ });
+
+ itest!(import_blob_url_jsx {
+ args: "run --quiet --reload import_blob_url_jsx.ts",
+ output: "import_blob_url_jsx.ts.out",
+ });
+
+ itest!(import_blob_url {
+ args: "run --quiet --reload import_blob_url.ts",
+ output: "import_blob_url.ts.out",
+ });
+
itest!(import_file_with_colon {
args: "run --quiet --reload import_file_with_colon.ts",
output: "import_file_with_colon.ts.out",
diff --git a/cli/tests/unsupported_dynamic_import_scheme.out b/cli/tests/unsupported_dynamic_import_scheme.out
index 9160f935f..c708fced4 100644
--- a/cli/tests/unsupported_dynamic_import_scheme.out
+++ b/cli/tests/unsupported_dynamic_import_scheme.out
@@ -1,5 +1,6 @@
error: Uncaught (in promise) TypeError: Unsupported scheme "xxx" for module "xxx:". Supported schemes: [
"data",
+ "blob",
"file",
"http",
"https",