summaryrefslogtreecommitdiff
path: root/cli/js/compiler_api_test.ts
diff options
context:
space:
mode:
authorKitson Kelly <me@kitsonkelly.com>2020-01-09 01:17:44 +1100
committerRy Dahl <ry@tinyclouds.org>2020-01-08 09:17:44 -0500
commitd325566a7e2d736870990835dfe076a30a1b26ab (patch)
treefed5de4826b04140922c2573bdad2e8c6fd2445e /cli/js/compiler_api_test.ts
parentcbdf9c50095b86e72a8e0e715a02f6eb327f7c53 (diff)
Runtime Compiler API (#3442)
Also restructures the compiler TypeScript files to make them easier to manage and eventually integrate deno_typescript fully.
Diffstat (limited to 'cli/js/compiler_api_test.ts')
-rw-r--r--cli/js/compiler_api_test.ts105
1 files changed, 105 insertions, 0 deletions
diff --git a/cli/js/compiler_api_test.ts b/cli/js/compiler_api_test.ts
new file mode 100644
index 000000000..802fa6d46
--- /dev/null
+++ b/cli/js/compiler_api_test.ts
@@ -0,0 +1,105 @@
+// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
+
+import { assert, assertEquals, test } from "./test_util.ts";
+
+const { compile, transpileOnly, bundle } = 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("./cli/tests/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 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(`__rootExports["bar"]`));
+});
+
+test(async function bundleApiNoSources() {
+ const [diagnostics, actual] = await bundle("./cli/tests/subdir/mod1.ts");
+ assert(diagnostics == null);
+ assert(actual.includes(`instantiate("mod1")`));
+ assert(actual.includes(`__rootExports["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`));
+});