summaryrefslogtreecommitdiff
path: root/cli/tests
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests')
-rw-r--r--cli/tests/compiler_api_test.out16
-rw-r--r--cli/tests/compiler_api_test.ts152
-rw-r--r--cli/tests/integration_tests.rs7
-rw-r--r--cli/tests/workers_test.ts2
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();