summaryrefslogtreecommitdiff
path: root/tests/specs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2024-11-01 12:27:00 -0400
committerGitHub <noreply@github.com>2024-11-01 12:27:00 -0400
commit826e42a5b5880c974ae019a7a21aade6a718062c (patch)
treea46502ecc3c73e4f7fc3a4517d83c7b2f3d0c0d3 /tests/specs
parent4774eab64d5176e997b6431f03f075782321b3d9 (diff)
fix: improved support for cjs and cts modules (#26558)
* cts support * better cjs/cts type checking * deno compile cjs/cts support * More efficient detect cjs (going towards stabilization) * Determination of whether .js, .ts, .jsx, or .tsx is cjs or esm is only done after loading * Support `import x = require(...);` Co-authored-by: Bartek IwaƄczuk <biwanczuk@gmail.com>
Diffstat (limited to 'tests/specs')
-rw-r--r--tests/specs/check/css_import/exists_run_with_check.out2
-rw-r--r--tests/specs/compile/cjs/__test__.jsonc24
-rw-r--r--tests/specs/compile/cjs/add.cjs1
-rw-r--r--tests/specs/compile/cjs/divide.cts1
-rw-r--r--tests/specs/compile/cjs/main.js5
-rw-r--r--tests/specs/compile/cjs/multiply.cts4
-rw-r--r--tests/specs/compile/cjs/output.out2
-rw-r--r--tests/specs/compile/cjs/reexport.cjs1
-rw-r--r--tests/specs/compile/detect_cjs/__test__.jsonc11
-rw-r--r--tests/specs/compile/detect_cjs/add.js2
-rw-r--r--tests/specs/compile/detect_cjs/compile.out1
-rw-r--r--tests/specs/compile/detect_cjs/output.out3
-rw-r--r--tests/specs/compile/detect_cjs/package.json5
-rw-r--r--tests/specs/compile/detect_cjs/subtract.ts2
-rw-r--r--tests/specs/npm/require_type_commonjs/__test__.jsonc3
-rw-r--r--tests/specs/npm/require_type_commonjs/main.out5
-rw-r--r--tests/specs/npm/require_type_commonjs/main.ts3
-rw-r--r--tests/specs/npm/typescript_file_in_package/__test__.jsonc4
-rw-r--r--tests/specs/npm/typescript_file_in_package/main.out3
-rw-r--r--tests/specs/npm/typescript_file_in_package/main.ts (renamed from tests/specs/npm/typescript_file_in_package/typescript_file_in_package/main.ts)0
-rw-r--r--tests/specs/npm/typescript_file_in_package/typescript_file_in_package/main.out6
-rw-r--r--tests/specs/run/cjs/main_module/__test__.jsonc4
-rw-r--r--tests/specs/run/cjs/main_module/main.cjs1
-rw-r--r--tests/specs/run/cjs/main_module/main.out5
-rw-r--r--tests/specs/run/cjs/reexport_non_analyzable/__test__.jsonc (renamed from tests/specs/run/cjs_reexport_non_analyzable/__test__.jsonc)0
-rw-r--r--tests/specs/run/cjs/reexport_non_analyzable/deno.json (renamed from tests/specs/run/cjs_reexport_non_analyzable/deno.json)0
-rw-r--r--tests/specs/run/cjs/reexport_non_analyzable/main.ts (renamed from tests/specs/run/cjs_reexport_non_analyzable/main.ts)0
-rw-r--r--tests/specs/run/cjs/reexport_non_analyzable/node_modules/foo.cjs (renamed from tests/specs/run/cjs_reexport_non_analyzable/node_modules/foo.cjs)0
-rw-r--r--tests/specs/run/cjs/unprepared/__test__.jsonc4
-rw-r--r--tests/specs/run/cjs/unprepared/file.cjs7
-rw-r--r--tests/specs/run/cjs/unprepared/main.out1
-rw-r--r--tests/specs/run/cjs/unprepared/main.ts7
-rw-r--r--tests/specs/run/cjs/unprepared/output.cjs3
-rw-r--r--tests/specs/run/cts/cjs_import_cts/__test__.jsonc13
-rw-r--r--tests/specs/run/cts/cjs_import_cts/add.cts (renamed from tests/specs/run/package_json_type/commonjs/add.js)0
-rw-r--r--tests/specs/run/cts/cjs_import_cts/check.out17
-rw-r--r--tests/specs/run/cts/cjs_import_cts/main.js3
-rw-r--r--tests/specs/run/cts/cjs_import_cts/main.out1
-rw-r--r--tests/specs/run/cts/cjs_import_cts/subtract.cjs3
-rw-r--r--tests/specs/run/cts/import_export_equals/__test__.jsonc17
-rw-r--r--tests/specs/run/cts/import_export_equals/add.cts3
-rw-r--r--tests/specs/run/cts/import_export_equals/main.cts3
-rw-r--r--tests/specs/run/cts/import_export_equals/main.out2
-rw-r--r--tests/specs/run/cts/import_export_equals/mod.mts3
-rw-r--r--tests/specs/run/cts/import_export_equals/mod.mts.check.out5
-rw-r--r--tests/specs/run/cts/import_export_equals/mod.mts.out1
-rw-r--r--tests/specs/run/cts/main/__test__.jsonc4
-rw-r--r--tests/specs/run/cts/main/import_main.cjs1
-rw-r--r--tests/specs/run/cts/main/main.cts5
-rw-r--r--tests/specs/run/cts/main/main.out1
-rw-r--r--tests/specs/run/package_json_type/commonjs/basic/__test__.jsonc (renamed from tests/specs/run/package_json_type/commonjs/__test__.jsonc)0
-rw-r--r--tests/specs/run/package_json_type/commonjs/basic/add.js3
-rw-r--r--tests/specs/run/package_json_type/commonjs/basic/deno.jsonc (renamed from tests/specs/run/package_json_type/commonjs/deno.jsonc)0
-rw-r--r--tests/specs/run/package_json_type/commonjs/basic/import_import_meta.js (renamed from tests/specs/run/package_json_type/commonjs/import_import_meta.js)0
-rw-r--r--tests/specs/run/package_json_type/commonjs/basic/import_meta.js (renamed from tests/specs/run/package_json_type/commonjs/import_meta.js)0
-rw-r--r--tests/specs/run/package_json_type/commonjs/basic/main_cjs.js (renamed from tests/specs/run/package_json_type/commonjs/main_cjs.js)0
-rw-r--r--tests/specs/run/package_json_type/commonjs/basic/main_esm.js (renamed from tests/specs/run/package_json_type/commonjs/main_esm.js)0
-rw-r--r--tests/specs/run/package_json_type/commonjs/basic/main_esm_import_meta.js (renamed from tests/specs/run/package_json_type/commonjs/main_esm_import_meta.js)0
-rw-r--r--tests/specs/run/package_json_type/commonjs/basic/main_esm_import_meta.out (renamed from tests/specs/run/package_json_type/commonjs/main_esm_import_meta.out)0
-rw-r--r--tests/specs/run/package_json_type/commonjs/basic/main_mix.js (renamed from tests/specs/run/package_json_type/commonjs/main_mix.js)0
-rw-r--r--tests/specs/run/package_json_type/commonjs/basic/main_mix.out (renamed from tests/specs/run/package_json_type/commonjs/main_mix.out)0
-rw-r--r--tests/specs/run/package_json_type/commonjs/basic/not_import_meta.js (renamed from tests/specs/run/package_json_type/commonjs/not_import_meta.js)0
-rw-r--r--tests/specs/run/package_json_type/commonjs/basic/package.json (renamed from tests/specs/run/package_json_type/commonjs/package.json)0
-rw-r--r--tests/specs/run/package_json_type/commonjs/basic/tla.js (renamed from tests/specs/run/package_json_type/commonjs/tla.js)0
-rw-r--r--tests/specs/run/package_json_type/commonjs/jsx/__test__.jsonc5
-rw-r--r--tests/specs/run/package_json_type/commonjs/jsx/add.js3
-rw-r--r--tests/specs/run/package_json_type/commonjs/jsx/deno.jsonc10
-rw-r--r--tests/specs/run/package_json_type/commonjs/jsx/main.jsx7
-rw-r--r--tests/specs/run/package_json_type/commonjs/jsx/main.out4
-rw-r--r--tests/specs/run/package_json_type/commonjs/jsx/package.json7
-rw-r--r--tests/specs/run/package_json_type/commonjs/jsx/tsx.tsx5
-rw-r--r--tests/specs/run/remote_cjs_main/output.out2
-rw-r--r--tests/specs/run/require_esm/main.out2
73 files changed, 223 insertions, 27 deletions
diff --git a/tests/specs/check/css_import/exists_run_with_check.out b/tests/specs/check/css_import/exists_run_with_check.out
index 1a1dafeb7..315769e40 100644
--- a/tests/specs/check/css_import/exists_run_with_check.out
+++ b/tests/specs/check/css_import/exists_run_with_check.out
@@ -1,3 +1,3 @@
-error: Expected a JavaScript or TypeScript module, but identified a Unknown module. Importing these types of modules is currently not supported.
+error: Expected a JavaScript or TypeScript module, but identified a Css module. Importing these types of modules is currently not supported.
Specifier: file:///[WILDLINE]/app.css
at file:///[WILDLINE]/exists.ts:2:8
diff --git a/tests/specs/compile/cjs/__test__.jsonc b/tests/specs/compile/cjs/__test__.jsonc
new file mode 100644
index 000000000..9bdcf4724
--- /dev/null
+++ b/tests/specs/compile/cjs/__test__.jsonc
@@ -0,0 +1,24 @@
+{
+ "tempDir": true,
+ "steps": [{
+ "if": "unix",
+ "args": "compile --output main main.js",
+ "output": "[WILDCARD]"
+ }, {
+ "if": "unix",
+ "commandName": "./main",
+ "args": [],
+ "output": "output.out",
+ "exitCode": 0
+ }, {
+ "if": "windows",
+ "args": "compile --output main.exe main.js",
+ "output": "[WILDCARD]"
+ }, {
+ "if": "windows",
+ "commandName": "./main.exe",
+ "args": [],
+ "output": "output.out",
+ "exitCode": 0
+ }]
+}
diff --git a/tests/specs/compile/cjs/add.cjs b/tests/specs/compile/cjs/add.cjs
new file mode 100644
index 000000000..bf9060126
--- /dev/null
+++ b/tests/specs/compile/cjs/add.cjs
@@ -0,0 +1 @@
+module.exports = (a, b) => a + b;
diff --git a/tests/specs/compile/cjs/divide.cts b/tests/specs/compile/cjs/divide.cts
new file mode 100644
index 000000000..d89a600a4
--- /dev/null
+++ b/tests/specs/compile/cjs/divide.cts
@@ -0,0 +1 @@
+module.exports.divide = (a: number, b: number) => a / b;
diff --git a/tests/specs/compile/cjs/main.js b/tests/specs/compile/cjs/main.js
new file mode 100644
index 000000000..c2a8c7be0
--- /dev/null
+++ b/tests/specs/compile/cjs/main.js
@@ -0,0 +1,5 @@
+import { add } from "./reexport.cjs";
+import { multiply } from "./multiply.cts";
+
+console.log(add(1, 2));
+console.log(multiply(2, 3));
diff --git a/tests/specs/compile/cjs/multiply.cts b/tests/specs/compile/cjs/multiply.cts
new file mode 100644
index 000000000..3c0618cfc
--- /dev/null
+++ b/tests/specs/compile/cjs/multiply.cts
@@ -0,0 +1,4 @@
+/// <reference types="npm:@types/node" />
+exports.multiply = function (a: number, b: number): number {
+ return require("./divide.cts").divide(a, 1 / b);
+};
diff --git a/tests/specs/compile/cjs/output.out b/tests/specs/compile/cjs/output.out
new file mode 100644
index 000000000..2559e5c49
--- /dev/null
+++ b/tests/specs/compile/cjs/output.out
@@ -0,0 +1,2 @@
+3
+6
diff --git a/tests/specs/compile/cjs/reexport.cjs b/tests/specs/compile/cjs/reexport.cjs
new file mode 100644
index 000000000..af7cecfdf
--- /dev/null
+++ b/tests/specs/compile/cjs/reexport.cjs
@@ -0,0 +1 @@
+module.exports.add = require("./add.cjs");
diff --git a/tests/specs/compile/detect_cjs/__test__.jsonc b/tests/specs/compile/detect_cjs/__test__.jsonc
index 32bebb7a5..0abf121f0 100644
--- a/tests/specs/compile/detect_cjs/__test__.jsonc
+++ b/tests/specs/compile/detect_cjs/__test__.jsonc
@@ -1,24 +1,27 @@
{
"tempDir": true,
"steps": [{
+ "args": "install",
+ "output": "[WILDCARD]"
+ }, {
"if": "unix",
- "args": "compile --allow-read --output main main.js",
+ "args": "compile --output main main.js",
"output": "compile.out"
}, {
"if": "unix",
"commandName": "./main",
"args": [],
"output": "output.out",
- "exitCode": 1
+ "exitCode": 0
}, {
"if": "windows",
- "args": "compile --allow-read --output main.exe main.js",
+ "args": "compile --output main.exe main.js",
"output": "compile.out"
}, {
"if": "windows",
"commandName": "./main.exe",
"args": [],
"output": "output.out",
- "exitCode": 1
+ "exitCode": 0
}]
}
diff --git a/tests/specs/compile/detect_cjs/add.js b/tests/specs/compile/detect_cjs/add.js
index 2a886fbc1..94b0263f0 100644
--- a/tests/specs/compile/detect_cjs/add.js
+++ b/tests/specs/compile/detect_cjs/add.js
@@ -1,3 +1,3 @@
module.exports.add = function (a, b) {
- return a + b;
+ return require("./subtract.ts").subtract(a, -b);
};
diff --git a/tests/specs/compile/detect_cjs/compile.out b/tests/specs/compile/detect_cjs/compile.out
index 6509b7f29..913e363c3 100644
--- a/tests/specs/compile/detect_cjs/compile.out
+++ b/tests/specs/compile/detect_cjs/compile.out
@@ -1,3 +1,2 @@
-Warning --unstable-detect-cjs is not properly supported in deno compile. The compiled executable may encounter runtime errors.
Check file:///[WILDLINE]/main.js
Compile file:///[WILDLINE]
diff --git a/tests/specs/compile/detect_cjs/output.out b/tests/specs/compile/detect_cjs/output.out
index e1c27b8dc..00750edc0 100644
--- a/tests/specs/compile/detect_cjs/output.out
+++ b/tests/specs/compile/detect_cjs/output.out
@@ -1,2 +1 @@
-error: Uncaught SyntaxError: The requested module './add.js' does not provide an export named 'add'
- at <anonymous> (file:///[WILDLINE])
+3
diff --git a/tests/specs/compile/detect_cjs/package.json b/tests/specs/compile/detect_cjs/package.json
index 5bbefffba..6e65b32ed 100644
--- a/tests/specs/compile/detect_cjs/package.json
+++ b/tests/specs/compile/detect_cjs/package.json
@@ -1,3 +1,6 @@
{
- "type": "commonjs"
+ "type": "commonjs",
+ "dependencies": {
+ "@types/node": "*"
+ }
}
diff --git a/tests/specs/compile/detect_cjs/subtract.ts b/tests/specs/compile/detect_cjs/subtract.ts
new file mode 100644
index 000000000..e4f6760b7
--- /dev/null
+++ b/tests/specs/compile/detect_cjs/subtract.ts
@@ -0,0 +1,2 @@
+/// <reference types="npm:@types/node" />
+module.exports.subtract = (a: number, b: number) => a - b;
diff --git a/tests/specs/npm/require_type_commonjs/__test__.jsonc b/tests/specs/npm/require_type_commonjs/__test__.jsonc
index c9ba97ff5..a71173ce3 100644
--- a/tests/specs/npm/require_type_commonjs/__test__.jsonc
+++ b/tests/specs/npm/require_type_commonjs/__test__.jsonc
@@ -1,5 +1,4 @@
{
"args": "run --allow-read --quiet main.ts",
- "output": "main.out",
- "exitCode": 1
+ "output": "main.out"
}
diff --git a/tests/specs/npm/require_type_commonjs/main.out b/tests/specs/npm/require_type_commonjs/main.out
index d715db8a9..00750edc0 100644
--- a/tests/specs/npm/require_type_commonjs/main.out
+++ b/tests/specs/npm/require_type_commonjs/main.out
@@ -1,4 +1 @@
-error: 'import', and 'export' cannot be used outside of module code at file://[WILDCARD]/@denotest/type-commonjs/1.0.0/index.js:1:1
-
- export {};
- ~~~~~~
+3
diff --git a/tests/specs/npm/require_type_commonjs/main.ts b/tests/specs/npm/require_type_commonjs/main.ts
index 243eb216e..95ec6099e 100644
--- a/tests/specs/npm/require_type_commonjs/main.ts
+++ b/tests/specs/npm/require_type_commonjs/main.ts
@@ -1 +1,2 @@
-import "npm:@denotest/type-commonjs";
+import { add } from "npm:@denotest/type-commonjs";
+console.log(add(1, 2));
diff --git a/tests/specs/npm/typescript_file_in_package/__test__.jsonc b/tests/specs/npm/typescript_file_in_package/__test__.jsonc
index 08979ed25..7b5c5e1b6 100644
--- a/tests/specs/npm/typescript_file_in_package/__test__.jsonc
+++ b/tests/specs/npm/typescript_file_in_package/__test__.jsonc
@@ -1,5 +1,5 @@
{
- "args": "run typescript_file_in_package/main.ts",
- "output": "typescript_file_in_package/main.out",
+ "args": "run main.ts",
+ "output": "main.out",
"exitCode": 1
}
diff --git a/tests/specs/npm/typescript_file_in_package/main.out b/tests/specs/npm/typescript_file_in_package/main.out
new file mode 100644
index 000000000..58290a873
--- /dev/null
+++ b/tests/specs/npm/typescript_file_in_package/main.out
@@ -0,0 +1,3 @@
+Download http://localhost:4260/@denotest%2ftypescript-file
+Download http://localhost:4260/@denotest/typescript-file/1.0.0.tgz
+error: TypeScript files are not supported in npm packages: file:///[WILDCARD]/@denotest/typescript-file/1.0.0/index.ts
diff --git a/tests/specs/npm/typescript_file_in_package/typescript_file_in_package/main.ts b/tests/specs/npm/typescript_file_in_package/main.ts
index aefc38ebe..aefc38ebe 100644
--- a/tests/specs/npm/typescript_file_in_package/typescript_file_in_package/main.ts
+++ b/tests/specs/npm/typescript_file_in_package/main.ts
diff --git a/tests/specs/npm/typescript_file_in_package/typescript_file_in_package/main.out b/tests/specs/npm/typescript_file_in_package/typescript_file_in_package/main.out
deleted file mode 100644
index b3faa8790..000000000
--- a/tests/specs/npm/typescript_file_in_package/typescript_file_in_package/main.out
+++ /dev/null
@@ -1,6 +0,0 @@
-Download http://localhost:4260/@denotest%2ftypescript-file
-Download http://localhost:4260/@denotest/typescript-file/1.0.0.tgz
-error: Could not resolve 'npm:@denotest/typescript-file@1.0.0'.
-
-Caused by:
- TypeScript files are not supported in npm packages: file:///[WILDCARD]/@denotest/typescript-file/1.0.0/index.ts
diff --git a/tests/specs/run/cjs/main_module/__test__.jsonc b/tests/specs/run/cjs/main_module/__test__.jsonc
new file mode 100644
index 000000000..e756a6362
--- /dev/null
+++ b/tests/specs/run/cjs/main_module/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-read main.cjs",
+ "output": "main.out"
+}
diff --git a/tests/specs/run/cjs/main_module/main.cjs b/tests/specs/run/cjs/main_module/main.cjs
new file mode 100644
index 000000000..2a4c57ab1
--- /dev/null
+++ b/tests/specs/run/cjs/main_module/main.cjs
@@ -0,0 +1 @@
+console.log(require.main);
diff --git a/tests/specs/run/cjs/main_module/main.out b/tests/specs/run/cjs/main_module/main.out
new file mode 100644
index 000000000..93b86d27e
--- /dev/null
+++ b/tests/specs/run/cjs/main_module/main.out
@@ -0,0 +1,5 @@
+Module {
+ id: ".",
+ [WILDCARD]
+ filename: "[WILDCARD]main.cjs",
+[WILDCARD] \ No newline at end of file
diff --git a/tests/specs/run/cjs_reexport_non_analyzable/__test__.jsonc b/tests/specs/run/cjs/reexport_non_analyzable/__test__.jsonc
index 81f29b685..81f29b685 100644
--- a/tests/specs/run/cjs_reexport_non_analyzable/__test__.jsonc
+++ b/tests/specs/run/cjs/reexport_non_analyzable/__test__.jsonc
diff --git a/tests/specs/run/cjs_reexport_non_analyzable/deno.json b/tests/specs/run/cjs/reexport_non_analyzable/deno.json
index fde86a1ef..fde86a1ef 100644
--- a/tests/specs/run/cjs_reexport_non_analyzable/deno.json
+++ b/tests/specs/run/cjs/reexport_non_analyzable/deno.json
diff --git a/tests/specs/run/cjs_reexport_non_analyzable/main.ts b/tests/specs/run/cjs/reexport_non_analyzable/main.ts
index a9e32af4e..a9e32af4e 100644
--- a/tests/specs/run/cjs_reexport_non_analyzable/main.ts
+++ b/tests/specs/run/cjs/reexport_non_analyzable/main.ts
diff --git a/tests/specs/run/cjs_reexport_non_analyzable/node_modules/foo.cjs b/tests/specs/run/cjs/reexport_non_analyzable/node_modules/foo.cjs
index 924d8a96a..924d8a96a 100644
--- a/tests/specs/run/cjs_reexport_non_analyzable/node_modules/foo.cjs
+++ b/tests/specs/run/cjs/reexport_non_analyzable/node_modules/foo.cjs
diff --git a/tests/specs/run/cjs/unprepared/__test__.jsonc b/tests/specs/run/cjs/unprepared/__test__.jsonc
new file mode 100644
index 000000000..f816bad86
--- /dev/null
+++ b/tests/specs/run/cjs/unprepared/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run -A main.ts",
+ "output": "main.out"
+}
diff --git a/tests/specs/run/cjs/unprepared/file.cjs b/tests/specs/run/cjs/unprepared/file.cjs
new file mode 100644
index 000000000..ba0c6fa6f
--- /dev/null
+++ b/tests/specs/run/cjs/unprepared/file.cjs
@@ -0,0 +1,7 @@
+// non-analyzable
+const moduleName = "./output.cjs";
+function getModuleName() {
+ return moduleName;
+}
+
+require(getModuleName());
diff --git a/tests/specs/run/cjs/unprepared/main.out b/tests/specs/run/cjs/unprepared/main.out
new file mode 100644
index 000000000..e965047ad
--- /dev/null
+++ b/tests/specs/run/cjs/unprepared/main.out
@@ -0,0 +1 @@
+Hello
diff --git a/tests/specs/run/cjs/unprepared/main.ts b/tests/specs/run/cjs/unprepared/main.ts
new file mode 100644
index 000000000..5630b4fbc
--- /dev/null
+++ b/tests/specs/run/cjs/unprepared/main.ts
@@ -0,0 +1,7 @@
+// non-analyzable
+const moduleName = "./output.cjs";
+function getModuleName() {
+ return moduleName;
+}
+
+await import(getModuleName());
diff --git a/tests/specs/run/cjs/unprepared/output.cjs b/tests/specs/run/cjs/unprepared/output.cjs
new file mode 100644
index 000000000..54ed3702f
--- /dev/null
+++ b/tests/specs/run/cjs/unprepared/output.cjs
@@ -0,0 +1,3 @@
+console.log("Hello");
+
+module.exports = 1;
diff --git a/tests/specs/run/cts/cjs_import_cts/__test__.jsonc b/tests/specs/run/cts/cjs_import_cts/__test__.jsonc
new file mode 100644
index 000000000..2205183d0
--- /dev/null
+++ b/tests/specs/run/cts/cjs_import_cts/__test__.jsonc
@@ -0,0 +1,13 @@
+{
+ "tests": {
+ "no_check": {
+ "args": "run --allow-read main.js",
+ "output": "main.out"
+ },
+ "check": {
+ "args": "check main.js",
+ "output": "check.out",
+ "exitCode": 1
+ }
+ }
+}
diff --git a/tests/specs/run/package_json_type/commonjs/add.js b/tests/specs/run/cts/cjs_import_cts/add.cts
index 2a886fbc1..2a886fbc1 100644
--- a/tests/specs/run/package_json_type/commonjs/add.js
+++ b/tests/specs/run/cts/cjs_import_cts/add.cts
diff --git a/tests/specs/run/cts/cjs_import_cts/check.out b/tests/specs/run/cts/cjs_import_cts/check.out
new file mode 100644
index 000000000..a27e8d7af
--- /dev/null
+++ b/tests/specs/run/cts/cjs_import_cts/check.out
@@ -0,0 +1,17 @@
+Check file:///[WILDLINE]main.js
+error: TS2580 [ERROR]: Cannot find name 'module'.
+module.exports.add = function (a, b) {
+~~~~~~
+ at file:///[WILDLINE]
+
+TS7006 [ERROR]: Parameter 'a' implicitly has an 'any' type.
+module.exports.add = function (a, b) {
+ ^
+ at file:///[WILDLINE]
+
+TS7006 [ERROR]: Parameter 'b' implicitly has an 'any' type.
+module.exports.add = function (a, b) {
+ ^
+ at file:///[WILDLINE]
+
+Found 3 errors.
diff --git a/tests/specs/run/cts/cjs_import_cts/main.js b/tests/specs/run/cts/cjs_import_cts/main.js
new file mode 100644
index 000000000..9546a0fea
--- /dev/null
+++ b/tests/specs/run/cts/cjs_import_cts/main.js
@@ -0,0 +1,3 @@
+import { subtract } from "./subtract.cjs";
+
+console.log(subtract(1, 2));
diff --git a/tests/specs/run/cts/cjs_import_cts/main.out b/tests/specs/run/cts/cjs_import_cts/main.out
new file mode 100644
index 000000000..3a2e3f498
--- /dev/null
+++ b/tests/specs/run/cts/cjs_import_cts/main.out
@@ -0,0 +1 @@
+-1
diff --git a/tests/specs/run/cts/cjs_import_cts/subtract.cjs b/tests/specs/run/cts/cjs_import_cts/subtract.cjs
new file mode 100644
index 000000000..7dee54346
--- /dev/null
+++ b/tests/specs/run/cts/cjs_import_cts/subtract.cjs
@@ -0,0 +1,3 @@
+module.exports.subtract = function (a, b) {
+ return require("./add.cts").add(a, -b);
+};
diff --git a/tests/specs/run/cts/import_export_equals/__test__.jsonc b/tests/specs/run/cts/import_export_equals/__test__.jsonc
new file mode 100644
index 000000000..6a5c6db42
--- /dev/null
+++ b/tests/specs/run/cts/import_export_equals/__test__.jsonc
@@ -0,0 +1,17 @@
+{
+ "tests": {
+ "main": {
+ "args": "run --check --allow-read=. main.cts",
+ "output": "main.out"
+ },
+ "mts": {
+ "args": "run --allow-read=. mod.mts",
+ "output": "mod.mts.out"
+ },
+ "mts_check": {
+ "args": "check mod.mts",
+ "output": "mod.mts.check.out",
+ "exitCode": 1
+ }
+ }
+}
diff --git a/tests/specs/run/cts/import_export_equals/add.cts b/tests/specs/run/cts/import_export_equals/add.cts
new file mode 100644
index 000000000..adf3503ac
--- /dev/null
+++ b/tests/specs/run/cts/import_export_equals/add.cts
@@ -0,0 +1,3 @@
+export = function (a: number, b: number) {
+ return a + b;
+};
diff --git a/tests/specs/run/cts/import_export_equals/main.cts b/tests/specs/run/cts/import_export_equals/main.cts
new file mode 100644
index 000000000..e5c45f92e
--- /dev/null
+++ b/tests/specs/run/cts/import_export_equals/main.cts
@@ -0,0 +1,3 @@
+import add = require("./add.cts");
+
+console.log(add(1, 2));
diff --git a/tests/specs/run/cts/import_export_equals/main.out b/tests/specs/run/cts/import_export_equals/main.out
new file mode 100644
index 000000000..e7a973a7d
--- /dev/null
+++ b/tests/specs/run/cts/import_export_equals/main.out
@@ -0,0 +1,2 @@
+Check file:///[WILDLINE]/main.cts
+3
diff --git a/tests/specs/run/cts/import_export_equals/mod.mts b/tests/specs/run/cts/import_export_equals/mod.mts
new file mode 100644
index 000000000..5fbbd6c6a
--- /dev/null
+++ b/tests/specs/run/cts/import_export_equals/mod.mts
@@ -0,0 +1,3 @@
+import add from "./add.cts";
+
+console.log(add(1, "test"));
diff --git a/tests/specs/run/cts/import_export_equals/mod.mts.check.out b/tests/specs/run/cts/import_export_equals/mod.mts.check.out
new file mode 100644
index 000000000..870353901
--- /dev/null
+++ b/tests/specs/run/cts/import_export_equals/mod.mts.check.out
@@ -0,0 +1,5 @@
+Check file:///[WILDLINE]/mod.mts
+error: TS2345 [ERROR]: Argument of type 'string' is not assignable to parameter of type 'number'.
+console.log(add(1, "test"));
+ ~~~~~~
+ at file:///[WILDLINE]/mod.mts:3:20
diff --git a/tests/specs/run/cts/import_export_equals/mod.mts.out b/tests/specs/run/cts/import_export_equals/mod.mts.out
new file mode 100644
index 000000000..208465a08
--- /dev/null
+++ b/tests/specs/run/cts/import_export_equals/mod.mts.out
@@ -0,0 +1 @@
+1test
diff --git a/tests/specs/run/cts/main/__test__.jsonc b/tests/specs/run/cts/main/__test__.jsonc
new file mode 100644
index 000000000..0157b44e9
--- /dev/null
+++ b/tests/specs/run/cts/main/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-read main.cts",
+ "output": "main.out"
+}
diff --git a/tests/specs/run/cts/main/import_main.cjs b/tests/specs/run/cts/main/import_main.cjs
new file mode 100644
index 000000000..f61e0da2a
--- /dev/null
+++ b/tests/specs/run/cts/main/import_main.cjs
@@ -0,0 +1 @@
+require("./main.cts").sayHello();
diff --git a/tests/specs/run/cts/main/main.cts b/tests/specs/run/cts/main/main.cts
new file mode 100644
index 000000000..0b0330686
--- /dev/null
+++ b/tests/specs/run/cts/main/main.cts
@@ -0,0 +1,5 @@
+module.exports.sayHello = function () {
+ console.log("Hello");
+};
+
+require("./import_main.cjs");
diff --git a/tests/specs/run/cts/main/main.out b/tests/specs/run/cts/main/main.out
new file mode 100644
index 000000000..e965047ad
--- /dev/null
+++ b/tests/specs/run/cts/main/main.out
@@ -0,0 +1 @@
+Hello
diff --git a/tests/specs/run/package_json_type/commonjs/__test__.jsonc b/tests/specs/run/package_json_type/commonjs/basic/__test__.jsonc
index 85b7219fa..85b7219fa 100644
--- a/tests/specs/run/package_json_type/commonjs/__test__.jsonc
+++ b/tests/specs/run/package_json_type/commonjs/basic/__test__.jsonc
diff --git a/tests/specs/run/package_json_type/commonjs/basic/add.js b/tests/specs/run/package_json_type/commonjs/basic/add.js
new file mode 100644
index 000000000..2a886fbc1
--- /dev/null
+++ b/tests/specs/run/package_json_type/commonjs/basic/add.js
@@ -0,0 +1,3 @@
+module.exports.add = function (a, b) {
+ return a + b;
+};
diff --git a/tests/specs/run/package_json_type/commonjs/deno.jsonc b/tests/specs/run/package_json_type/commonjs/basic/deno.jsonc
index 35f64c86f..35f64c86f 100644
--- a/tests/specs/run/package_json_type/commonjs/deno.jsonc
+++ b/tests/specs/run/package_json_type/commonjs/basic/deno.jsonc
diff --git a/tests/specs/run/package_json_type/commonjs/import_import_meta.js b/tests/specs/run/package_json_type/commonjs/basic/import_import_meta.js
index f07518985..f07518985 100644
--- a/tests/specs/run/package_json_type/commonjs/import_import_meta.js
+++ b/tests/specs/run/package_json_type/commonjs/basic/import_import_meta.js
diff --git a/tests/specs/run/package_json_type/commonjs/import_meta.js b/tests/specs/run/package_json_type/commonjs/basic/import_meta.js
index 2bdbc30fe..2bdbc30fe 100644
--- a/tests/specs/run/package_json_type/commonjs/import_meta.js
+++ b/tests/specs/run/package_json_type/commonjs/basic/import_meta.js
diff --git a/tests/specs/run/package_json_type/commonjs/main_cjs.js b/tests/specs/run/package_json_type/commonjs/basic/main_cjs.js
index 365e8e06f..365e8e06f 100644
--- a/tests/specs/run/package_json_type/commonjs/main_cjs.js
+++ b/tests/specs/run/package_json_type/commonjs/basic/main_cjs.js
diff --git a/tests/specs/run/package_json_type/commonjs/main_esm.js b/tests/specs/run/package_json_type/commonjs/basic/main_esm.js
index 8c55f673b..8c55f673b 100644
--- a/tests/specs/run/package_json_type/commonjs/main_esm.js
+++ b/tests/specs/run/package_json_type/commonjs/basic/main_esm.js
diff --git a/tests/specs/run/package_json_type/commonjs/main_esm_import_meta.js b/tests/specs/run/package_json_type/commonjs/basic/main_esm_import_meta.js
index f1dff20b5..f1dff20b5 100644
--- a/tests/specs/run/package_json_type/commonjs/main_esm_import_meta.js
+++ b/tests/specs/run/package_json_type/commonjs/basic/main_esm_import_meta.js
diff --git a/tests/specs/run/package_json_type/commonjs/main_esm_import_meta.out b/tests/specs/run/package_json_type/commonjs/basic/main_esm_import_meta.out
index e177defff..e177defff 100644
--- a/tests/specs/run/package_json_type/commonjs/main_esm_import_meta.out
+++ b/tests/specs/run/package_json_type/commonjs/basic/main_esm_import_meta.out
diff --git a/tests/specs/run/package_json_type/commonjs/main_mix.js b/tests/specs/run/package_json_type/commonjs/basic/main_mix.js
index 2a2c2c62a..2a2c2c62a 100644
--- a/tests/specs/run/package_json_type/commonjs/main_mix.js
+++ b/tests/specs/run/package_json_type/commonjs/basic/main_mix.js
diff --git a/tests/specs/run/package_json_type/commonjs/main_mix.out b/tests/specs/run/package_json_type/commonjs/basic/main_mix.out
index 78f421644..78f421644 100644
--- a/tests/specs/run/package_json_type/commonjs/main_mix.out
+++ b/tests/specs/run/package_json_type/commonjs/basic/main_mix.out
diff --git a/tests/specs/run/package_json_type/commonjs/not_import_meta.js b/tests/specs/run/package_json_type/commonjs/basic/not_import_meta.js
index 216b900df..216b900df 100644
--- a/tests/specs/run/package_json_type/commonjs/not_import_meta.js
+++ b/tests/specs/run/package_json_type/commonjs/basic/not_import_meta.js
diff --git a/tests/specs/run/package_json_type/commonjs/package.json b/tests/specs/run/package_json_type/commonjs/basic/package.json
index 5bbefffba..5bbefffba 100644
--- a/tests/specs/run/package_json_type/commonjs/package.json
+++ b/tests/specs/run/package_json_type/commonjs/basic/package.json
diff --git a/tests/specs/run/package_json_type/commonjs/tla.js b/tests/specs/run/package_json_type/commonjs/basic/tla.js
index 978578de4..978578de4 100644
--- a/tests/specs/run/package_json_type/commonjs/tla.js
+++ b/tests/specs/run/package_json_type/commonjs/basic/tla.js
diff --git a/tests/specs/run/package_json_type/commonjs/jsx/__test__.jsonc b/tests/specs/run/package_json_type/commonjs/jsx/__test__.jsonc
new file mode 100644
index 000000000..f815fd72c
--- /dev/null
+++ b/tests/specs/run/package_json_type/commonjs/jsx/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "tempDir": true,
+ "args": "run -A --quiet main.jsx",
+ "output": "main.out"
+}
diff --git a/tests/specs/run/package_json_type/commonjs/jsx/add.js b/tests/specs/run/package_json_type/commonjs/jsx/add.js
new file mode 100644
index 000000000..2a886fbc1
--- /dev/null
+++ b/tests/specs/run/package_json_type/commonjs/jsx/add.js
@@ -0,0 +1,3 @@
+module.exports.add = function (a, b) {
+ return a + b;
+};
diff --git a/tests/specs/run/package_json_type/commonjs/jsx/deno.jsonc b/tests/specs/run/package_json_type/commonjs/jsx/deno.jsonc
new file mode 100644
index 000000000..192ddb98c
--- /dev/null
+++ b/tests/specs/run/package_json_type/commonjs/jsx/deno.jsonc
@@ -0,0 +1,10 @@
+{
+ "nodeModulesDir": "auto",
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "react"
+ },
+ "unstable": [
+ "detect-cjs"
+ ]
+}
diff --git a/tests/specs/run/package_json_type/commonjs/jsx/main.jsx b/tests/specs/run/package_json_type/commonjs/jsx/main.jsx
new file mode 100644
index 000000000..1922fce1b
--- /dev/null
+++ b/tests/specs/run/package_json_type/commonjs/jsx/main.jsx
@@ -0,0 +1,7 @@
+const { add } = require("./add.js");
+
+console.log(add(1, 2));
+
+console.log(<div /> != null);
+
+require("./tsx.tsx");
diff --git a/tests/specs/run/package_json_type/commonjs/jsx/main.out b/tests/specs/run/package_json_type/commonjs/jsx/main.out
new file mode 100644
index 000000000..cdcf04541
--- /dev/null
+++ b/tests/specs/run/package_json_type/commonjs/jsx/main.out
@@ -0,0 +1,4 @@
+3
+true
+4
+true
diff --git a/tests/specs/run/package_json_type/commonjs/jsx/package.json b/tests/specs/run/package_json_type/commonjs/jsx/package.json
new file mode 100644
index 000000000..88afcdcd9
--- /dev/null
+++ b/tests/specs/run/package_json_type/commonjs/jsx/package.json
@@ -0,0 +1,7 @@
+{
+ "type": "commonjs",
+ "dependencies": {
+ "@types/react": "*",
+ "react": "*"
+ }
+}
diff --git a/tests/specs/run/package_json_type/commonjs/jsx/tsx.tsx b/tests/specs/run/package_json_type/commonjs/jsx/tsx.tsx
new file mode 100644
index 000000000..ad8f0c0a9
--- /dev/null
+++ b/tests/specs/run/package_json_type/commonjs/jsx/tsx.tsx
@@ -0,0 +1,5 @@
+import mod = require("./add.js");
+
+console.log(mod.add(2, 2));
+
+console.log(<div /> != null);
diff --git a/tests/specs/run/remote_cjs_main/output.out b/tests/specs/run/remote_cjs_main/output.out
index f75c33907..360934acb 100644
--- a/tests/specs/run/remote_cjs_main/output.out
+++ b/tests/specs/run/remote_cjs_main/output.out
@@ -1,3 +1,3 @@
Download http://localhost:4545/run/add.cjs
-error: Expected a JavaScript or TypeScript module, but identified a Cjs module. Importing these types of modules is currently not supported.
+error: Remote CJS modules are not supported.
Specifier: http://localhost:4545/run/add.cjs
diff --git a/tests/specs/run/require_esm/main.out b/tests/specs/run/require_esm/main.out
index d17b1ead5..57b842b34 100644
--- a/tests/specs/run/require_esm/main.out
+++ b/tests/specs/run/require_esm/main.out
@@ -1,6 +1,6 @@
[Module: null prototype] { sync_js: 1 }
[Module: null prototype] { sync_mjs: 1 }
-error: Uncaught Error: Top-level await is not allowed in synchronous evaluation
+error: Uncaught (in promise) Error: Top-level await is not allowed in synchronous evaluation
at loadESMFromCJS (node:module:[WILDCARD])
at Module._compile (node:module:[WILDCARD])
at Object.Module._extensions..js (node:module:[WILDCARD])