diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2021-08-11 10:20:47 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-11 10:20:47 -0400 |
commit | 15a763152f9d392cb80692262f8de5ef8ae15495 (patch) | |
tree | fcd1a59777f95920bf3502519983d6cc0d882a9a /cli/tests/compiler_api_test.ts | |
parent | a0285e2eb88f6254f6494b0ecd1878db3a3b2a58 (diff) |
chore: move test files to testdata directory (#11601)
Diffstat (limited to 'cli/tests/compiler_api_test.ts')
-rw-r--r-- | cli/tests/compiler_api_test.ts | 504 |
1 files changed, 0 insertions, 504 deletions
diff --git a/cli/tests/compiler_api_test.ts b/cli/tests/compiler_api_test.ts deleted file mode 100644 index 2e0a8820c..000000000 --- a/cli/tests/compiler_api_test.ts +++ /dev/null @@ -1,504 +0,0 @@ -// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. -import { - assert, - assertEquals, - assertStringIncludes, - assertThrowsAsync, -} from "../../test_util/std/testing/asserts.ts"; - -Deno.test({ - name: "Deno.emit() - sources provided", - async fn() { - const { diagnostics, files, ignoredOptions, stats } = await Deno.emit( - "/foo.ts", - { - sources: { - "/foo.ts": `import * as bar from "./bar.ts";\n\nconsole.log(bar);\n`, - "/bar.ts": `export const bar = "bar";\n`, - }, - }, - ); - assertEquals(diagnostics.length, 0); - assert(!ignoredOptions); - assertEquals(stats.length, 12); - const keys = Object.keys(files).sort(); - assert(keys[0].endsWith("/bar.ts.js")); - assert(keys[1].endsWith("/bar.ts.js.map")); - assert(keys[2].endsWith("/foo.ts.js")); - assert(keys[3].endsWith("/foo.ts.js.map")); - }, -}); - -Deno.test({ - name: "Deno.emit() - no sources provided", - async fn() { - const { diagnostics, files, ignoredOptions, stats } = await Deno.emit( - "./subdir/mod1.ts", - ); - assertEquals(diagnostics.length, 0); - assert(!ignoredOptions); - assertEquals(stats.length, 12); - const keys = Object.keys(files).sort(); - assertEquals(keys.length, 6); - assert(keys[0].endsWith("cli/tests/subdir/mod1.ts.js")); - assert(keys[1].endsWith("cli/tests/subdir/mod1.ts.js.map")); - }, -}); - -Deno.test({ - name: "Deno.emit() - compiler options effects emit", - async fn() { - const { diagnostics, files, ignoredOptions, stats } = await Deno.emit( - "/foo.ts", - { - compilerOptions: { - module: "amd", - sourceMap: false, - }, - sources: { "/foo.ts": `export const foo = "foo";` }, - }, - ); - assertEquals(diagnostics.length, 0); - assert(!ignoredOptions); - assertEquals(stats.length, 12); - const keys = Object.keys(files); - assertEquals(keys.length, 1); - const key = keys[0]; - assert(key.endsWith("/foo.ts.js")); - assert(files[key].startsWith("define(")); - }, -}); - -Deno.test({ - name: "Deno.emit() - pass lib in compiler options", - async fn() { - const { diagnostics, files, ignoredOptions, stats } = await Deno.emit( - "file:///foo.ts", - { - compilerOptions: { - lib: ["dom", "es2018", "deno.ns"], - }, - sources: { - "file:///foo.ts": `console.log(document.getElementById("foo")); - console.log(Deno.args);`, - }, - }, - ); - assertEquals(diagnostics.length, 0); - assert(!ignoredOptions); - assertEquals(stats.length, 12); - const keys = Object.keys(files).sort(); - assertEquals(keys, ["file:///foo.ts.js", "file:///foo.ts.js.map"]); - }, -}); - -Deno.test({ - name: "Deno.emit() - type references can be loaded", - async fn() { - const { diagnostics, files, ignoredOptions, stats } = await Deno.emit( - "file:///a.ts", - { - sources: { - "file:///a.ts": `/// <reference types="./b.d.ts" /> - const b = new B(); - console.log(b.b);`, - "file:///b.d.ts": `declare class B { - b: string; - }`, - }, - }, - ); - assertEquals(diagnostics.length, 0); - assert(!ignoredOptions); - assertEquals(stats.length, 12); - const keys = Object.keys(files).sort(); - assertEquals(keys, ["file:///a.ts.js", "file:///a.ts.js.map"]); - }, -}); - -Deno.test({ - name: "Deno.emit() - compilerOptions.types", - async fn() { - const { diagnostics, files, ignoredOptions, stats } = await Deno.emit( - "file:///a.ts", - { - compilerOptions: { - types: ["file:///b.d.ts"], - }, - sources: { - "file:///a.ts": `const b = new B(); - console.log(b.b);`, - "file:///b.d.ts": `declare class B { - b: string; - }`, - }, - }, - ); - assertEquals(diagnostics.length, 0); - assert(!ignoredOptions); - assertEquals(stats.length, 12); - const keys = Object.keys(files).sort(); - assertEquals(keys, ["file:///a.ts.js", "file:///a.ts.js.map"]); - }, -}); - -Deno.test({ - name: "Deno.emit() - import maps", - async fn() { - const { diagnostics, files, ignoredOptions, stats } = await Deno.emit( - "file:///a.ts", - { - importMap: { - imports: { - "b": "./b.ts", - }, - }, - importMapPath: "file:///import-map.json", - sources: { - "file:///a.ts": `import * as b from "b" - console.log(b);`, - "file:///b.ts": `export const b = "b";`, - }, - }, - ); - assertEquals(diagnostics.length, 0); - assert(!ignoredOptions); - assertEquals(stats.length, 12); - const keys = Object.keys(files).sort(); - assertEquals( - keys, - [ - "file:///a.ts.js", - "file:///a.ts.js.map", - "file:///b.ts.js", - "file:///b.ts.js.map", - ], - ); - }, -}); - -Deno.test({ - name: "Deno.emit() - no check", - async fn() { - const { diagnostics, files, ignoredOptions, stats } = await Deno.emit( - "/foo.ts", - { - check: false, - sources: { - "/foo.ts": `export enum Foo { Foo, Bar, Baz };\n`, - }, - }, - ); - assertEquals(diagnostics.length, 0); - assert(!ignoredOptions); - assertEquals(stats.length, 3); - const keys = Object.keys(files).sort(); - assert(keys[0].endsWith("/foo.ts.js")); - assert(keys[1].endsWith("/foo.ts.js.map")); - assert(files[keys[0]].startsWith("export var Foo;")); - }, -}); - -Deno.test({ - name: "Deno.emit() - no check - config effects emit", - async fn() { - const { diagnostics, files, ignoredOptions, stats } = await Deno.emit( - "/foo.ts", - { - check: false, - compilerOptions: { removeComments: true }, - sources: { - "/foo.ts": - `/** This is JSDoc */\nexport enum Foo { Foo, Bar, Baz };\n`, - }, - }, - ); - assertEquals(diagnostics.length, 0); - assert(!ignoredOptions); - assertEquals(stats.length, 3); - const keys = Object.keys(files).sort(); - assert(keys[0].endsWith("/foo.ts.js")); - assert(keys[1].endsWith("/foo.ts.js.map")); - assert(!files[keys[0]].includes("This is JSDoc")); - }, -}); - -Deno.test({ - name: "Deno.emit() - bundle as module script - with sources", - async fn() { - const { diagnostics, files, ignoredOptions, stats } = await Deno.emit( - "/foo.ts", - { - bundle: "module", - sources: { - "/foo.ts": `export * from "./bar.ts";\n`, - "/bar.ts": `export const bar = "bar";\n`, - }, - }, - ); - assertEquals(diagnostics.length, 0); - assert(!ignoredOptions); - assertEquals(stats.length, 12); - assertEquals( - Object.keys(files).sort(), - ["deno:///bundle.js", "deno:///bundle.js.map"].sort(), - ); - assert(files["deno:///bundle.js"].includes(`const bar1 = "bar"`)); - }, -}); - -Deno.test({ - name: "Deno.emit() - bundle as module script - no sources", - async fn() { - const { diagnostics, files, ignoredOptions, stats } = await Deno.emit( - "./subdir/mod1.ts", - { - bundle: "module", - }, - ); - assertEquals(diagnostics.length, 0); - assert(!ignoredOptions); - assertEquals(stats.length, 12); - assertEquals( - Object.keys(files).sort(), - ["deno:///bundle.js", "deno:///bundle.js.map"].sort(), - ); - assert(files["deno:///bundle.js"].length); - }, -}); - -Deno.test({ - name: "Deno.emit() - bundle as module script - include js modules", - async fn() { - const { diagnostics, files, ignoredOptions, stats } = await Deno.emit( - "/foo.js", - { - bundle: "module", - sources: { - "/foo.js": `export * from "./bar.js";\n`, - "/bar.js": `export const bar = "bar";\n`, - }, - }, - ); - assertEquals(diagnostics.length, 0); - assert(!ignoredOptions); - assertEquals(stats.length, 12); - assertEquals( - Object.keys(files).sort(), - ["deno:///bundle.js.map", "deno:///bundle.js"].sort(), - ); - assert(files["deno:///bundle.js"].includes(`const bar1 = "bar"`)); - }, -}); - -Deno.test({ - name: "Deno.emit() - generates diagnostics", - async fn() { - const { diagnostics, files } = await Deno.emit( - "/foo.ts", - { - sources: { - "/foo.ts": `document.getElementById("foo");`, - }, - }, - ); - assertEquals(diagnostics.length, 1); - const keys = Object.keys(files).sort(); - assert(keys[0].endsWith("/foo.ts.js")); - assert(keys[1].endsWith("/foo.ts.js.map")); - }, -}); - -// See https://github.com/denoland/deno/issues/6908 -Deno.test({ - name: "Deno.emit() - invalid syntax does not panic", - async fn() { - await assertThrowsAsync(async () => { - await Deno.emit("/main.js", { - sources: { - "/main.js": ` - export class Foo { - constructor() { - console.log("foo"); - } - export get() { - console.log("bar"); - } - }`, - }, - }); - }); - }, -}); - -Deno.test({ - name: 'Deno.emit() - allows setting of "importsNotUsedAsValues"', - async fn() { - const { diagnostics } = await Deno.emit("/a.ts", { - sources: { - "/a.ts": `import { B } from "./b.ts"; - const b: B = { b: "b" };`, - "/b.ts": `export interface B { - b:string; - };`, - }, - compilerOptions: { - importsNotUsedAsValues: "error", - }, - }); - assert(diagnostics); - assertEquals(diagnostics.length, 1); - assert(diagnostics[0].messageText); - assert(diagnostics[0].messageText.includes("This import is never used")); - }, -}); - -Deno.test({ - name: "Deno.emit() - Unknown media type does not panic", - async fn() { - await assertThrowsAsync(async () => { - await Deno.emit("https://example.com/foo", { - sources: { - "https://example.com/foo": `let foo: string = "foo";`, - }, - }); - }); - }, -}); - -Deno.test({ - name: "Deno.emit() - non-normalized specifier and source can compile", - async fn() { - const specifier = "https://example.com/foo//bar.ts"; - const { files } = await Deno.emit(specifier, { - sources: { - [specifier]: `export let foo: string = "foo";`, - }, - }); - assertEquals(files[`${specifier}.js`], 'export let foo = "foo";\n'); - assert(typeof files[`${specifier}.js.map`] === "string"); - }, -}); - -Deno.test({ - name: `Deno.emit() - bundle as classic script iife`, - async fn() { - const { diagnostics, files } = await Deno.emit("/a.ts", { - bundle: "classic", - sources: { - "/a.ts": `import { b } from "./b.ts"; - console.log(b);`, - "/b.ts": `export const b = "b";`, - }, - }); - assert(diagnostics); - assertEquals(diagnostics.length, 0); - assertEquals(Object.keys(files).length, 2); - assert(files["deno:///bundle.js"].startsWith("(function() {\n")); - assert(files["deno:///bundle.js"].endsWith("})();\n")); - assert(files["deno:///bundle.js.map"]); - }, -}); - -Deno.test({ - name: `Deno.emit() - throws descriptive error when unable to load import map`, - async fn() { - await assertThrowsAsync( - async () => { - await Deno.emit("/a.ts", { - bundle: "classic", - sources: { - "/a.ts": `console.log("hello");`, - }, - importMapPath: "file:///import_map_does_not_exist.json", - }); - }, - Error, - "Unable to load 'file:///import_map_does_not_exist.json' import map", - ); - }, -}); - -Deno.test({ - name: `Deno.emit() - support source maps with bundle option`, - async fn() { - { - const { diagnostics, files } = await Deno.emit("/a.ts", { - bundle: "classic", - sources: { - "/a.ts": `import { b } from "./b.ts"; - console.log(b);`, - "/b.ts": `export const b = "b";`, - }, - compilerOptions: { - inlineSourceMap: true, - sourceMap: false, - }, - }); - assert(diagnostics); - assertEquals(diagnostics.length, 0); - assertEquals(Object.keys(files).length, 1); - assertStringIncludes(files["deno:///bundle.js"], "sourceMappingURL"); - } - - const { diagnostics, files } = await Deno.emit("/a.ts", { - bundle: "classic", - sources: { - "/a.ts": `import { b } from "./b.ts"; - console.log(b);`, - "/b.ts": `export const b = "b";`, - }, - }); - assert(diagnostics); - assertEquals(diagnostics.length, 0); - assertEquals(Object.keys(files).length, 2); - assert(files["deno:///bundle.js"]); - assert(files["deno:///bundle.js.map"]); - }, -}); - -Deno.test({ - name: `Deno.emit() - graph errors as diagnostics`, - ignore: Deno.build.os === "windows", - async fn() { - const { diagnostics } = await Deno.emit("/a.ts", { - sources: { - "/a.ts": `import { b } from "./b.ts"; - console.log(b);`, - }, - }); - assert(diagnostics); - assertEquals(diagnostics, [ - { - category: 1, - code: 2305, - start: { line: 0, character: 9 }, - end: { line: 0, character: 10 }, - messageText: - `Module '"deno:///missing_dependency.d.ts"' has no exported member 'b'.`, - messageChain: null, - source: null, - sourceLine: 'import { b } from "./b.ts";', - fileName: "file:///a.ts", - relatedInformation: null, - }, - { - category: 1, - code: 900001, - start: null, - end: null, - messageText: "Unable to find specifier in sources: file:///b.ts", - messageChain: null, - source: null, - sourceLine: null, - fileName: "file:///b.ts", - relatedInformation: null, - }, - ]); - assert( - Deno.formatDiagnostics(diagnostics).includes( - "Unable to find specifier in sources: file:///b.ts", - ), - ); - }, -}); |