diff options
author | Casper Beyer <caspervonb@pm.me> | 2021-05-20 00:41:36 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-19 18:41:36 +0200 |
commit | df7639c09664207df4aeb1e66e4bad405eed8cc3 (patch) | |
tree | 9c5d36efe9363d9e055d6be43b1f4fc39eb16728 | |
parent | ba09ce0729d3ac4e618ba95e6e0d43fb7f3316fa (diff) |
test(cli/dts): typecheck examples in declaration files (#10707)
This commits adds two integration tests that typecheck examples
in the docstrings in Deno declaration files.
-rw-r--r-- | cli/dts/lib.deno.unstable.d.ts | 5 | ||||
-rw-r--r-- | cli/tests/integration_tests.rs | 33 | ||||
-rw-r--r-- | cli/tests/integration_tests_lsp.rs | 2 |
3 files changed, 35 insertions, 5 deletions
diff --git a/cli/dts/lib.deno.unstable.d.ts b/cli/dts/lib.deno.unstable.d.ts index 480b0ee06..c8e2f4207 100644 --- a/cli/dts/lib.deno.unstable.d.ts +++ b/cli/dts/lib.deno.unstable.d.ts @@ -139,10 +139,7 @@ declare namespace Deno { * // The Deno.core namespace is needed to interact with plugins, but this is * // internal so we use ts-ignore to skip type checking these calls. * // @ts-ignore - * const { - * op_test_sync, - * op_test_async, - * } = Deno.core.ops(); + * const { op_test_sync, op_test_async } = Deno.core.ops(); * * assert(op_test_sync); * assert(op_test_async); diff --git a/cli/tests/integration_tests.rs b/cli/tests/integration_tests.rs index 19a1a8952..ce1205698 100644 --- a/cli/tests/integration_tests.rs +++ b/cli/tests/integration_tests.rs @@ -18,6 +18,39 @@ use tempfile::TempDir; use test_util as util; use tokio::task::LocalSet; +// TODO(caspervonb): investiate why this fails on Windows. +#[cfg(unix)] +#[test] +fn typecheck_declarations_ns() { + let status = util::deno_cmd() + .arg("test") + .arg("--allow-all") + .arg("--doc") + .arg(util::root_path().join("cli/dts/lib.deno.ns.d.ts")) + .spawn() + .unwrap() + .wait() + .unwrap(); + assert!(status.success()); +} + +// TODO(caspervonb): investiate why this fails on Windows. +#[cfg(unix)] +#[test] +fn typecheck_declarations_unstable() { + let status = util::deno_cmd() + .arg("test") + .arg("--doc") + .arg("--allow-all") + .arg("--unstable") + .arg(util::root_path().join("cli/dts/lib.deno.unstable.d.ts")) + .spawn() + .unwrap() + .wait() + .unwrap(); + assert!(status.success()); +} + #[test] fn js_unit_tests_lint() { let status = util::deno_cmd() diff --git a/cli/tests/integration_tests_lsp.rs b/cli/tests/integration_tests_lsp.rs index e4a9eb11c..15abfe678 100644 --- a/cli/tests/integration_tests_lsp.rs +++ b/cli/tests/integration_tests_lsp.rs @@ -318,7 +318,7 @@ fn lsp_hover_unstable_enabled() { "language":"typescript", "value":"function Deno.openPlugin(filename: string): number" }, - "**UNSTABLE**: new API, yet to be vetted.\n\nOpen and initialize a plugin.\n\n```ts\nimport { assert } from \"https://deno.land/std/testing/asserts.ts\";\nconst rid = Deno.openPlugin(\"./path/to/some/plugin.so\");\n\n// The Deno.core namespace is needed to interact with plugins, but this is\n// internal so we use ts-ignore to skip type checking these calls.\n// @ts-ignore\nconst {\n op_test_sync,\n op_test_async,\n} = Deno.core.ops();\n\nassert(op_test_sync);\nassert(op_test_async);\n\n// @ts-ignore\nconst result = Deno.core.opSync(\"op_test_sync\");\n\n// @ts-ignore\nconst result = await Deno.core.opAsync(\"op_test_sync\");\n```\n\nRequires `allow-plugin` permission.\n\nThe plugin system is not stable and will change in the future, hence the\nlack of docs. For now take a look at the example\nhttps://github.com/denoland/deno/tree/main/test_plugin" + "**UNSTABLE**: new API, yet to be vetted.\n\nOpen and initialize a plugin.\n\n```ts\nimport { assert } from \"https://deno.land/std/testing/asserts.ts\";\nconst rid = Deno.openPlugin(\"./path/to/some/plugin.so\");\n\n// The Deno.core namespace is needed to interact with plugins, but this is\n// internal so we use ts-ignore to skip type checking these calls.\n// @ts-ignore\nconst { op_test_sync, op_test_async } = Deno.core.ops();\n\nassert(op_test_sync);\nassert(op_test_async);\n\n// @ts-ignore\nconst result = Deno.core.opSync(\"op_test_sync\");\n\n// @ts-ignore\nconst result = await Deno.core.opAsync(\"op_test_sync\");\n```\n\nRequires `allow-plugin` permission.\n\nThe plugin system is not stable and will change in the future, hence the\nlack of docs. For now take a look at the example\nhttps://github.com/denoland/deno/tree/main/test_plugin" ], "range":{ "start":{ |