summaryrefslogtreecommitdiff
path: root/tests/specs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/specs')
-rw-r--r--tests/specs/check/check_broadcast_channel/__test__.jsonc5
-rw-r--r--tests/specs/check/check_broadcast_channel/broadcast_channel.ts1
-rw-r--r--tests/specs/check/check_deno_not_found/__test__.jsonc5
-rw-r--r--tests/specs/check/check_deno_not_found/deno_not_found/main.out4
-rw-r--r--tests/specs/check/check_deno_not_found/deno_not_found/main.ts4
-rw-r--r--tests/specs/check/check_dts/__test__.jsonc5
-rw-r--r--tests/specs/check/check_dts/dts/check_dts.d.ts2
-rw-r--r--tests/specs/check/check_dts/dts/check_dts.out4
-rw-r--r--tests/specs/check/check_imported_files_listed_in_exclude_option/__test__.jsonc5
-rw-r--r--tests/specs/check/check_imported_files_listed_in_exclude_option/exclude_option/deno.exclude_dir.json5
-rw-r--r--tests/specs/check/check_imported_files_listed_in_exclude_option/exclude_option/deno.exclude_glob.json5
-rw-r--r--tests/specs/check/check_imported_files_listed_in_exclude_option/exclude_option/deno.json3
-rw-r--r--tests/specs/check/check_imported_files_listed_in_exclude_option/exclude_option/exclude_option.ts.error.out4
-rw-r--r--tests/specs/check/check_imported_files_listed_in_exclude_option/exclude_option/ignored/index.ts1
-rw-r--r--tests/specs/check/check_imported_files_listed_in_exclude_option/exclude_option/index.ts5
-rw-r--r--tests/specs/check/check_jsximportsource_importmap_config/__test__.jsonc4
-rw-r--r--tests/specs/check/check_jsximportsource_importmap_config/jsximportsource_importmap_config/deno.json7
-rw-r--r--tests/specs/check/check_jsximportsource_importmap_config/jsximportsource_importmap_config/import_map.json5
-rw-r--r--tests/specs/check/check_jsximportsource_importmap_config/jsximportsource_importmap_config/jsx_runtime.ts4
-rw-r--r--tests/specs/check/check_jsximportsource_importmap_config/jsximportsource_importmap_config/main.tsx1
-rw-r--r--tests/specs/check/check_no_error_truncation/__test__.jsonc5
-rw-r--r--tests/specs/check/check_no_error_truncation/no_error_truncation/deno.json5
-rw-r--r--tests/specs/check/check_no_error_truncation/no_error_truncation/main.out11
-rw-r--r--tests/specs/check/check_no_error_truncation/no_error_truncation/main.ts12
-rw-r--r--tests/specs/check/check_node_builtin_modules_js/__test__.jsonc5
-rw-r--r--tests/specs/check/check_node_builtin_modules_js/node_builtin_modules/mod.js3
-rw-r--r--tests/specs/check/check_node_builtin_modules_js/node_builtin_modules/mod.js.out5
-rw-r--r--tests/specs/check/check_node_builtin_modules_js/node_builtin_modules/mod.ts9
-rw-r--r--tests/specs/check/check_node_builtin_modules_js/node_builtin_modules/mod.ts.out13
-rw-r--r--tests/specs/check/check_node_builtin_modules_ts/__test__.jsonc5
-rw-r--r--tests/specs/check/check_node_builtin_modules_ts/node_builtin_modules/mod.js3
-rw-r--r--tests/specs/check/check_node_builtin_modules_ts/node_builtin_modules/mod.js.out5
-rw-r--r--tests/specs/check/check_node_builtin_modules_ts/node_builtin_modules/mod.ts9
-rw-r--r--tests/specs/check/check_node_builtin_modules_ts/node_builtin_modules/mod.ts.out13
-rw-r--r--tests/specs/check/check_npm_install_diagnostics/__test__.jsonc5
-rw-r--r--tests/specs/check/check_npm_install_diagnostics/npm_install_diagnostics/main.out11
-rw-r--r--tests/specs/check/check_npm_install_diagnostics/npm_install_diagnostics/main.ts2
-rw-r--r--tests/specs/check/check_static_response_json/__test__.jsonc5
-rw-r--r--tests/specs/check/check_static_response_json/response_json.ts5
-rw-r--r--tests/specs/check/check_with_exclude_option_by_dir/__test__.jsonc5
-rw-r--r--tests/specs/check/check_with_exclude_option_by_dir/exclude_option/deno.exclude_dir.json5
-rw-r--r--tests/specs/check/check_with_exclude_option_by_dir/exclude_option/deno.exclude_glob.json5
-rw-r--r--tests/specs/check/check_with_exclude_option_by_dir/exclude_option/deno.json3
-rw-r--r--tests/specs/check/check_with_exclude_option_by_dir/exclude_option/exclude_option.ts.error.out4
-rw-r--r--tests/specs/check/check_with_exclude_option_by_dir/exclude_option/ignored/index.ts1
-rw-r--r--tests/specs/check/check_with_exclude_option_by_dir/exclude_option/index.ts5
-rw-r--r--tests/specs/check/check_with_exclude_option_by_glob/__test__.jsonc5
-rw-r--r--tests/specs/check/check_with_exclude_option_by_glob/exclude_option/deno.exclude_dir.json5
-rw-r--r--tests/specs/check/check_with_exclude_option_by_glob/exclude_option/deno.exclude_glob.json5
-rw-r--r--tests/specs/check/check_with_exclude_option_by_glob/exclude_option/deno.json3
-rw-r--r--tests/specs/check/check_with_exclude_option_by_glob/exclude_option/exclude_option.ts.error.out4
-rw-r--r--tests/specs/check/check_with_exclude_option_by_glob/exclude_option/ignored/index.ts1
-rw-r--r--tests/specs/check/check_with_exclude_option_by_glob/exclude_option/index.ts5
-rw-r--r--tests/specs/check/check_without_exclude_option/__test__.jsonc5
-rw-r--r--tests/specs/check/check_without_exclude_option/exclude_option/deno.exclude_dir.json5
-rw-r--r--tests/specs/check/check_without_exclude_option/exclude_option/deno.exclude_glob.json5
-rw-r--r--tests/specs/check/check_without_exclude_option/exclude_option/deno.json3
-rw-r--r--tests/specs/check/check_without_exclude_option/exclude_option/exclude_option.ts.error.out4
-rw-r--r--tests/specs/check/check_without_exclude_option/exclude_option/ignored/index.ts1
-rw-r--r--tests/specs/check/check_without_exclude_option/exclude_option/index.ts5
-rw-r--r--tests/specs/check/declaration_header_file_with_no_exports/__test__.jsonc4
-rw-r--r--tests/specs/check/declaration_header_file_with_no_exports/declaration_header_file_with_no_exports.ts2
-rw-r--r--tests/specs/check/declaration_header_file_with_no_exports/declaration_header_file_with_no_exports_js.d.ts0
-rw-r--r--tests/specs/check/declaration_header_file_with_no_exports/declaration_header_file_with_no_exports_js.js1
-rw-r--r--tests/specs/check/jsx_not_checked/__test__.jsonc5
-rw-r--r--tests/specs/check/jsx_not_checked/jsx_not_checked/main.jsx21
-rw-r--r--tests/specs/check/jsx_not_checked/jsx_not_checked/main.out13
-rw-r--r--tests/specs/check/jsx_not_checked/jsx_not_checked/other.ts5
-rw-r--r--tests/specs/check/module_detection_force/__test__.jsonc4
-rw-r--r--tests/specs/check/module_detection_force/module_detection_force/import.ts2
-rw-r--r--tests/specs/check/module_detection_force/module_detection_force/main.ts3
71 files changed, 354 insertions, 0 deletions
diff --git a/tests/specs/check/check_broadcast_channel/__test__.jsonc b/tests/specs/check/check_broadcast_channel/__test__.jsonc
new file mode 100644
index 000000000..6190781a5
--- /dev/null
+++ b/tests/specs/check/check_broadcast_channel/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "check --quiet broadcast_channel.ts",
+ "output": "",
+ "exitCode": 0
+}
diff --git a/tests/specs/check/check_broadcast_channel/broadcast_channel.ts b/tests/specs/check/check_broadcast_channel/broadcast_channel.ts
new file mode 100644
index 000000000..6c75b4a8e
--- /dev/null
+++ b/tests/specs/check/check_broadcast_channel/broadcast_channel.ts
@@ -0,0 +1 @@
+const _channel = new BroadcastChannel("foo");
diff --git a/tests/specs/check/check_deno_not_found/__test__.jsonc b/tests/specs/check/check_deno_not_found/__test__.jsonc
new file mode 100644
index 000000000..cbc6552b3
--- /dev/null
+++ b/tests/specs/check/check_deno_not_found/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "check --quiet deno_not_found/main.ts",
+ "output": "deno_not_found/main.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/check/check_deno_not_found/deno_not_found/main.out b/tests/specs/check/check_deno_not_found/deno_not_found/main.out
new file mode 100644
index 000000000..2b6f44d1e
--- /dev/null
+++ b/tests/specs/check/check_deno_not_found/deno_not_found/main.out
@@ -0,0 +1,4 @@
+error: TS2304 [ERROR]: Cannot find name 'Deno'. Do you need to change your target library? Try changing the 'lib' compiler option to include 'deno.ns' or add a triple-slash directive to the top of your entrypoint (main file): /// <reference lib="deno.ns" />
+Deno;
+~~~~
+ at file:///[WILDCARD]/deno_not_found/main.ts:4:1
diff --git a/tests/specs/check/check_deno_not_found/deno_not_found/main.ts b/tests/specs/check/check_deno_not_found/deno_not_found/main.ts
new file mode 100644
index 000000000..3269f047a
--- /dev/null
+++ b/tests/specs/check/check_deno_not_found/deno_not_found/main.ts
@@ -0,0 +1,4 @@
+/// <reference no-default-lib="true"/>
+/// <reference lib="es5" />
+
+Deno;
diff --git a/tests/specs/check/check_dts/__test__.jsonc b/tests/specs/check/check_dts/__test__.jsonc
new file mode 100644
index 000000000..d684e2063
--- /dev/null
+++ b/tests/specs/check/check_dts/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "check --quiet dts/check_dts.d.ts",
+ "output": "dts/check_dts.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/check/check_dts/dts/check_dts.d.ts b/tests/specs/check/check_dts/dts/check_dts.d.ts
new file mode 100644
index 000000000..9cf60f063
--- /dev/null
+++ b/tests/specs/check/check_dts/dts/check_dts.d.ts
@@ -0,0 +1,2 @@
+// TS1039 [ERROR]: Initializers are not allowed in ambient contexts.
+export const a: string = Deno.version.deno;
diff --git a/tests/specs/check/check_dts/dts/check_dts.out b/tests/specs/check/check_dts/dts/check_dts.out
new file mode 100644
index 000000000..e7ff9a009
--- /dev/null
+++ b/tests/specs/check/check_dts/dts/check_dts.out
@@ -0,0 +1,4 @@
+error: TS1039 [ERROR]: Initializers are not allowed in ambient contexts.
+export const a: string = Deno.version.deno;
+ ~~~~~~~~~~~~~~~~~
+ at file:///[WILDCARD]/check_dts.d.ts:2:26
diff --git a/tests/specs/check/check_imported_files_listed_in_exclude_option/__test__.jsonc b/tests/specs/check/check_imported_files_listed_in_exclude_option/__test__.jsonc
new file mode 100644
index 000000000..1fd2d8760
--- /dev/null
+++ b/tests/specs/check/check_imported_files_listed_in_exclude_option/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "check --quiet --config exclude_option/deno.exclude_dir.json exclude_option/index.ts",
+ "output": "exclude_option/exclude_option.ts.error.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/check/check_imported_files_listed_in_exclude_option/exclude_option/deno.exclude_dir.json b/tests/specs/check/check_imported_files_listed_in_exclude_option/exclude_option/deno.exclude_dir.json
new file mode 100644
index 000000000..2019f8953
--- /dev/null
+++ b/tests/specs/check/check_imported_files_listed_in_exclude_option/exclude_option/deno.exclude_dir.json
@@ -0,0 +1,5 @@
+{
+ "exclude": [
+ "ignored"
+ ]
+}
diff --git a/tests/specs/check/check_imported_files_listed_in_exclude_option/exclude_option/deno.exclude_glob.json b/tests/specs/check/check_imported_files_listed_in_exclude_option/exclude_option/deno.exclude_glob.json
new file mode 100644
index 000000000..1d203ba08
--- /dev/null
+++ b/tests/specs/check/check_imported_files_listed_in_exclude_option/exclude_option/deno.exclude_glob.json
@@ -0,0 +1,5 @@
+{
+ "exclude": [
+ "ignored/**/*"
+ ]
+}
diff --git a/tests/specs/check/check_imported_files_listed_in_exclude_option/exclude_option/deno.json b/tests/specs/check/check_imported_files_listed_in_exclude_option/exclude_option/deno.json
new file mode 100644
index 000000000..a9eca74ca
--- /dev/null
+++ b/tests/specs/check/check_imported_files_listed_in_exclude_option/exclude_option/deno.json
@@ -0,0 +1,3 @@
+{
+ "exclude": []
+}
diff --git a/tests/specs/check/check_imported_files_listed_in_exclude_option/exclude_option/exclude_option.ts.error.out b/tests/specs/check/check_imported_files_listed_in_exclude_option/exclude_option/exclude_option.ts.error.out
new file mode 100644
index 000000000..abd1c1258
--- /dev/null
+++ b/tests/specs/check/check_imported_files_listed_in_exclude_option/exclude_option/exclude_option.ts.error.out
@@ -0,0 +1,4 @@
+error: TS2304 [ERROR]: Cannot find name 'nothing'.
+export { nothing };
+ ~~~~~~~
+ at [WILDCARD]
diff --git a/tests/specs/check/check_imported_files_listed_in_exclude_option/exclude_option/ignored/index.ts b/tests/specs/check/check_imported_files_listed_in_exclude_option/exclude_option/ignored/index.ts
new file mode 100644
index 000000000..0419cf073
--- /dev/null
+++ b/tests/specs/check/check_imported_files_listed_in_exclude_option/exclude_option/ignored/index.ts
@@ -0,0 +1 @@
+export { nothing };
diff --git a/tests/specs/check/check_imported_files_listed_in_exclude_option/exclude_option/index.ts b/tests/specs/check/check_imported_files_listed_in_exclude_option/exclude_option/index.ts
new file mode 100644
index 000000000..8335ca3a2
--- /dev/null
+++ b/tests/specs/check/check_imported_files_listed_in_exclude_option/exclude_option/index.ts
@@ -0,0 +1,5 @@
+import { nothing } from "./ignored/index.ts";
+
+const foo = 1;
+
+export { foo, nothing };
diff --git a/tests/specs/check/check_jsximportsource_importmap_config/__test__.jsonc b/tests/specs/check/check_jsximportsource_importmap_config/__test__.jsonc
new file mode 100644
index 000000000..bbe32ca9e
--- /dev/null
+++ b/tests/specs/check/check_jsximportsource_importmap_config/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "check --quiet --config jsximportsource_importmap_config/deno.json jsximportsource_importmap_config/main.tsx",
+ "output": ""
+}
diff --git a/tests/specs/check/check_jsximportsource_importmap_config/jsximportsource_importmap_config/deno.json b/tests/specs/check/check_jsximportsource_importmap_config/jsximportsource_importmap_config/deno.json
new file mode 100644
index 000000000..6d837af7c
--- /dev/null
+++ b/tests/specs/check/check_jsximportsource_importmap_config/jsximportsource_importmap_config/deno.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "jsx"
+ },
+ "importMap": "./import_map.json"
+}
diff --git a/tests/specs/check/check_jsximportsource_importmap_config/jsximportsource_importmap_config/import_map.json b/tests/specs/check/check_jsximportsource_importmap_config/jsximportsource_importmap_config/import_map.json
new file mode 100644
index 000000000..e926207af
--- /dev/null
+++ b/tests/specs/check/check_jsximportsource_importmap_config/jsximportsource_importmap_config/import_map.json
@@ -0,0 +1,5 @@
+{
+ "imports": {
+ "jsx/jsx-runtime": "./jsx_runtime.ts"
+ }
+}
diff --git a/tests/specs/check/check_jsximportsource_importmap_config/jsximportsource_importmap_config/jsx_runtime.ts b/tests/specs/check/check_jsximportsource_importmap_config/jsximportsource_importmap_config/jsx_runtime.ts
new file mode 100644
index 000000000..33a07ca73
--- /dev/null
+++ b/tests/specs/check/check_jsximportsource_importmap_config/jsximportsource_importmap_config/jsx_runtime.ts
@@ -0,0 +1,4 @@
+// deno-lint-ignore no-namespace
+export namespace JSX {
+ export type IntrinsicElements = { [key: string]: unknown };
+}
diff --git a/tests/specs/check/check_jsximportsource_importmap_config/jsximportsource_importmap_config/main.tsx b/tests/specs/check/check_jsximportsource_importmap_config/jsximportsource_importmap_config/main.tsx
new file mode 100644
index 000000000..a1eb24f0b
--- /dev/null
+++ b/tests/specs/check/check_jsximportsource_importmap_config/jsximportsource_importmap_config/main.tsx
@@ -0,0 +1 @@
+export const makeParagraph = () => <p>A paragraph!</p>;
diff --git a/tests/specs/check/check_no_error_truncation/__test__.jsonc b/tests/specs/check/check_no_error_truncation/__test__.jsonc
new file mode 100644
index 000000000..15884059c
--- /dev/null
+++ b/tests/specs/check/check_no_error_truncation/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "check --quiet no_error_truncation/main.ts --config no_error_truncation/deno.json",
+ "output": "no_error_truncation/main.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/check/check_no_error_truncation/no_error_truncation/deno.json b/tests/specs/check/check_no_error_truncation/no_error_truncation/deno.json
new file mode 100644
index 000000000..643707ccc
--- /dev/null
+++ b/tests/specs/check/check_no_error_truncation/no_error_truncation/deno.json
@@ -0,0 +1,5 @@
+{
+ "compilerOptions": {
+ "noErrorTruncation": true
+ }
+}
diff --git a/tests/specs/check/check_no_error_truncation/no_error_truncation/main.out b/tests/specs/check/check_no_error_truncation/no_error_truncation/main.out
new file mode 100644
index 000000000..13fd5aae4
--- /dev/null
+++ b/tests/specs/check/check_no_error_truncation/no_error_truncation/main.out
@@ -0,0 +1,11 @@
+error: TS2322 [ERROR]: Type '{ propertyWithAnExceedinglyLongName1: string; propertyWithAnExceedinglyLongName2: string; propertyWithAnExceedinglyLongName3: string; propertyWithAnExceedinglyLongName4: string; propertyWithAnExceedinglyLongName5: string; propertyWithAnExceedinglyLongName6: string; propertyWithAnExceedinglyLongName7: string; propertyWithAnExceedinglyLongName8: string; }' is not assignable to type 'string'.
+const _s: string = x;
+ ~~
+ at file:///[WILDCARD]/no_error_truncation/main.ts:12:7
+
+TS2454 [ERROR]: Variable 'x' is used before being assigned.
+const _s: string = x;
+ ^
+ at file:///[WILDCARD]/no_error_truncation/main.ts:12:20
+
+Found 2 errors.
diff --git a/tests/specs/check/check_no_error_truncation/no_error_truncation/main.ts b/tests/specs/check/check_no_error_truncation/no_error_truncation/main.ts
new file mode 100644
index 000000000..bb1856602
--- /dev/null
+++ b/tests/specs/check/check_no_error_truncation/no_error_truncation/main.ts
@@ -0,0 +1,12 @@
+let x: {
+ propertyWithAnExceedinglyLongName1: string;
+ propertyWithAnExceedinglyLongName2: string;
+ propertyWithAnExceedinglyLongName3: string;
+ propertyWithAnExceedinglyLongName4: string;
+ propertyWithAnExceedinglyLongName5: string;
+ propertyWithAnExceedinglyLongName6: string;
+ propertyWithAnExceedinglyLongName7: string;
+ propertyWithAnExceedinglyLongName8: string;
+};
+
+const _s: string = x;
diff --git a/tests/specs/check/check_node_builtin_modules_js/__test__.jsonc b/tests/specs/check/check_node_builtin_modules_js/__test__.jsonc
new file mode 100644
index 000000000..8f7a2a65a
--- /dev/null
+++ b/tests/specs/check/check_node_builtin_modules_js/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "check --quiet node_builtin_modules/mod.js",
+ "output": "node_builtin_modules/mod.js.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/check/check_node_builtin_modules_js/node_builtin_modules/mod.js b/tests/specs/check/check_node_builtin_modules_js/node_builtin_modules/mod.js
new file mode 100644
index 000000000..196fb9be9
--- /dev/null
+++ b/tests/specs/check/check_node_builtin_modules_js/node_builtin_modules/mod.js
@@ -0,0 +1,3 @@
+// @ts-check
+import fs from "node:fs";
+const _data = fs.readFileSync("./node_builtin.js", 123);
diff --git a/tests/specs/check/check_node_builtin_modules_js/node_builtin_modules/mod.js.out b/tests/specs/check/check_node_builtin_modules_js/node_builtin_modules/mod.js.out
new file mode 100644
index 000000000..97786ebae
--- /dev/null
+++ b/tests/specs/check/check_node_builtin_modules_js/node_builtin_modules/mod.js.out
@@ -0,0 +1,5 @@
+error: TS2769 [ERROR]: No overload matches this call.
+ [WILDCARD]
+const _data = fs.readFileSync("./node_builtin.js", 123);
+ ~~~
+ at file:///[WILDCARD]/node_builtin_modules/mod.js:3:52
diff --git a/tests/specs/check/check_node_builtin_modules_js/node_builtin_modules/mod.ts b/tests/specs/check/check_node_builtin_modules_js/node_builtin_modules/mod.ts
new file mode 100644
index 000000000..0e62353fe
--- /dev/null
+++ b/tests/specs/check/check_node_builtin_modules_js/node_builtin_modules/mod.ts
@@ -0,0 +1,9 @@
+import fs from "node:fs";
+const _data = fs.readFileSync("./node_builtin.js", 123);
+
+// check node:module specifically because for deno check it should
+// resolve to the @types/node package, but at runtime it uses a different
+// builtin object than deno_std
+import { builtinModules } from "node:module";
+// should error about being string[]
+const _testString: number[] = builtinModules;
diff --git a/tests/specs/check/check_node_builtin_modules_js/node_builtin_modules/mod.ts.out b/tests/specs/check/check_node_builtin_modules_js/node_builtin_modules/mod.ts.out
new file mode 100644
index 000000000..49b762cff
--- /dev/null
+++ b/tests/specs/check/check_node_builtin_modules_js/node_builtin_modules/mod.ts.out
@@ -0,0 +1,13 @@
+error: TS2769 [ERROR]: No overload matches this call.
+ [WILDCARD]
+const _data = fs.readFileSync("./node_builtin.js", 123);
+ ~~~
+ at file:///[WILDCARD]/node_builtin_modules/mod.ts:2:52
+
+TS2322 [ERROR]: Type 'string[]' is not assignable to type 'number[]'.
+ Type 'string' is not assignable to type 'number'.
+const _testString: number[] = builtinModules;
+ ~~~~~~~~~~~
+ at file:///[WILDCARD]/node_builtin_modules/mod.ts:9:7
+
+Found 2 errors.
diff --git a/tests/specs/check/check_node_builtin_modules_ts/__test__.jsonc b/tests/specs/check/check_node_builtin_modules_ts/__test__.jsonc
new file mode 100644
index 000000000..736885f2e
--- /dev/null
+++ b/tests/specs/check/check_node_builtin_modules_ts/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "check --quiet node_builtin_modules/mod.ts",
+ "output": "node_builtin_modules/mod.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/check/check_node_builtin_modules_ts/node_builtin_modules/mod.js b/tests/specs/check/check_node_builtin_modules_ts/node_builtin_modules/mod.js
new file mode 100644
index 000000000..196fb9be9
--- /dev/null
+++ b/tests/specs/check/check_node_builtin_modules_ts/node_builtin_modules/mod.js
@@ -0,0 +1,3 @@
+// @ts-check
+import fs from "node:fs";
+const _data = fs.readFileSync("./node_builtin.js", 123);
diff --git a/tests/specs/check/check_node_builtin_modules_ts/node_builtin_modules/mod.js.out b/tests/specs/check/check_node_builtin_modules_ts/node_builtin_modules/mod.js.out
new file mode 100644
index 000000000..97786ebae
--- /dev/null
+++ b/tests/specs/check/check_node_builtin_modules_ts/node_builtin_modules/mod.js.out
@@ -0,0 +1,5 @@
+error: TS2769 [ERROR]: No overload matches this call.
+ [WILDCARD]
+const _data = fs.readFileSync("./node_builtin.js", 123);
+ ~~~
+ at file:///[WILDCARD]/node_builtin_modules/mod.js:3:52
diff --git a/tests/specs/check/check_node_builtin_modules_ts/node_builtin_modules/mod.ts b/tests/specs/check/check_node_builtin_modules_ts/node_builtin_modules/mod.ts
new file mode 100644
index 000000000..0e62353fe
--- /dev/null
+++ b/tests/specs/check/check_node_builtin_modules_ts/node_builtin_modules/mod.ts
@@ -0,0 +1,9 @@
+import fs from "node:fs";
+const _data = fs.readFileSync("./node_builtin.js", 123);
+
+// check node:module specifically because for deno check it should
+// resolve to the @types/node package, but at runtime it uses a different
+// builtin object than deno_std
+import { builtinModules } from "node:module";
+// should error about being string[]
+const _testString: number[] = builtinModules;
diff --git a/tests/specs/check/check_node_builtin_modules_ts/node_builtin_modules/mod.ts.out b/tests/specs/check/check_node_builtin_modules_ts/node_builtin_modules/mod.ts.out
new file mode 100644
index 000000000..49b762cff
--- /dev/null
+++ b/tests/specs/check/check_node_builtin_modules_ts/node_builtin_modules/mod.ts.out
@@ -0,0 +1,13 @@
+error: TS2769 [ERROR]: No overload matches this call.
+ [WILDCARD]
+const _data = fs.readFileSync("./node_builtin.js", 123);
+ ~~~
+ at file:///[WILDCARD]/node_builtin_modules/mod.ts:2:52
+
+TS2322 [ERROR]: Type 'string[]' is not assignable to type 'number[]'.
+ Type 'string' is not assignable to type 'number'.
+const _testString: number[] = builtinModules;
+ ~~~~~~~~~~~
+ at file:///[WILDCARD]/node_builtin_modules/mod.ts:9:7
+
+Found 2 errors.
diff --git a/tests/specs/check/check_npm_install_diagnostics/__test__.jsonc b/tests/specs/check/check_npm_install_diagnostics/__test__.jsonc
new file mode 100644
index 000000000..18260d362
--- /dev/null
+++ b/tests/specs/check/check_npm_install_diagnostics/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "check --quiet npm_install_diagnostics/main.ts",
+ "output": "npm_install_diagnostics/main.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/check/check_npm_install_diagnostics/npm_install_diagnostics/main.out b/tests/specs/check/check_npm_install_diagnostics/npm_install_diagnostics/main.out
new file mode 100644
index 000000000..fe46f0e42
--- /dev/null
+++ b/tests/specs/check/check_npm_install_diagnostics/npm_install_diagnostics/main.out
@@ -0,0 +1,11 @@
+error: TS2581 [ERROR]: Cannot find name '$'. Did you mean to import jQuery? Try adding `import $ from "npm:jquery";`.
+$;
+^
+ at file:///[WILDCARD]/npm_install_diagnostics/main.ts:1:1
+
+TS2580 [ERROR]: Cannot find name 'process'.
+process;
+~~~~~~~
+ at file:///[WILDCARD]/npm_install_diagnostics/main.ts:2:1
+
+Found 2 errors.
diff --git a/tests/specs/check/check_npm_install_diagnostics/npm_install_diagnostics/main.ts b/tests/specs/check/check_npm_install_diagnostics/npm_install_diagnostics/main.ts
new file mode 100644
index 000000000..62c0c5619
--- /dev/null
+++ b/tests/specs/check/check_npm_install_diagnostics/npm_install_diagnostics/main.ts
@@ -0,0 +1,2 @@
+$;
+process;
diff --git a/tests/specs/check/check_static_response_json/__test__.jsonc b/tests/specs/check/check_static_response_json/__test__.jsonc
new file mode 100644
index 000000000..d286d3aa8
--- /dev/null
+++ b/tests/specs/check/check_static_response_json/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "check --quiet response_json.ts",
+ "output": "",
+ "exitCode": 0
+}
diff --git a/tests/specs/check/check_static_response_json/response_json.ts b/tests/specs/check/check_static_response_json/response_json.ts
new file mode 100644
index 000000000..e936f7bff
--- /dev/null
+++ b/tests/specs/check/check_static_response_json/response_json.ts
@@ -0,0 +1,5 @@
+/// <reference no-default-lib="true" />
+/// <reference lib="dom" />
+/// <reference lib="esnext" />
+
+Response.json({});
diff --git a/tests/specs/check/check_with_exclude_option_by_dir/__test__.jsonc b/tests/specs/check/check_with_exclude_option_by_dir/__test__.jsonc
new file mode 100644
index 000000000..c7fe285da
--- /dev/null
+++ b/tests/specs/check/check_with_exclude_option_by_dir/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "check --quiet --config exclude_option/deno.exclude_dir.json exclude_option/ignored/index.ts",
+ "output": "",
+ "exitCode": 0
+}
diff --git a/tests/specs/check/check_with_exclude_option_by_dir/exclude_option/deno.exclude_dir.json b/tests/specs/check/check_with_exclude_option_by_dir/exclude_option/deno.exclude_dir.json
new file mode 100644
index 000000000..2019f8953
--- /dev/null
+++ b/tests/specs/check/check_with_exclude_option_by_dir/exclude_option/deno.exclude_dir.json
@@ -0,0 +1,5 @@
+{
+ "exclude": [
+ "ignored"
+ ]
+}
diff --git a/tests/specs/check/check_with_exclude_option_by_dir/exclude_option/deno.exclude_glob.json b/tests/specs/check/check_with_exclude_option_by_dir/exclude_option/deno.exclude_glob.json
new file mode 100644
index 000000000..1d203ba08
--- /dev/null
+++ b/tests/specs/check/check_with_exclude_option_by_dir/exclude_option/deno.exclude_glob.json
@@ -0,0 +1,5 @@
+{
+ "exclude": [
+ "ignored/**/*"
+ ]
+}
diff --git a/tests/specs/check/check_with_exclude_option_by_dir/exclude_option/deno.json b/tests/specs/check/check_with_exclude_option_by_dir/exclude_option/deno.json
new file mode 100644
index 000000000..a9eca74ca
--- /dev/null
+++ b/tests/specs/check/check_with_exclude_option_by_dir/exclude_option/deno.json
@@ -0,0 +1,3 @@
+{
+ "exclude": []
+}
diff --git a/tests/specs/check/check_with_exclude_option_by_dir/exclude_option/exclude_option.ts.error.out b/tests/specs/check/check_with_exclude_option_by_dir/exclude_option/exclude_option.ts.error.out
new file mode 100644
index 000000000..abd1c1258
--- /dev/null
+++ b/tests/specs/check/check_with_exclude_option_by_dir/exclude_option/exclude_option.ts.error.out
@@ -0,0 +1,4 @@
+error: TS2304 [ERROR]: Cannot find name 'nothing'.
+export { nothing };
+ ~~~~~~~
+ at [WILDCARD]
diff --git a/tests/specs/check/check_with_exclude_option_by_dir/exclude_option/ignored/index.ts b/tests/specs/check/check_with_exclude_option_by_dir/exclude_option/ignored/index.ts
new file mode 100644
index 000000000..0419cf073
--- /dev/null
+++ b/tests/specs/check/check_with_exclude_option_by_dir/exclude_option/ignored/index.ts
@@ -0,0 +1 @@
+export { nothing };
diff --git a/tests/specs/check/check_with_exclude_option_by_dir/exclude_option/index.ts b/tests/specs/check/check_with_exclude_option_by_dir/exclude_option/index.ts
new file mode 100644
index 000000000..8335ca3a2
--- /dev/null
+++ b/tests/specs/check/check_with_exclude_option_by_dir/exclude_option/index.ts
@@ -0,0 +1,5 @@
+import { nothing } from "./ignored/index.ts";
+
+const foo = 1;
+
+export { foo, nothing };
diff --git a/tests/specs/check/check_with_exclude_option_by_glob/__test__.jsonc b/tests/specs/check/check_with_exclude_option_by_glob/__test__.jsonc
new file mode 100644
index 000000000..54700ca3d
--- /dev/null
+++ b/tests/specs/check/check_with_exclude_option_by_glob/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "check --quiet --config exclude_option/deno.exclude_glob.json exclude_option/ignored/index.ts",
+ "output": "",
+ "exitCode": 0
+}
diff --git a/tests/specs/check/check_with_exclude_option_by_glob/exclude_option/deno.exclude_dir.json b/tests/specs/check/check_with_exclude_option_by_glob/exclude_option/deno.exclude_dir.json
new file mode 100644
index 000000000..2019f8953
--- /dev/null
+++ b/tests/specs/check/check_with_exclude_option_by_glob/exclude_option/deno.exclude_dir.json
@@ -0,0 +1,5 @@
+{
+ "exclude": [
+ "ignored"
+ ]
+}
diff --git a/tests/specs/check/check_with_exclude_option_by_glob/exclude_option/deno.exclude_glob.json b/tests/specs/check/check_with_exclude_option_by_glob/exclude_option/deno.exclude_glob.json
new file mode 100644
index 000000000..1d203ba08
--- /dev/null
+++ b/tests/specs/check/check_with_exclude_option_by_glob/exclude_option/deno.exclude_glob.json
@@ -0,0 +1,5 @@
+{
+ "exclude": [
+ "ignored/**/*"
+ ]
+}
diff --git a/tests/specs/check/check_with_exclude_option_by_glob/exclude_option/deno.json b/tests/specs/check/check_with_exclude_option_by_glob/exclude_option/deno.json
new file mode 100644
index 000000000..a9eca74ca
--- /dev/null
+++ b/tests/specs/check/check_with_exclude_option_by_glob/exclude_option/deno.json
@@ -0,0 +1,3 @@
+{
+ "exclude": []
+}
diff --git a/tests/specs/check/check_with_exclude_option_by_glob/exclude_option/exclude_option.ts.error.out b/tests/specs/check/check_with_exclude_option_by_glob/exclude_option/exclude_option.ts.error.out
new file mode 100644
index 000000000..abd1c1258
--- /dev/null
+++ b/tests/specs/check/check_with_exclude_option_by_glob/exclude_option/exclude_option.ts.error.out
@@ -0,0 +1,4 @@
+error: TS2304 [ERROR]: Cannot find name 'nothing'.
+export { nothing };
+ ~~~~~~~
+ at [WILDCARD]
diff --git a/tests/specs/check/check_with_exclude_option_by_glob/exclude_option/ignored/index.ts b/tests/specs/check/check_with_exclude_option_by_glob/exclude_option/ignored/index.ts
new file mode 100644
index 000000000..0419cf073
--- /dev/null
+++ b/tests/specs/check/check_with_exclude_option_by_glob/exclude_option/ignored/index.ts
@@ -0,0 +1 @@
+export { nothing };
diff --git a/tests/specs/check/check_with_exclude_option_by_glob/exclude_option/index.ts b/tests/specs/check/check_with_exclude_option_by_glob/exclude_option/index.ts
new file mode 100644
index 000000000..8335ca3a2
--- /dev/null
+++ b/tests/specs/check/check_with_exclude_option_by_glob/exclude_option/index.ts
@@ -0,0 +1,5 @@
+import { nothing } from "./ignored/index.ts";
+
+const foo = 1;
+
+export { foo, nothing };
diff --git a/tests/specs/check/check_without_exclude_option/__test__.jsonc b/tests/specs/check/check_without_exclude_option/__test__.jsonc
new file mode 100644
index 000000000..801786fa3
--- /dev/null
+++ b/tests/specs/check/check_without_exclude_option/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "check --quiet --config exclude_option/deno.json exclude_option/ignored/index.ts",
+ "output": "exclude_option/exclude_option.ts.error.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/check/check_without_exclude_option/exclude_option/deno.exclude_dir.json b/tests/specs/check/check_without_exclude_option/exclude_option/deno.exclude_dir.json
new file mode 100644
index 000000000..2019f8953
--- /dev/null
+++ b/tests/specs/check/check_without_exclude_option/exclude_option/deno.exclude_dir.json
@@ -0,0 +1,5 @@
+{
+ "exclude": [
+ "ignored"
+ ]
+}
diff --git a/tests/specs/check/check_without_exclude_option/exclude_option/deno.exclude_glob.json b/tests/specs/check/check_without_exclude_option/exclude_option/deno.exclude_glob.json
new file mode 100644
index 000000000..1d203ba08
--- /dev/null
+++ b/tests/specs/check/check_without_exclude_option/exclude_option/deno.exclude_glob.json
@@ -0,0 +1,5 @@
+{
+ "exclude": [
+ "ignored/**/*"
+ ]
+}
diff --git a/tests/specs/check/check_without_exclude_option/exclude_option/deno.json b/tests/specs/check/check_without_exclude_option/exclude_option/deno.json
new file mode 100644
index 000000000..a9eca74ca
--- /dev/null
+++ b/tests/specs/check/check_without_exclude_option/exclude_option/deno.json
@@ -0,0 +1,3 @@
+{
+ "exclude": []
+}
diff --git a/tests/specs/check/check_without_exclude_option/exclude_option/exclude_option.ts.error.out b/tests/specs/check/check_without_exclude_option/exclude_option/exclude_option.ts.error.out
new file mode 100644
index 000000000..abd1c1258
--- /dev/null
+++ b/tests/specs/check/check_without_exclude_option/exclude_option/exclude_option.ts.error.out
@@ -0,0 +1,4 @@
+error: TS2304 [ERROR]: Cannot find name 'nothing'.
+export { nothing };
+ ~~~~~~~
+ at [WILDCARD]
diff --git a/tests/specs/check/check_without_exclude_option/exclude_option/ignored/index.ts b/tests/specs/check/check_without_exclude_option/exclude_option/ignored/index.ts
new file mode 100644
index 000000000..0419cf073
--- /dev/null
+++ b/tests/specs/check/check_without_exclude_option/exclude_option/ignored/index.ts
@@ -0,0 +1 @@
+export { nothing };
diff --git a/tests/specs/check/check_without_exclude_option/exclude_option/index.ts b/tests/specs/check/check_without_exclude_option/exclude_option/index.ts
new file mode 100644
index 000000000..8335ca3a2
--- /dev/null
+++ b/tests/specs/check/check_without_exclude_option/exclude_option/index.ts
@@ -0,0 +1,5 @@
+import { nothing } from "./ignored/index.ts";
+
+const foo = 1;
+
+export { foo, nothing };
diff --git a/tests/specs/check/declaration_header_file_with_no_exports/__test__.jsonc b/tests/specs/check/declaration_header_file_with_no_exports/__test__.jsonc
new file mode 100644
index 000000000..08fc0a2d6
--- /dev/null
+++ b/tests/specs/check/declaration_header_file_with_no_exports/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "check --quiet declaration_header_file_with_no_exports.ts",
+ "output": ""
+}
diff --git a/tests/specs/check/declaration_header_file_with_no_exports/declaration_header_file_with_no_exports.ts b/tests/specs/check/declaration_header_file_with_no_exports/declaration_header_file_with_no_exports.ts
new file mode 100644
index 000000000..ef5da7a38
--- /dev/null
+++ b/tests/specs/check/declaration_header_file_with_no_exports/declaration_header_file_with_no_exports.ts
@@ -0,0 +1,2 @@
+import * as foo from "./declaration_header_file_with_no_exports_js.js";
+console.log(foo);
diff --git a/tests/specs/check/declaration_header_file_with_no_exports/declaration_header_file_with_no_exports_js.d.ts b/tests/specs/check/declaration_header_file_with_no_exports/declaration_header_file_with_no_exports_js.d.ts
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/tests/specs/check/declaration_header_file_with_no_exports/declaration_header_file_with_no_exports_js.d.ts
diff --git a/tests/specs/check/declaration_header_file_with_no_exports/declaration_header_file_with_no_exports_js.js b/tests/specs/check/declaration_header_file_with_no_exports/declaration_header_file_with_no_exports_js.js
new file mode 100644
index 000000000..b8ae2bcef
--- /dev/null
+++ b/tests/specs/check/declaration_header_file_with_no_exports/declaration_header_file_with_no_exports_js.js
@@ -0,0 +1 @@
+/// <reference types="./declaration_header_file_with_no_exports_js.d.ts" />
diff --git a/tests/specs/check/jsx_not_checked/__test__.jsonc b/tests/specs/check/jsx_not_checked/__test__.jsonc
new file mode 100644
index 000000000..dbaa9b2ea
--- /dev/null
+++ b/tests/specs/check/jsx_not_checked/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "check jsx_not_checked/main.jsx",
+ "output": "jsx_not_checked/main.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/check/jsx_not_checked/jsx_not_checked/main.jsx b/tests/specs/check/jsx_not_checked/jsx_not_checked/main.jsx
new file mode 100644
index 000000000..8de05f9f7
--- /dev/null
+++ b/tests/specs/check/jsx_not_checked/jsx_not_checked/main.jsx
@@ -0,0 +1,21 @@
+// should not error about jsx-runtime not being found in types here
+/** @jsxImportSource npm:react@18.2.0 */
+
+import "./other.ts";
+
+export default (
+ <>
+ <h1>Hello world</h1>
+ <p>This is a JSX page</p>
+ </>
+);
+
+/**
+ * @param {number} a
+ * @param {number} b
+ */
+function add(a, b) {
+ return a + b;
+}
+
+console.log(add("1", "2"));
diff --git a/tests/specs/check/jsx_not_checked/jsx_not_checked/main.out b/tests/specs/check/jsx_not_checked/jsx_not_checked/main.out
new file mode 100644
index 000000000..25165044c
--- /dev/null
+++ b/tests/specs/check/jsx_not_checked/jsx_not_checked/main.out
@@ -0,0 +1,13 @@
+[UNORDERED_START]
+Download http://localhost:4260/react
+Download http://localhost:4260/loose-envify
+Download http://localhost:4260/js-tokens
+Download http://localhost:4260/react/react-18.2.0.tgz
+Download http://localhost:4260/loose-envify/loose-envify-1.4.0.tgz
+Download http://localhost:4260/js-tokens/js-tokens-4.0.0.tgz
+[UNORDERED_END]
+Check file:///[WILDCARD]/jsx_not_checked/main.jsx
+error: TS2345 [ERROR]: Argument of type 'string' is not assignable to parameter of type 'number'.
+console.log(add("1", "2"));
+ ~~~
+ at file:///[WILDCARD]/other.ts:5:17
diff --git a/tests/specs/check/jsx_not_checked/jsx_not_checked/other.ts b/tests/specs/check/jsx_not_checked/jsx_not_checked/other.ts
new file mode 100644
index 000000000..47995cb0f
--- /dev/null
+++ b/tests/specs/check/jsx_not_checked/jsx_not_checked/other.ts
@@ -0,0 +1,5 @@
+function add(a: number, b: number) {
+ return a + b;
+}
+
+console.log(add("1", "2"));
diff --git a/tests/specs/check/module_detection_force/__test__.jsonc b/tests/specs/check/module_detection_force/__test__.jsonc
new file mode 100644
index 000000000..9c892bd72
--- /dev/null
+++ b/tests/specs/check/module_detection_force/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "check --quiet module_detection_force/main.ts",
+ "output": ""
+}
diff --git a/tests/specs/check/module_detection_force/module_detection_force/import.ts b/tests/specs/check/module_detection_force/module_detection_force/import.ts
new file mode 100644
index 000000000..66b229870
--- /dev/null
+++ b/tests/specs/check/module_detection_force/module_detection_force/import.ts
@@ -0,0 +1,2 @@
+const a = 2;
+console.log(a);
diff --git a/tests/specs/check/module_detection_force/module_detection_force/main.ts b/tests/specs/check/module_detection_force/module_detection_force/main.ts
new file mode 100644
index 000000000..a55c9962b
--- /dev/null
+++ b/tests/specs/check/module_detection_force/module_detection_force/main.ts
@@ -0,0 +1,3 @@
+const a = 1;
+await import("./import.ts");
+console.log(a);