diff options
Diffstat (limited to 'cli/tests')
-rw-r--r-- | cli/tests/data_import_invalid.js | 1 | ||||
-rw-r--r-- | cli/tests/data_import_invalid.out | 2 | ||||
-rw-r--r-- | cli/tests/data_import_origin_upgrade.js | 2 | ||||
-rw-r--r-- | cli/tests/data_import_origin_upgrade.out | 2 | ||||
-rw-r--r-- | cli/tests/data_import_test.js | 59 | ||||
-rw-r--r-- | cli/tests/data_import_test.out | 3 | ||||
-rw-r--r-- | cli/tests/integration_tests.rs | 17 | ||||
-rw-r--r-- | cli/tests/unsupported_dynamic_import_scheme.out | 1 |
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", ] |