diff options
Diffstat (limited to 'cli/tests')
-rw-r--r-- | cli/tests/compiler_api_test.out | 16 | ||||
-rw-r--r-- | cli/tests/compiler_api_test.ts | 152 | ||||
-rw-r--r-- | cli/tests/integration_tests.rs | 7 | ||||
-rw-r--r-- | cli/tests/workers_test.ts | 2 |
4 files changed, 174 insertions, 3 deletions
diff --git a/cli/tests/compiler_api_test.out b/cli/tests/compiler_api_test.out new file mode 100644 index 000000000..23f44b092 --- /dev/null +++ b/cli/tests/compiler_api_test.out @@ -0,0 +1,16 @@ +running 12 tests +OK compilerApiCompileSources [WILDCARD] +OK compilerApiCompileNoSources [WILDCARD] +OK compilerApiCompileOptions [WILDCARD] +OK compilerApiCompileLib [WILDCARD] +OK compilerApiCompileTypes [WILDCARD] +OK transpileOnlyApi [WILDCARD] +OK transpileOnlyApiConfig [WILDCARD] +OK bundleApiSources [WILDCARD] +OK bundleApiNoSources [WILDCARD] +OK bundleApiConfig [WILDCARD] +OK bundleApiJsModules [WILDCARD] +OK diagnosticsTest [WILDCARD] + +test result: OK 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [WILDCARD] + diff --git a/cli/tests/compiler_api_test.ts b/cli/tests/compiler_api_test.ts new file mode 100644 index 000000000..540ac6680 --- /dev/null +++ b/cli/tests/compiler_api_test.ts @@ -0,0 +1,152 @@ +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { assert, assertEquals } from "../../std/testing/asserts.ts"; +const { compile, transpileOnly, bundle, test } = Deno; + +test(async function compilerApiCompileSources() { + const [diagnostics, actual] = await compile("/foo.ts", { + "/foo.ts": `import * as bar from "./bar.ts";\n\nconsole.log(bar);\n`, + "/bar.ts": `export const bar = "bar";\n` + }); + assert(diagnostics == null); + assert(actual); + assertEquals(Object.keys(actual), [ + "/bar.js.map", + "/bar.js", + "/foo.js.map", + "/foo.js" + ]); +}); + +test(async function compilerApiCompileNoSources() { + const [diagnostics, actual] = await compile("./subdir/mod1.ts"); + assert(diagnostics == null); + assert(actual); + const keys = Object.keys(actual); + assertEquals(keys.length, 6); + assert(keys[0].endsWith("print_hello.js.map")); + assert(keys[1].endsWith("print_hello.js")); +}); + +test(async function compilerApiCompileOptions() { + const [diagnostics, actual] = await compile( + "/foo.ts", + { + "/foo.ts": `export const foo = "foo";` + }, + { + module: "amd", + sourceMap: false + } + ); + assert(diagnostics == null); + assert(actual); + assertEquals(Object.keys(actual), ["/foo.js"]); + assert(actual["/foo.js"].startsWith("define(")); +}); + +test(async function compilerApiCompileLib() { + const [diagnostics, actual] = await compile( + "/foo.ts", + { + "/foo.ts": `console.log(document.getElementById("foo")); + console.log(Deno.args);` + }, + { + lib: ["dom", "es2018", "deno.ns"] + } + ); + assert(diagnostics == null); + assert(actual); + assertEquals(Object.keys(actual), ["/foo.js.map", "/foo.js"]); +}); + +test(async function compilerApiCompileTypes() { + const [diagnostics, actual] = await compile( + "/foo.ts", + { + "/foo.ts": `console.log(Foo.bar);` + }, + { + types: ["./subdir/foo_types.d.ts"] + } + ); + assert(diagnostics == null); + assert(actual); + assertEquals(Object.keys(actual), ["/foo.js.map", "/foo.js"]); +}); + +test(async function transpileOnlyApi() { + const actual = await transpileOnly({ + "foo.ts": `export enum Foo { Foo, Bar, Baz };\n` + }); + assert(actual); + assertEquals(Object.keys(actual), ["foo.ts"]); + assert(actual["foo.ts"].source.startsWith("export var Foo;")); + assert(actual["foo.ts"].map); +}); + +test(async function transpileOnlyApiConfig() { + const actual = await transpileOnly( + { + "foo.ts": `export enum Foo { Foo, Bar, Baz };\n` + }, + { + sourceMap: false, + module: "amd" + } + ); + assert(actual); + assertEquals(Object.keys(actual), ["foo.ts"]); + assert(actual["foo.ts"].source.startsWith("define(")); + assert(actual["foo.ts"].map == null); +}); + +test(async function bundleApiSources() { + const [diagnostics, actual] = await bundle("/foo.ts", { + "/foo.ts": `export * from "./bar.ts";\n`, + "/bar.ts": `export const bar = "bar";\n` + }); + assert(diagnostics == null); + assert(actual.includes(`__instantiate("foo")`)); + assert(actual.includes(`__exp["bar"]`)); +}); + +test(async function bundleApiNoSources() { + const [diagnostics, actual] = await bundle("./subdir/mod1.ts"); + assert(diagnostics == null); + assert(actual.includes(`__instantiate("mod1")`)); + assert(actual.includes(`__exp["printHello3"]`)); +}); + +test(async function bundleApiConfig() { + const [diagnostics, actual] = await bundle( + "/foo.ts", + { + "/foo.ts": `// random comment\nexport * from "./bar.ts";\n`, + "/bar.ts": `export const bar = "bar";\n` + }, + { + removeComments: true + } + ); + assert(diagnostics == null); + assert(!actual.includes(`random`)); +}); + +test(async function bundleApiJsModules() { + const [diagnostics, actual] = await bundle("/foo.js", { + "/foo.js": `export * from "./bar.js";\n`, + "/bar.js": `export const bar = "bar";\n` + }); + assert(diagnostics == null); + assert(actual.includes(`System.register("bar",`)); +}); + +test(async function diagnosticsTest() { + const [diagnostics] = await compile("/foo.ts", { + "/foo.ts": `document.getElementById("foo");` + }); + assert(Array.isArray(diagnostics)); + assert(diagnostics.length === 1); +}); diff --git a/cli/tests/integration_tests.rs b/cli/tests/integration_tests.rs index 1e8274294..d5a3fb8c8 100644 --- a/cli/tests/integration_tests.rs +++ b/cli/tests/integration_tests.rs @@ -865,11 +865,16 @@ itest!(_026_redirect_javascript { }); itest!(workers { - args: "run --reload --allow-net workers_test.ts", + args: "test --reload --allow-net workers_test.ts", http_server: true, output: "workers_test.out", }); +itest!(compiler_api { + args: "test --reload compiler_api_test.ts", + output: "compiler_api_test.out", +}); + itest!(_027_redirect_typescript { args: "run --reload 027_redirect_typescript.ts", output: "027_redirect_typescript.ts.out", diff --git a/cli/tests/workers_test.ts b/cli/tests/workers_test.ts index 44e7a1776..370b3cd1a 100644 --- a/cli/tests/workers_test.ts +++ b/cli/tests/workers_test.ts @@ -111,5 +111,3 @@ Deno.test(async function workerCanUseFetch(): Promise<void> { await promise; }); - -await Deno.runTests(); |