diff options
Diffstat (limited to 'cli/tests')
52 files changed, 434 insertions, 0 deletions
diff --git a/cli/tests/bundle/file_tests-fixture01.ts b/cli/tests/bundle/file_tests-fixture01.ts new file mode 100644 index 000000000..3598d0298 --- /dev/null +++ b/cli/tests/bundle/file_tests-fixture01.ts @@ -0,0 +1,3 @@ +import * as a from "./subdir/a.ts"; + +console.log(a); diff --git a/cli/tests/bundle/file_tests-fixture02.ts b/cli/tests/bundle/file_tests-fixture02.ts new file mode 100644 index 000000000..0cd291329 --- /dev/null +++ b/cli/tests/bundle/file_tests-fixture02.ts @@ -0,0 +1,4 @@ +import * as b from "./subdir/b.ts"; + +console.log(b.b); // "b" +console.log(b.c); // { c: "c", default: class C } diff --git a/cli/tests/bundle/file_tests-fixture03.ts b/cli/tests/bundle/file_tests-fixture03.ts new file mode 100644 index 000000000..78365ce13 --- /dev/null +++ b/cli/tests/bundle/file_tests-fixture03.ts @@ -0,0 +1,3 @@ +import { d } from "./subdir/d.ts"; + +console.log(d); diff --git a/cli/tests/bundle/file_tests-fixture04.ts b/cli/tests/bundle/file_tests-fixture04.ts new file mode 100644 index 000000000..590f4fef9 --- /dev/null +++ b/cli/tests/bundle/file_tests-fixture04.ts @@ -0,0 +1,3 @@ +const a = await import("./subdir/a.ts"); + +console.log(a); diff --git a/cli/tests/bundle/file_tests-fixture05.ts b/cli/tests/bundle/file_tests-fixture05.ts new file mode 100644 index 000000000..19541ce59 --- /dev/null +++ b/cli/tests/bundle/file_tests-fixture05.ts @@ -0,0 +1,3 @@ +import { a } from "./subdir/e.ts"; + +console.log(a); diff --git a/cli/tests/bundle/file_tests-fixture06.ts b/cli/tests/bundle/file_tests-fixture06.ts new file mode 100644 index 000000000..3d94332df --- /dev/null +++ b/cli/tests/bundle/file_tests-fixture06.ts @@ -0,0 +1,4 @@ +import { isMain, modUrl } from "./subdir/f.ts"; + +console.log(isMain, modUrl); +console.log(import.meta.main, import.meta.url); diff --git a/cli/tests/bundle/file_tests-fixture07.ts b/cli/tests/bundle/file_tests-fixture07.ts new file mode 100644 index 000000000..0475a6c53 --- /dev/null +++ b/cli/tests/bundle/file_tests-fixture07.ts @@ -0,0 +1,4 @@ +import { G } from "./subdir/g.ts"; +import { H } from "./subdir/h.ts"; + +console.log(new G(true), new H(true)); diff --git a/cli/tests/bundle/file_tests-fixture08.ts b/cli/tests/bundle/file_tests-fixture08.ts new file mode 100644 index 000000000..6af5d172e --- /dev/null +++ b/cli/tests/bundle/file_tests-fixture08.ts @@ -0,0 +1 @@ +export * as a from "./subdir/a.ts"; diff --git a/cli/tests/bundle/file_tests-fixture09.ts b/cli/tests/bundle/file_tests-fixture09.ts new file mode 100644 index 000000000..30ba983ee --- /dev/null +++ b/cli/tests/bundle/file_tests-fixture09.ts @@ -0,0 +1 @@ +export { a } from "./subdir/k.ts"; diff --git a/cli/tests/bundle/file_tests-fixture10.ts b/cli/tests/bundle/file_tests-fixture10.ts new file mode 100644 index 000000000..bec555da8 --- /dev/null +++ b/cli/tests/bundle/file_tests-fixture10.ts @@ -0,0 +1,7 @@ +import { a as defaultA } from "./subdir/l.ts"; + +const o: { a?: string } = {}; + +const { a = defaultA } = o; + +console.log(a); diff --git a/cli/tests/bundle/file_tests-fixture11.ts b/cli/tests/bundle/file_tests-fixture11.ts new file mode 100644 index 000000000..d3f60d367 --- /dev/null +++ b/cli/tests/bundle/file_tests-fixture11.ts @@ -0,0 +1,32 @@ +import { a as defaultA, O } from "./subdir/m.ts"; +export { O } from "./subdir/m.ts"; + +interface AOptions { + a?(): void; + c?: O; +} + +class A { + #a: () => void; + #c?: O; + constructor(o: AOptions = {}) { + const { + a = defaultA, + c, + } = o; + this.#a = a; + this.#c = c; + } + + a() { + this.#a(); + } + + c() { + console.log(this.#c); + } +} + +const a = new A(); +a.a(); +a.c(); diff --git a/cli/tests/bundle/file_tests-fixture12.ts b/cli/tests/bundle/file_tests-fixture12.ts new file mode 100644 index 000000000..32b9566bd --- /dev/null +++ b/cli/tests/bundle/file_tests-fixture12.ts @@ -0,0 +1,7 @@ +import { a } from "./subdir/p.ts"; + +function b() { + a(); +} + +b(); diff --git a/cli/tests/bundle/file_tests-fixture13.ts b/cli/tests/bundle/file_tests-fixture13.ts new file mode 100644 index 000000000..7dc13534c --- /dev/null +++ b/cli/tests/bundle/file_tests-fixture13.ts @@ -0,0 +1,11 @@ +import { D, d } from "./subdir/q.ts"; + +class A { + private s: D = d(); + + a() { + this.s.resolve(); + } +} + +new A(); diff --git a/cli/tests/bundle/file_tests-fixture14.ts b/cli/tests/bundle/file_tests-fixture14.ts new file mode 100644 index 000000000..aa8eef1b8 --- /dev/null +++ b/cli/tests/bundle/file_tests-fixture14.ts @@ -0,0 +1,4 @@ +// @deno-types="https://deno.land/x/lib/mod.d.ts" +import * as lib from "https://deno.land/x/lib/mod.js"; + +console.log(lib); diff --git a/cli/tests/bundle/file_tests-subdir-a.ts b/cli/tests/bundle/file_tests-subdir-a.ts new file mode 100644 index 000000000..9233cce2f --- /dev/null +++ b/cli/tests/bundle/file_tests-subdir-a.ts @@ -0,0 +1 @@ +export const a = "a"; diff --git a/cli/tests/bundle/file_tests-subdir-b.ts b/cli/tests/bundle/file_tests-subdir-b.ts new file mode 100644 index 000000000..1cf751c22 --- /dev/null +++ b/cli/tests/bundle/file_tests-subdir-b.ts @@ -0,0 +1,3 @@ +export * as c from "./c.ts"; + +export const b = "b"; diff --git a/cli/tests/bundle/file_tests-subdir-c.ts b/cli/tests/bundle/file_tests-subdir-c.ts new file mode 100644 index 000000000..7cc01f993 --- /dev/null +++ b/cli/tests/bundle/file_tests-subdir-c.ts @@ -0,0 +1,2 @@ +export const c = "c"; +export default class C {} diff --git a/cli/tests/bundle/file_tests-subdir-d.ts b/cli/tests/bundle/file_tests-subdir-d.ts new file mode 100644 index 000000000..9f1ba7f67 --- /dev/null +++ b/cli/tests/bundle/file_tests-subdir-d.ts @@ -0,0 +1,3 @@ +import { a } from "./a.ts"; + +export const d = { a }; diff --git a/cli/tests/bundle/file_tests-subdir-e.ts b/cli/tests/bundle/file_tests-subdir-e.ts new file mode 100644 index 000000000..55e8e0e18 --- /dev/null +++ b/cli/tests/bundle/file_tests-subdir-e.ts @@ -0,0 +1 @@ +export * from "./a.ts"; diff --git a/cli/tests/bundle/file_tests-subdir-f.ts b/cli/tests/bundle/file_tests-subdir-f.ts new file mode 100644 index 000000000..8bc8d9bf4 --- /dev/null +++ b/cli/tests/bundle/file_tests-subdir-f.ts @@ -0,0 +1,2 @@ +export const isMain = import.meta.main; +export const modUrl = import.meta.url; diff --git a/cli/tests/bundle/file_tests-subdir-g.ts b/cli/tests/bundle/file_tests-subdir-g.ts new file mode 100644 index 000000000..3eb4cd3cc --- /dev/null +++ b/cli/tests/bundle/file_tests-subdir-g.ts @@ -0,0 +1,12 @@ +const g: number[] = []; + +export class G { + #g!: number[]; + constructor(shared: boolean) { + if (shared) { + this.#g = g; + } else { + this.#g = []; + } + } +} diff --git a/cli/tests/bundle/file_tests-subdir-h.ts b/cli/tests/bundle/file_tests-subdir-h.ts new file mode 100644 index 000000000..9c86dd5c5 --- /dev/null +++ b/cli/tests/bundle/file_tests-subdir-h.ts @@ -0,0 +1,12 @@ +const g: number[] = []; + +export class H { + #g!: number[]; + constructor(shared: boolean) { + if (shared) { + this.#g = g; + } else { + this.#g = []; + } + } +} diff --git a/cli/tests/bundle/file_tests-subdir-i.ts b/cli/tests/bundle/file_tests-subdir-i.ts new file mode 100644 index 000000000..4ad9ce449 --- /dev/null +++ b/cli/tests/bundle/file_tests-subdir-i.ts @@ -0,0 +1,3 @@ +export function a(...d: string[]): string { + return d.join(" "); +} diff --git a/cli/tests/bundle/file_tests-subdir-j.ts b/cli/tests/bundle/file_tests-subdir-j.ts new file mode 100644 index 000000000..ac7bce0ea --- /dev/null +++ b/cli/tests/bundle/file_tests-subdir-j.ts @@ -0,0 +1,3 @@ +export function a(...d: string[]): string { + return d.join("/"); +} diff --git a/cli/tests/bundle/file_tests-subdir-k.ts b/cli/tests/bundle/file_tests-subdir-k.ts new file mode 100644 index 000000000..1b8a533f1 --- /dev/null +++ b/cli/tests/bundle/file_tests-subdir-k.ts @@ -0,0 +1,11 @@ +import * as _i from "./i.ts"; +import * as _j from "./j.ts"; + +const k = globalThis.value ? _i : _j; + +export const i = _i; +export const j = _j; + +export const { + a, +} = k; diff --git a/cli/tests/bundle/file_tests-subdir-l.ts b/cli/tests/bundle/file_tests-subdir-l.ts new file mode 100644 index 000000000..d767e6ad0 --- /dev/null +++ b/cli/tests/bundle/file_tests-subdir-l.ts @@ -0,0 +1 @@ +export { a } from "./a.ts"; diff --git a/cli/tests/bundle/file_tests-subdir-m.ts b/cli/tests/bundle/file_tests-subdir-m.ts new file mode 100644 index 000000000..21e86d07c --- /dev/null +++ b/cli/tests/bundle/file_tests-subdir-m.ts @@ -0,0 +1,2 @@ +export { a } from "./n.ts"; +export { O } from "./o.ts"; diff --git a/cli/tests/bundle/file_tests-subdir-n.ts b/cli/tests/bundle/file_tests-subdir-n.ts new file mode 100644 index 000000000..ac3c37005 --- /dev/null +++ b/cli/tests/bundle/file_tests-subdir-n.ts @@ -0,0 +1,3 @@ +export function a() { + console.log("a"); +} diff --git a/cli/tests/bundle/file_tests-subdir-o.ts b/cli/tests/bundle/file_tests-subdir-o.ts new file mode 100644 index 000000000..ab9753fea --- /dev/null +++ b/cli/tests/bundle/file_tests-subdir-o.ts @@ -0,0 +1,5 @@ +export enum O { + A, + B, + C, +} diff --git a/cli/tests/bundle/file_tests-subdir-p.ts b/cli/tests/bundle/file_tests-subdir-p.ts new file mode 100644 index 000000000..19b486f71 --- /dev/null +++ b/cli/tests/bundle/file_tests-subdir-p.ts @@ -0,0 +1 @@ +export * from "./i.ts"; diff --git a/cli/tests/bundle/file_tests-subdir-q.ts b/cli/tests/bundle/file_tests-subdir-q.ts new file mode 100644 index 000000000..9e5d4da37 --- /dev/null +++ b/cli/tests/bundle/file_tests-subdir-q.ts @@ -0,0 +1,13 @@ +/* eslint-disable */ +export interface D { + resolve: any; + reject: any; +} + +export function d(): D { + let methods; + const promise = new Promise((resolve, reject) => { + methods = { resolve, reject }; + }); + return Object.assign(promise, methods); +} diff --git a/cli/tests/bundle/fixture01.out b/cli/tests/bundle/fixture01.out new file mode 100644 index 000000000..e29d0d38a --- /dev/null +++ b/cli/tests/bundle/fixture01.out @@ -0,0 +1,7 @@ +const a = function() { + const a = "a"; + return { + a + }; +}(); +console.log(a); diff --git a/cli/tests/bundle/fixture02.out b/cli/tests/bundle/fixture02.out new file mode 100644 index 000000000..41880e73d --- /dev/null +++ b/cli/tests/bundle/fixture02.out @@ -0,0 +1,11 @@ +const c = function() { + const c1 = "c"; + class C { + } + return { + c: c1, + default: C + }; +}(); +console.log("b"); +console.log(c); diff --git a/cli/tests/bundle/fixture03.out b/cli/tests/bundle/fixture03.out new file mode 100644 index 000000000..d4c79e2ec --- /dev/null +++ b/cli/tests/bundle/fixture03.out @@ -0,0 +1,4 @@ +const d = { + a: "a" +}; +console.log(d); diff --git a/cli/tests/bundle/fixture04.out b/cli/tests/bundle/fixture04.out new file mode 100644 index 000000000..37869205b --- /dev/null +++ b/cli/tests/bundle/fixture04.out @@ -0,0 +1,2 @@ +const a = await import("./subdir/a.ts"); +console.log(a); diff --git a/cli/tests/bundle/fixture05.out b/cli/tests/bundle/fixture05.out new file mode 100644 index 000000000..7b2a34601 --- /dev/null +++ b/cli/tests/bundle/fixture05.out @@ -0,0 +1 @@ +console.log("a"); diff --git a/cli/tests/bundle/fixture06.out b/cli/tests/bundle/fixture06.out new file mode 100644 index 000000000..057c5b820 --- /dev/null +++ b/cli/tests/bundle/fixture06.out @@ -0,0 +1,2 @@ +console.log(false, "file:///tests/subdir/f.ts"); +console.log(import.meta.main, "file:///tests/fixture06.ts"); diff --git a/cli/tests/bundle/fixture07.out b/cli/tests/bundle/fixture07.out new file mode 100644 index 000000000..39e6a11e8 --- /dev/null +++ b/cli/tests/bundle/fixture07.out @@ -0,0 +1,23 @@ +const g = []; +class G { + #g; + constructor(shared){ + if (shared) { + this.#g = g; + } else { + this.#g = []; + } + } +} +const g1 = []; +class H { + #g; + constructor(shared1){ + if (shared1) { + this.#g = g1; + } else { + this.#g = []; + } + } +} +console.log(new G(true), new H(true)); diff --git a/cli/tests/bundle/fixture08.out b/cli/tests/bundle/fixture08.out new file mode 100644 index 000000000..f9435ab2a --- /dev/null +++ b/cli/tests/bundle/fixture08.out @@ -0,0 +1,7 @@ +const a = function() { + const a1 = "a"; + return { + a: a1 + }; +}(); +export { a }; diff --git a/cli/tests/bundle/fixture09.out b/cli/tests/bundle/fixture09.out new file mode 100644 index 000000000..7f9646946 --- /dev/null +++ b/cli/tests/bundle/fixture09.out @@ -0,0 +1,19 @@ +const _i = function() { + function a(...d) { + return d.join(" "); + } + return { + a + }; +}(); +const _j = function() { + function a(...d) { + return d.join("/"); + } + return { + a + }; +}(); +const k = globalThis.value ? _i : _j; +const { a , } = k; +export { a }; diff --git a/cli/tests/bundle/fixture10.out b/cli/tests/bundle/fixture10.out new file mode 100644 index 000000000..7436722b5 --- /dev/null +++ b/cli/tests/bundle/fixture10.out @@ -0,0 +1,4 @@ +const o = { +}; +const { a ="a" } = o; +console.log(a); diff --git a/cli/tests/bundle/fixture11.out b/cli/tests/bundle/fixture11.out new file mode 100644 index 000000000..2d1c966a1 --- /dev/null +++ b/cli/tests/bundle/fixture11.out @@ -0,0 +1,31 @@ +function a() { + console.log("a"); +} +var O; +(function(O1) { + O1[O1["A"] = 0] = "A"; + O1[O1["B"] = 1] = "B"; + O1[O1["C"] = 2] = "C"; +})((void 0) || (O = { +})); +const O1 = void 0; +export { O1 as O }; +class A { + #a; + #c; + constructor(o = { + }){ + const { a: a1 = a , c , } = o; + this.#a = a1; + this.#c = c; + } + a() { + this.#a(); + } + c() { + console.log(this.#c); + } +} +const a2 = new A(); +a2.a(); +a2.c(); diff --git a/cli/tests/bundle/fixture12.out b/cli/tests/bundle/fixture12.out new file mode 100644 index 000000000..64e2d6cdb --- /dev/null +++ b/cli/tests/bundle/fixture12.out @@ -0,0 +1,7 @@ +function a(...d) { + return d.join(" "); +} +function b() { + a(); +} +b(); diff --git a/cli/tests/bundle/fixture13.out b/cli/tests/bundle/fixture13.out new file mode 100644 index 000000000..1c7a8c991 --- /dev/null +++ b/cli/tests/bundle/fixture13.out @@ -0,0 +1,17 @@ +function d() { + let methods; + const promise = new Promise((resolve, reject)=>{ + methods = { + resolve, + reject + }; + }); + return Object.assign(promise, methods); +} +class A { + s = d(); + a() { + this.s.resolve(); + } +} +new A(); diff --git a/cli/tests/bundle/fixture14.out b/cli/tests/bundle/fixture14.out new file mode 100644 index 000000000..06e93a7cc --- /dev/null +++ b/cli/tests/bundle/fixture14.out @@ -0,0 +1,25 @@ +const lib = function() { + const a = function() { + const a1 = []; + return { + a: a1 + }; + }(); + const b = function() { + const b1 = []; + return { + b: b1 + }; + }(); + const c = function() { + const c1; + return { + c: c1 + }; + }(); + const mod; + return { + mod + }; +}(); +console.log(lib); diff --git a/cli/tests/bundle/https_deno.land-x-lib-a.ts b/cli/tests/bundle/https_deno.land-x-lib-a.ts new file mode 100644 index 000000000..a0a6f8e94 --- /dev/null +++ b/cli/tests/bundle/https_deno.land-x-lib-a.ts @@ -0,0 +1 @@ +export const a: string[] = []; diff --git a/cli/tests/bundle/https_deno.land-x-lib-b.js b/cli/tests/bundle/https_deno.land-x-lib-b.js new file mode 100644 index 000000000..13cacdd8b --- /dev/null +++ b/cli/tests/bundle/https_deno.land-x-lib-b.js @@ -0,0 +1 @@ +export const b = []; diff --git a/cli/tests/bundle/https_deno.land-x-lib-c.d.ts b/cli/tests/bundle/https_deno.land-x-lib-c.d.ts new file mode 100644 index 000000000..fac988e49 --- /dev/null +++ b/cli/tests/bundle/https_deno.land-x-lib-c.d.ts @@ -0,0 +1 @@ +export const c: string[]; diff --git a/cli/tests/bundle/https_deno.land-x-lib-c.js b/cli/tests/bundle/https_deno.land-x-lib-c.js new file mode 100644 index 000000000..620ca0b66 --- /dev/null +++ b/cli/tests/bundle/https_deno.land-x-lib-c.js @@ -0,0 +1,3 @@ +/// <reference types="./c.d.ts" /> + +export const c = []; diff --git a/cli/tests/bundle/https_deno.land-x-lib-mod.d.ts b/cli/tests/bundle/https_deno.land-x-lib-mod.d.ts new file mode 100644 index 000000000..76ed81df0 --- /dev/null +++ b/cli/tests/bundle/https_deno.land-x-lib-mod.d.ts @@ -0,0 +1,9 @@ +export * as a from "./a.ts"; +export * as b from "./b.js"; +export * as c from "./c.js"; + +export interface A { + a: string; +} + +export const mod: A[]; diff --git a/cli/tests/bundle/https_deno.land-x-lib-mod.js b/cli/tests/bundle/https_deno.land-x-lib-mod.js new file mode 100644 index 000000000..505162094 --- /dev/null +++ b/cli/tests/bundle/https_deno.land-x-lib-mod.js @@ -0,0 +1,5 @@ +export * as a from "./a.ts"; +export * as b from "./b.js"; +export * as c from "./c.js"; + +export const mod = []; diff --git a/cli/tests/integration_tests.rs b/cli/tests/integration_tests.rs index 51eb922d9..d7786e966 100644 --- a/cli/tests/integration_tests.rs +++ b/cli/tests/integration_tests.rs @@ -839,6 +839,49 @@ fn bundle_exports() { } #[test] +fn bundle_exports_no_check() { + // First we have to generate a bundle of some module that has exports. + let mod1 = util::root_path().join("cli/tests/subdir/mod1.ts"); + assert!(mod1.is_file()); + let t = TempDir::new().expect("tempdir fail"); + let bundle = t.path().join("mod1.bundle.js"); + let mut deno = util::deno_cmd() + .current_dir(util::root_path()) + .arg("bundle") + .arg("--no-check") + .arg(mod1) + .arg(&bundle) + .spawn() + .expect("failed to spawn script"); + let status = deno.wait().expect("failed to wait for the child process"); + assert!(status.success()); + assert!(bundle.is_file()); + + // Now we try to use that bundle from another module. + let test = t.path().join("test.js"); + std::fs::write( + &test, + " + import { printHello3 } from \"./mod1.bundle.js\"; + printHello3(); ", + ) + .expect("error writing file"); + + let output = util::deno_cmd() + .current_dir(util::root_path()) + .arg("run") + .arg(&test) + .output() + .expect("failed to spawn script"); + // check the output of the test.ts program. + assert!(std::str::from_utf8(&output.stdout) + .unwrap() + .trim() + .ends_with("Hello")); + assert_eq!(output.stderr, b""); +} + +#[test] fn bundle_circular() { // First we have to generate a bundle of some module that has exports. let circular1 = util::root_path().join("cli/tests/subdir/circular1.ts"); @@ -1052,6 +1095,52 @@ fn bundle_import_map() { } #[test] +fn bundle_import_map_no_check() { + let import = util::root_path().join("cli/tests/bundle_im.ts"); + let import_map_path = util::root_path().join("cli/tests/bundle_im.json"); + assert!(import.is_file()); + let t = TempDir::new().expect("tempdir fail"); + let bundle = t.path().join("import_map.bundle.js"); + let mut deno = util::deno_cmd() + .current_dir(util::root_path()) + .arg("bundle") + .arg("--no-check") + .arg("--importmap") + .arg(import_map_path) + .arg("--unstable") + .arg(import) + .arg(&bundle) + .spawn() + .expect("failed to spawn script"); + let status = deno.wait().expect("failed to wait for the child process"); + assert!(status.success()); + assert!(bundle.is_file()); + + // Now we try to use that bundle from another module. + let test = t.path().join("test.js"); + std::fs::write( + &test, + " + import { printHello3 } from \"./import_map.bundle.js\"; + printHello3(); ", + ) + .expect("error writing file"); + + let output = util::deno_cmd() + .current_dir(util::root_path()) + .arg("run") + .arg(&test) + .output() + .expect("failed to spawn script"); + // check the output of the test.ts program. + assert!(std::str::from_utf8(&output.stdout) + .unwrap() + .trim() + .ends_with("Hello")); + assert_eq!(output.stderr, b""); +} + +#[test] fn info_with_compiled_source() { let _g = util::http_server(); let module_path = "http://127.0.0.1:4545/cli/tests/048_media_types_jsx.ts"; |