From f091d1ad69b4e5217ae3272b641171781a372c4f Mon Sep 17 00:00:00 2001 From: David Sherret Date: Wed, 13 Nov 2024 10:10:09 -0500 Subject: feat(node): stabilize detecting if CJS via `"type": "commonjs"` in a package.json (#26439) This will respect `"type": "commonjs"` in a package.json to determine if `.js`/`.jsx`/`.ts`/.tsx` files are CJS or ESM. If the file is found to be ESM it will be loaded as ESM though. --- tests/integration/lsp_tests.rs | 49 ++++++++++++++++++++++ tests/node_compat/package.json | 3 ++ tests/node_compat/test/common/package.json | 1 - tests/node_compat/test/fixtures/package.json | 1 - tests/node_compat/test/internet/package.json | 1 - tests/node_compat/test/parallel/package.json | 1 - tests/node_compat/test/pseudo-tty/package.json | 1 - tests/node_compat/test/pummel/package.json | 1 - tests/node_compat/test/sequential/package.json | 1 - .../install-launch-cjs-temp-dir/1.0.0/install.js | 12 ++++++ .../install-launch-cjs-temp-dir/1.0.0/package.json | 7 ++++ .../install-no-ext/1.0.0/install/check.js | 1 + .../install-no-ext/1.0.0/install/index.js | 1 + .../install-no-ext/1.0.0/install/output.js | 1 + .../@denotest/install-no-ext/1.0.0/package.json | 7 ++++ tests/specs/compile/detect_cjs/__test__.jsonc | 27 ------------ tests/specs/compile/detect_cjs/add.js | 3 -- tests/specs/compile/detect_cjs/compile.out | 2 - tests/specs/compile/detect_cjs/deno.json | 5 --- tests/specs/compile/detect_cjs/main.js | 3 -- tests/specs/compile/detect_cjs/output.out | 1 - tests/specs/compile/detect_cjs/package.json | 6 --- tests/specs/compile/detect_cjs/subtract.ts | 2 - .../specs/compile/package_json_type/__test__.jsonc | 27 ++++++++++++ tests/specs/compile/package_json_type/add.js | 3 ++ tests/specs/compile/package_json_type/compile.out | 2 + tests/specs/compile/package_json_type/main.js | 3 ++ tests/specs/compile/package_json_type/output.out | 1 + tests/specs/compile/package_json_type/package.json | 6 +++ tests/specs/compile/package_json_type/subtract.ts | 2 + tests/specs/eval/pkg_json_type_cjs/__test__.jsonc | 4 ++ tests/specs/eval/pkg_json_type_cjs/package.json | 3 ++ .../__test__.jsonc | 5 +++ .../scripts_install_launch_cjs_temp_dir/output.out | 4 ++ .../package.json | 5 +++ .../install/scripts_install_no_ext/__test__.jsonc | 5 +++ .../install/scripts_install_no_ext/output.out | 4 ++ .../install/scripts_install_no_ext/package.json | 5 +++ tests/specs/mod.rs | 20 +++++++++ tests/specs/npm/dual_cjs_esm/__test__.jsonc | 4 -- .../npm/dual_cjs_esm/cjs_referrer/__test__.jsonc | 14 +++++++ .../specs/npm/dual_cjs_esm/cjs_referrer/check.out | 8 ++++ tests/specs/npm/dual_cjs_esm/cjs_referrer/main.cts | 4 ++ tests/specs/npm/dual_cjs_esm/cjs_referrer/main.out | 4 ++ .../npm/dual_cjs_esm/cjs_referrer/package.json | 5 +++ tests/specs/npm/dual_cjs_esm/dual_cjs_esm/main.out | 3 -- tests/specs/npm/dual_cjs_esm/dual_cjs_esm/main.ts | 6 --- .../npm/dual_cjs_esm/esm_referrer/__test__.jsonc | 4 ++ tests/specs/npm/dual_cjs_esm/esm_referrer/main.out | 3 ++ tests/specs/npm/dual_cjs_esm/esm_referrer/main.ts | 6 +++ .../ts_referrer_type_cjs/__test__.jsonc | 14 +++++++ .../dual_cjs_esm/ts_referrer_type_cjs/check.out | 8 ++++ .../npm/dual_cjs_esm/ts_referrer_type_cjs/main.out | 4 ++ .../npm/dual_cjs_esm/ts_referrer_type_cjs/main.ts | 4 ++ .../dual_cjs_esm/ts_referrer_type_cjs/package.json | 6 +++ .../npm/permissions_outside_package/__test__.jsonc | 5 ++- .../npm/permissions_outside_package/foo/config.js | 4 ++ .../permissions_outside_package/foo/package.json | 5 +++ .../specs/npm/permissions_outside_package/main.out | 3 ++ .../specs/npm/permissions_outside_package/main.ts | 5 +++ .../npm/permissions_outside_package/package.json | 2 + .../permissions_outside_package/foo/config.js | 4 -- .../permissions_outside_package/foo/package.json | 4 -- .../permissions_outside_package/main.out | 3 -- .../permissions_outside_package/main.ts | 5 --- tests/specs/run/import_common_js/__test__.jsonc | 20 +++++---- tests/specs/run/import_common_js/a.js | 7 ---- tests/specs/run/import_common_js/exports_error.out | 7 ++-- tests/specs/run/import_common_js/index.cjs | 2 - tests/specs/run/import_common_js/index.out | 2 +- tests/specs/run/import_common_js/main.out | 2 - tests/specs/run/import_common_js/module_error.out | 7 ++-- .../import_common_js/node_modules/foo/index.mjs | 1 - tests/specs/run/import_common_js/require_error.out | 7 ++-- .../run/npm_pkg_requires_esm_js/__test__.jsonc | 5 +++ tests/specs/run/npm_pkg_requires_esm_js/file.js | 1 + .../run/npm_pkg_requires_esm_js/logs_require.js | 1 + tests/specs/run/npm_pkg_requires_esm_js/main.js | 5 +++ .../node_modules/package/index.js | 3 ++ .../node_modules/package/package.json | 4 ++ tests/specs/run/npm_pkg_requires_esm_js/output.out | 12 ++++++ .../specs/run/npm_pkg_requires_esm_js/package.json | 0 .../package_json_type/commonjs/basic/deno.jsonc | 5 --- .../package_json_type/commonjs/basic/main_mix.out | 7 ++-- .../run/package_json_type/commonjs/jsx/deno.jsonc | 5 +-- tests/specs/run/package_json_type/none/deno.jsonc | 5 --- .../specs/run/package_json_type/none/main_cjs.out | 7 ++-- tests/specs/run/require_esm/main.out | 11 +---- tests/specs/run/stdin_type_cjs/__test__.jsonc | 5 +++ tests/specs/run/stdin_type_cjs/package.json | 3 ++ tests/specs/run/stdin_type_cjs/stdin_read_all.ts | 1 + tests/specs/schema.json | 3 ++ tests/util/server/src/servers/mod.rs | 22 +++++----- 93 files changed, 371 insertions(+), 162 deletions(-) create mode 100644 tests/node_compat/package.json delete mode 100644 tests/node_compat/test/common/package.json delete mode 100644 tests/node_compat/test/fixtures/package.json delete mode 100644 tests/node_compat/test/internet/package.json delete mode 100644 tests/node_compat/test/parallel/package.json delete mode 100644 tests/node_compat/test/pseudo-tty/package.json delete mode 100644 tests/node_compat/test/pummel/package.json delete mode 100644 tests/node_compat/test/sequential/package.json create mode 100644 tests/registry/npm/@denotest/install-launch-cjs-temp-dir/1.0.0/install.js create mode 100644 tests/registry/npm/@denotest/install-launch-cjs-temp-dir/1.0.0/package.json create mode 100644 tests/registry/npm/@denotest/install-no-ext/1.0.0/install/check.js create mode 100644 tests/registry/npm/@denotest/install-no-ext/1.0.0/install/index.js create mode 100644 tests/registry/npm/@denotest/install-no-ext/1.0.0/install/output.js create mode 100644 tests/registry/npm/@denotest/install-no-ext/1.0.0/package.json delete mode 100644 tests/specs/compile/detect_cjs/__test__.jsonc delete mode 100644 tests/specs/compile/detect_cjs/add.js delete mode 100644 tests/specs/compile/detect_cjs/compile.out delete mode 100644 tests/specs/compile/detect_cjs/deno.json delete mode 100644 tests/specs/compile/detect_cjs/main.js delete mode 100644 tests/specs/compile/detect_cjs/output.out delete mode 100644 tests/specs/compile/detect_cjs/package.json delete mode 100644 tests/specs/compile/detect_cjs/subtract.ts create mode 100644 tests/specs/compile/package_json_type/__test__.jsonc create mode 100644 tests/specs/compile/package_json_type/add.js create mode 100644 tests/specs/compile/package_json_type/compile.out create mode 100644 tests/specs/compile/package_json_type/main.js create mode 100644 tests/specs/compile/package_json_type/output.out create mode 100644 tests/specs/compile/package_json_type/package.json create mode 100644 tests/specs/compile/package_json_type/subtract.ts create mode 100644 tests/specs/eval/pkg_json_type_cjs/__test__.jsonc create mode 100644 tests/specs/eval/pkg_json_type_cjs/package.json create mode 100644 tests/specs/install/scripts_install_launch_cjs_temp_dir/__test__.jsonc create mode 100644 tests/specs/install/scripts_install_launch_cjs_temp_dir/output.out create mode 100644 tests/specs/install/scripts_install_launch_cjs_temp_dir/package.json create mode 100644 tests/specs/install/scripts_install_no_ext/__test__.jsonc create mode 100644 tests/specs/install/scripts_install_no_ext/output.out create mode 100644 tests/specs/install/scripts_install_no_ext/package.json delete mode 100644 tests/specs/npm/dual_cjs_esm/__test__.jsonc create mode 100644 tests/specs/npm/dual_cjs_esm/cjs_referrer/__test__.jsonc create mode 100644 tests/specs/npm/dual_cjs_esm/cjs_referrer/check.out create mode 100644 tests/specs/npm/dual_cjs_esm/cjs_referrer/main.cts create mode 100644 tests/specs/npm/dual_cjs_esm/cjs_referrer/main.out create mode 100644 tests/specs/npm/dual_cjs_esm/cjs_referrer/package.json delete mode 100644 tests/specs/npm/dual_cjs_esm/dual_cjs_esm/main.out delete mode 100644 tests/specs/npm/dual_cjs_esm/dual_cjs_esm/main.ts create mode 100644 tests/specs/npm/dual_cjs_esm/esm_referrer/__test__.jsonc create mode 100644 tests/specs/npm/dual_cjs_esm/esm_referrer/main.out create mode 100644 tests/specs/npm/dual_cjs_esm/esm_referrer/main.ts create mode 100644 tests/specs/npm/dual_cjs_esm/ts_referrer_type_cjs/__test__.jsonc create mode 100644 tests/specs/npm/dual_cjs_esm/ts_referrer_type_cjs/check.out create mode 100644 tests/specs/npm/dual_cjs_esm/ts_referrer_type_cjs/main.out create mode 100644 tests/specs/npm/dual_cjs_esm/ts_referrer_type_cjs/main.ts create mode 100644 tests/specs/npm/dual_cjs_esm/ts_referrer_type_cjs/package.json create mode 100644 tests/specs/npm/permissions_outside_package/foo/config.js create mode 100644 tests/specs/npm/permissions_outside_package/foo/package.json create mode 100644 tests/specs/npm/permissions_outside_package/main.out create mode 100644 tests/specs/npm/permissions_outside_package/main.ts create mode 100644 tests/specs/npm/permissions_outside_package/package.json delete mode 100644 tests/specs/npm/permissions_outside_package/permissions_outside_package/foo/config.js delete mode 100644 tests/specs/npm/permissions_outside_package/permissions_outside_package/foo/package.json delete mode 100644 tests/specs/npm/permissions_outside_package/permissions_outside_package/main.out delete mode 100644 tests/specs/npm/permissions_outside_package/permissions_outside_package/main.ts delete mode 100644 tests/specs/run/import_common_js/a.js create mode 100644 tests/specs/run/npm_pkg_requires_esm_js/__test__.jsonc create mode 100644 tests/specs/run/npm_pkg_requires_esm_js/file.js create mode 100644 tests/specs/run/npm_pkg_requires_esm_js/logs_require.js create mode 100644 tests/specs/run/npm_pkg_requires_esm_js/main.js create mode 100644 tests/specs/run/npm_pkg_requires_esm_js/node_modules/package/index.js create mode 100644 tests/specs/run/npm_pkg_requires_esm_js/node_modules/package/package.json create mode 100644 tests/specs/run/npm_pkg_requires_esm_js/output.out create mode 100644 tests/specs/run/npm_pkg_requires_esm_js/package.json delete mode 100644 tests/specs/run/package_json_type/commonjs/basic/deno.jsonc delete mode 100644 tests/specs/run/package_json_type/none/deno.jsonc create mode 100644 tests/specs/run/stdin_type_cjs/__test__.jsonc create mode 100644 tests/specs/run/stdin_type_cjs/package.json create mode 100644 tests/specs/run/stdin_type_cjs/stdin_read_all.ts (limited to 'tests') diff --git a/tests/integration/lsp_tests.rs b/tests/integration/lsp_tests.rs index af5f9de23..dcef69608 100644 --- a/tests/integration/lsp_tests.rs +++ b/tests/integration/lsp_tests.rs @@ -16139,6 +16139,55 @@ fn lsp_cjs_import_dual() { ); } +#[test] +fn lsp_type_commonjs() { + let context = TestContextBuilder::new() + .use_http_server() + .use_temp_cwd() + .add_npm_env_vars() + .build(); + let temp_dir = context.temp_dir(); + temp_dir.write("deno.json", r#"{}"#); + temp_dir.write( + "package.json", + r#"{ + "type": "commonjs", + "dependencies": { + "@denotest/dual-cjs-esm": "1" + } +}"#, + ); + context.run_npm("install"); + + let mut client = context.new_lsp_command().build(); + client.initialize_default(); + let main_url = temp_dir.path().join("main.ts").url_file(); + let diagnostics = client.did_open( + json!({ + "textDocument": { + "uri": main_url, + "languageId": "typescript", + "version": 1, + // getKind() should resolve as "cjs" and cause a type checker error + "text": "import mod = require('@denotest/dual-cjs-esm');\nconst kind: 'other' = mod.getKind(); console.log(kind);", + } + }), + ); + assert_eq!( + json!(diagnostics.all()), + json!([{ + "range": { + "start": { "line": 1, "character": 6, }, + "end": { "line": 1, "character": 10, }, + }, + "severity": 1, + "code": 2322, + "source": "deno-ts", + "message": "Type '\"cjs\"' is not assignable to type '\"other\"'.", + }]) + ); +} + #[test] fn lsp_ts_code_fix_any_param() { let context = TestContextBuilder::new().use_temp_cwd().build(); diff --git a/tests/node_compat/package.json b/tests/node_compat/package.json new file mode 100644 index 000000000..5bbefffba --- /dev/null +++ b/tests/node_compat/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/tests/node_compat/test/common/package.json b/tests/node_compat/test/common/package.json deleted file mode 100644 index 0967ef424..000000000 --- a/tests/node_compat/test/common/package.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/tests/node_compat/test/fixtures/package.json b/tests/node_compat/test/fixtures/package.json deleted file mode 100644 index 0967ef424..000000000 --- a/tests/node_compat/test/fixtures/package.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/tests/node_compat/test/internet/package.json b/tests/node_compat/test/internet/package.json deleted file mode 100644 index 0967ef424..000000000 --- a/tests/node_compat/test/internet/package.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/tests/node_compat/test/parallel/package.json b/tests/node_compat/test/parallel/package.json deleted file mode 100644 index 0967ef424..000000000 --- a/tests/node_compat/test/parallel/package.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/tests/node_compat/test/pseudo-tty/package.json b/tests/node_compat/test/pseudo-tty/package.json deleted file mode 100644 index 0967ef424..000000000 --- a/tests/node_compat/test/pseudo-tty/package.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/tests/node_compat/test/pummel/package.json b/tests/node_compat/test/pummel/package.json deleted file mode 100644 index 0967ef424..000000000 --- a/tests/node_compat/test/pummel/package.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/tests/node_compat/test/sequential/package.json b/tests/node_compat/test/sequential/package.json deleted file mode 100644 index 0967ef424..000000000 --- a/tests/node_compat/test/sequential/package.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/tests/registry/npm/@denotest/install-launch-cjs-temp-dir/1.0.0/install.js b/tests/registry/npm/@denotest/install-launch-cjs-temp-dir/1.0.0/install.js new file mode 100644 index 000000000..61aadeb83 --- /dev/null +++ b/tests/registry/npm/@denotest/install-launch-cjs-temp-dir/1.0.0/install.js @@ -0,0 +1,12 @@ +const tempDir = Deno.makeTempDirSync(); +try { + // should work requiring these because this was launched via a node binary entrypoint + Deno.writeTextFileSync(`${tempDir}/index.js`, "module.exports = require('./other');"); + Deno.writeTextFileSync(`${tempDir}/other.js`, "module.exports = (a, b) => a + b;"); + const add = require(`${tempDir}/index.js`); + if (add(1, 2) !== 3) { + throw new Error("FAILED"); + } +} finally { + Deno.removeSync(tempDir, { recursive: true }); +} diff --git a/tests/registry/npm/@denotest/install-launch-cjs-temp-dir/1.0.0/package.json b/tests/registry/npm/@denotest/install-launch-cjs-temp-dir/1.0.0/package.json new file mode 100644 index 000000000..c3cf8dc4c --- /dev/null +++ b/tests/registry/npm/@denotest/install-launch-cjs-temp-dir/1.0.0/package.json @@ -0,0 +1,7 @@ +{ + "name": "@denotest/install-launch-cjs-temp-dir", + "version": "1.0.0", + "scripts": { + "install": "node install.js" + } +} \ No newline at end of file diff --git a/tests/registry/npm/@denotest/install-no-ext/1.0.0/install/check.js b/tests/registry/npm/@denotest/install-no-ext/1.0.0/install/check.js new file mode 100644 index 000000000..7d55c2481 --- /dev/null +++ b/tests/registry/npm/@denotest/install-no-ext/1.0.0/install/check.js @@ -0,0 +1 @@ +require("./output"); diff --git a/tests/registry/npm/@denotest/install-no-ext/1.0.0/install/index.js b/tests/registry/npm/@denotest/install-no-ext/1.0.0/install/index.js new file mode 100644 index 000000000..7d55c2481 --- /dev/null +++ b/tests/registry/npm/@denotest/install-no-ext/1.0.0/install/index.js @@ -0,0 +1 @@ +require("./output"); diff --git a/tests/registry/npm/@denotest/install-no-ext/1.0.0/install/output.js b/tests/registry/npm/@denotest/install-no-ext/1.0.0/install/output.js new file mode 100644 index 000000000..69668cd62 --- /dev/null +++ b/tests/registry/npm/@denotest/install-no-ext/1.0.0/install/output.js @@ -0,0 +1 @@ +console.log("SUCCESS"); diff --git a/tests/registry/npm/@denotest/install-no-ext/1.0.0/package.json b/tests/registry/npm/@denotest/install-no-ext/1.0.0/package.json new file mode 100644 index 000000000..b9abed1f6 --- /dev/null +++ b/tests/registry/npm/@denotest/install-no-ext/1.0.0/package.json @@ -0,0 +1,7 @@ +{ + "name": "@denotest/install-no-ext", + "version": "1.0.0", + "scripts": { + "install": "node install/check && node install" + } +} \ No newline at end of file diff --git a/tests/specs/compile/detect_cjs/__test__.jsonc b/tests/specs/compile/detect_cjs/__test__.jsonc deleted file mode 100644 index 0abf121f0..000000000 --- a/tests/specs/compile/detect_cjs/__test__.jsonc +++ /dev/null @@ -1,27 +0,0 @@ -{ - "tempDir": true, - "steps": [{ - "args": "install", - "output": "[WILDCARD]" - }, { - "if": "unix", - "args": "compile --output main main.js", - "output": "compile.out" - }, { - "if": "unix", - "commandName": "./main", - "args": [], - "output": "output.out", - "exitCode": 0 - }, { - "if": "windows", - "args": "compile --output main.exe main.js", - "output": "compile.out" - }, { - "if": "windows", - "commandName": "./main.exe", - "args": [], - "output": "output.out", - "exitCode": 0 - }] -} diff --git a/tests/specs/compile/detect_cjs/add.js b/tests/specs/compile/detect_cjs/add.js deleted file mode 100644 index 94b0263f0..000000000 --- a/tests/specs/compile/detect_cjs/add.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports.add = function (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 deleted file mode 100644 index 913e363c3..000000000 --- a/tests/specs/compile/detect_cjs/compile.out +++ /dev/null @@ -1,2 +0,0 @@ -Check file:///[WILDLINE]/main.js -Compile file:///[WILDLINE] diff --git a/tests/specs/compile/detect_cjs/deno.json b/tests/specs/compile/detect_cjs/deno.json deleted file mode 100644 index 35f64c86f..000000000 --- a/tests/specs/compile/detect_cjs/deno.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "unstable": [ - "detect-cjs" - ] -} diff --git a/tests/specs/compile/detect_cjs/main.js b/tests/specs/compile/detect_cjs/main.js deleted file mode 100644 index 8c55f673b..000000000 --- a/tests/specs/compile/detect_cjs/main.js +++ /dev/null @@ -1,3 +0,0 @@ -import { add } from "./add.js"; - -console.log(add(1, 2)); diff --git a/tests/specs/compile/detect_cjs/output.out b/tests/specs/compile/detect_cjs/output.out deleted file mode 100644 index 00750edc0..000000000 --- a/tests/specs/compile/detect_cjs/output.out +++ /dev/null @@ -1 +0,0 @@ -3 diff --git a/tests/specs/compile/detect_cjs/package.json b/tests/specs/compile/detect_cjs/package.json deleted file mode 100644 index 6e65b32ed..000000000 --- a/tests/specs/compile/detect_cjs/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "type": "commonjs", - "dependencies": { - "@types/node": "*" - } -} diff --git a/tests/specs/compile/detect_cjs/subtract.ts b/tests/specs/compile/detect_cjs/subtract.ts deleted file mode 100644 index e4f6760b7..000000000 --- a/tests/specs/compile/detect_cjs/subtract.ts +++ /dev/null @@ -1,2 +0,0 @@ -/// -module.exports.subtract = (a: number, b: number) => a - b; diff --git a/tests/specs/compile/package_json_type/__test__.jsonc b/tests/specs/compile/package_json_type/__test__.jsonc new file mode 100644 index 000000000..0abf121f0 --- /dev/null +++ b/tests/specs/compile/package_json_type/__test__.jsonc @@ -0,0 +1,27 @@ +{ + "tempDir": true, + "steps": [{ + "args": "install", + "output": "[WILDCARD]" + }, { + "if": "unix", + "args": "compile --output main main.js", + "output": "compile.out" + }, { + "if": "unix", + "commandName": "./main", + "args": [], + "output": "output.out", + "exitCode": 0 + }, { + "if": "windows", + "args": "compile --output main.exe main.js", + "output": "compile.out" + }, { + "if": "windows", + "commandName": "./main.exe", + "args": [], + "output": "output.out", + "exitCode": 0 + }] +} diff --git a/tests/specs/compile/package_json_type/add.js b/tests/specs/compile/package_json_type/add.js new file mode 100644 index 000000000..94b0263f0 --- /dev/null +++ b/tests/specs/compile/package_json_type/add.js @@ -0,0 +1,3 @@ +module.exports.add = function (a, b) { + return require("./subtract.ts").subtract(a, -b); +}; diff --git a/tests/specs/compile/package_json_type/compile.out b/tests/specs/compile/package_json_type/compile.out new file mode 100644 index 000000000..913e363c3 --- /dev/null +++ b/tests/specs/compile/package_json_type/compile.out @@ -0,0 +1,2 @@ +Check file:///[WILDLINE]/main.js +Compile file:///[WILDLINE] diff --git a/tests/specs/compile/package_json_type/main.js b/tests/specs/compile/package_json_type/main.js new file mode 100644 index 000000000..8c55f673b --- /dev/null +++ b/tests/specs/compile/package_json_type/main.js @@ -0,0 +1,3 @@ +import { add } from "./add.js"; + +console.log(add(1, 2)); diff --git a/tests/specs/compile/package_json_type/output.out b/tests/specs/compile/package_json_type/output.out new file mode 100644 index 000000000..00750edc0 --- /dev/null +++ b/tests/specs/compile/package_json_type/output.out @@ -0,0 +1 @@ +3 diff --git a/tests/specs/compile/package_json_type/package.json b/tests/specs/compile/package_json_type/package.json new file mode 100644 index 000000000..6e65b32ed --- /dev/null +++ b/tests/specs/compile/package_json_type/package.json @@ -0,0 +1,6 @@ +{ + "type": "commonjs", + "dependencies": { + "@types/node": "*" + } +} diff --git a/tests/specs/compile/package_json_type/subtract.ts b/tests/specs/compile/package_json_type/subtract.ts new file mode 100644 index 000000000..e4f6760b7 --- /dev/null +++ b/tests/specs/compile/package_json_type/subtract.ts @@ -0,0 +1,2 @@ +/// +module.exports.subtract = (a: number, b: number) => a - b; diff --git a/tests/specs/eval/pkg_json_type_cjs/__test__.jsonc b/tests/specs/eval/pkg_json_type_cjs/__test__.jsonc new file mode 100644 index 000000000..cd3804d77 --- /dev/null +++ b/tests/specs/eval/pkg_json_type_cjs/__test__.jsonc @@ -0,0 +1,4 @@ +{ + "args": "eval console.log(1)", + "output": "1\n" +} diff --git a/tests/specs/eval/pkg_json_type_cjs/package.json b/tests/specs/eval/pkg_json_type_cjs/package.json new file mode 100644 index 000000000..5bbefffba --- /dev/null +++ b/tests/specs/eval/pkg_json_type_cjs/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/tests/specs/install/scripts_install_launch_cjs_temp_dir/__test__.jsonc b/tests/specs/install/scripts_install_launch_cjs_temp_dir/__test__.jsonc new file mode 100644 index 000000000..087d08eff --- /dev/null +++ b/tests/specs/install/scripts_install_launch_cjs_temp_dir/__test__.jsonc @@ -0,0 +1,5 @@ +{ + "tempDir": true, + "args": "install --allow-scripts", + "output": "output.out" +} diff --git a/tests/specs/install/scripts_install_launch_cjs_temp_dir/output.out b/tests/specs/install/scripts_install_launch_cjs_temp_dir/output.out new file mode 100644 index 000000000..d5f06cc6e --- /dev/null +++ b/tests/specs/install/scripts_install_launch_cjs_temp_dir/output.out @@ -0,0 +1,4 @@ +Download http://localhost:4260/@denotest%2finstall-launch-cjs-temp-dir +Download http://localhost:4260/@denotest/install-launch-cjs-temp-dir/1.0.0.tgz +Initialize @denotest/install-launch-cjs-temp-dir@1.0.0 +Initialize @denotest/install-launch-cjs-temp-dir@1.0.0: running 'install' script diff --git a/tests/specs/install/scripts_install_launch_cjs_temp_dir/package.json b/tests/specs/install/scripts_install_launch_cjs_temp_dir/package.json new file mode 100644 index 000000000..71672f9bc --- /dev/null +++ b/tests/specs/install/scripts_install_launch_cjs_temp_dir/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "@denotest/install-launch-cjs-temp-dir": "*" + } +} diff --git a/tests/specs/install/scripts_install_no_ext/__test__.jsonc b/tests/specs/install/scripts_install_no_ext/__test__.jsonc new file mode 100644 index 000000000..087d08eff --- /dev/null +++ b/tests/specs/install/scripts_install_no_ext/__test__.jsonc @@ -0,0 +1,5 @@ +{ + "tempDir": true, + "args": "install --allow-scripts", + "output": "output.out" +} diff --git a/tests/specs/install/scripts_install_no_ext/output.out b/tests/specs/install/scripts_install_no_ext/output.out new file mode 100644 index 000000000..074e97812 --- /dev/null +++ b/tests/specs/install/scripts_install_no_ext/output.out @@ -0,0 +1,4 @@ +Download http://localhost:4260/@denotest%2finstall-no-ext +Download http://localhost:4260/@denotest/install-no-ext/1.0.0.tgz +Initialize @denotest/install-no-ext@1.0.0 +Initialize @denotest/install-no-ext@1.0.0: running 'install' script diff --git a/tests/specs/install/scripts_install_no_ext/package.json b/tests/specs/install/scripts_install_no_ext/package.json new file mode 100644 index 000000000..7ac9ca6b2 --- /dev/null +++ b/tests/specs/install/scripts_install_no_ext/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "@denotest/install-no-ext": "*" + } +} diff --git a/tests/specs/mod.rs b/tests/specs/mod.rs index 34221dd9d..b4c8781d3 100644 --- a/tests/specs/mod.rs +++ b/tests/specs/mod.rs @@ -119,6 +119,9 @@ struct MultiStepMetaData { /// steps. #[serde(default)] pub temp_dir: bool, + /// Whether the temporary directory should be symlinked to another path. + #[serde(default)] + pub symlinked_temp_dir: bool, /// The base environment to use for the test. #[serde(default)] pub base: Option, @@ -142,6 +145,8 @@ struct SingleTestMetaData { #[serde(default)] pub temp_dir: bool, #[serde(default)] + pub symlinked_temp_dir: bool, + #[serde(default)] pub repeat: Option, #[serde(flatten)] pub step: StepMetaData, @@ -155,6 +160,7 @@ impl SingleTestMetaData { base: self.base, cwd: None, temp_dir: self.temp_dir, + symlinked_temp_dir: self.symlinked_temp_dir, repeat: self.repeat, envs: Default::default(), steps: vec![self.step], @@ -330,6 +336,20 @@ fn test_context_from_metadata( builder = builder.cwd(cwd.to_string_lossy()); } + if metadata.symlinked_temp_dir { + // not actually deprecated, we just want to discourage its use + // because it's mostly used for testing purposes locally + #[allow(deprecated)] + { + builder = builder.use_symlinked_temp_dir(); + } + if cfg!(not(debug_assertions)) { + // panic to prevent using this on the CI as CI already uses + // a symlinked temp directory for every test + panic!("Cannot use symlinkedTempDir in release mode"); + } + } + match &metadata.base { // todo(dsherret): add bases in the future as needed Some(base) => panic!("Unknown test base: {}", base), diff --git a/tests/specs/npm/dual_cjs_esm/__test__.jsonc b/tests/specs/npm/dual_cjs_esm/__test__.jsonc deleted file mode 100644 index f2b0d694e..000000000 --- a/tests/specs/npm/dual_cjs_esm/__test__.jsonc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "args": "run -A --quiet dual_cjs_esm/main.ts", - "output": "dual_cjs_esm/main.out" -} diff --git a/tests/specs/npm/dual_cjs_esm/cjs_referrer/__test__.jsonc b/tests/specs/npm/dual_cjs_esm/cjs_referrer/__test__.jsonc new file mode 100644 index 000000000..de2c1a0bc --- /dev/null +++ b/tests/specs/npm/dual_cjs_esm/cjs_referrer/__test__.jsonc @@ -0,0 +1,14 @@ +{ + "tempDir": true, + "tests": { + "check": { + "args": "check --node-modules-dir=auto main.cts", + "output": "check.out", + "exitCode": 1 + }, + "run": { + "args": "run --node-modules-dir=auto --allow-read main.cts", + "output": "main.out" + } + } +} diff --git a/tests/specs/npm/dual_cjs_esm/cjs_referrer/check.out b/tests/specs/npm/dual_cjs_esm/cjs_referrer/check.out new file mode 100644 index 000000000..267d31fb7 --- /dev/null +++ b/tests/specs/npm/dual_cjs_esm/cjs_referrer/check.out @@ -0,0 +1,8 @@ +Download http://localhost:4260/@denotest%2fdual-cjs-esm +Download http://localhost:4260/@denotest/dual-cjs-esm/1.0.0.tgz +Initialize @denotest/dual-cjs-esm@1.0.0 +Check file:///[WILDLINE]/main.cts +error: TS2322 [ERROR]: Type '"cjs"' is not assignable to type '"other"'. +const kind: "other" = mod.getKind(); + ~~~~ + at file:///[WILDLINE]/main.cts:3:7 diff --git a/tests/specs/npm/dual_cjs_esm/cjs_referrer/main.cts b/tests/specs/npm/dual_cjs_esm/cjs_referrer/main.cts new file mode 100644 index 000000000..b8dd343f8 --- /dev/null +++ b/tests/specs/npm/dual_cjs_esm/cjs_referrer/main.cts @@ -0,0 +1,4 @@ +import mod = require("@denotest/dual-cjs-esm"); + +const kind: "other" = mod.getKind(); +console.log(kind); diff --git a/tests/specs/npm/dual_cjs_esm/cjs_referrer/main.out b/tests/specs/npm/dual_cjs_esm/cjs_referrer/main.out new file mode 100644 index 000000000..62ddbf479 --- /dev/null +++ b/tests/specs/npm/dual_cjs_esm/cjs_referrer/main.out @@ -0,0 +1,4 @@ +Download http://localhost:4260/@denotest%2fdual-cjs-esm +Download http://localhost:4260/@denotest/dual-cjs-esm/1.0.0.tgz +Initialize @denotest/dual-cjs-esm@1.0.0 +cjs diff --git a/tests/specs/npm/dual_cjs_esm/cjs_referrer/package.json b/tests/specs/npm/dual_cjs_esm/cjs_referrer/package.json new file mode 100644 index 000000000..e1b1e1a5f --- /dev/null +++ b/tests/specs/npm/dual_cjs_esm/cjs_referrer/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "@denotest/dual-cjs-esm": "*" + } +} diff --git a/tests/specs/npm/dual_cjs_esm/dual_cjs_esm/main.out b/tests/specs/npm/dual_cjs_esm/dual_cjs_esm/main.out deleted file mode 100644 index 32e232f11..000000000 --- a/tests/specs/npm/dual_cjs_esm/dual_cjs_esm/main.out +++ /dev/null @@ -1,3 +0,0 @@ -esm -cjs -cjs diff --git a/tests/specs/npm/dual_cjs_esm/dual_cjs_esm/main.ts b/tests/specs/npm/dual_cjs_esm/dual_cjs_esm/main.ts deleted file mode 100644 index 4f3b79667..000000000 --- a/tests/specs/npm/dual_cjs_esm/dual_cjs_esm/main.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { getKind } from "npm:@denotest/dual-cjs-esm@latest"; // test out @latest dist tag -import * as cjs from "npm:@denotest/dual-cjs-esm@latest/cjs/main.cjs"; - -console.log(getKind()); -console.log(cjs.getKind()); -console.log(cjs.getSubPathKind()); diff --git a/tests/specs/npm/dual_cjs_esm/esm_referrer/__test__.jsonc b/tests/specs/npm/dual_cjs_esm/esm_referrer/__test__.jsonc new file mode 100644 index 000000000..0ef147253 --- /dev/null +++ b/tests/specs/npm/dual_cjs_esm/esm_referrer/__test__.jsonc @@ -0,0 +1,4 @@ +{ + "args": "run -A --quiet main.ts", + "output": "main.out" +} diff --git a/tests/specs/npm/dual_cjs_esm/esm_referrer/main.out b/tests/specs/npm/dual_cjs_esm/esm_referrer/main.out new file mode 100644 index 000000000..32e232f11 --- /dev/null +++ b/tests/specs/npm/dual_cjs_esm/esm_referrer/main.out @@ -0,0 +1,3 @@ +esm +cjs +cjs diff --git a/tests/specs/npm/dual_cjs_esm/esm_referrer/main.ts b/tests/specs/npm/dual_cjs_esm/esm_referrer/main.ts new file mode 100644 index 000000000..4f3b79667 --- /dev/null +++ b/tests/specs/npm/dual_cjs_esm/esm_referrer/main.ts @@ -0,0 +1,6 @@ +import { getKind } from "npm:@denotest/dual-cjs-esm@latest"; // test out @latest dist tag +import * as cjs from "npm:@denotest/dual-cjs-esm@latest/cjs/main.cjs"; + +console.log(getKind()); +console.log(cjs.getKind()); +console.log(cjs.getSubPathKind()); diff --git a/tests/specs/npm/dual_cjs_esm/ts_referrer_type_cjs/__test__.jsonc b/tests/specs/npm/dual_cjs_esm/ts_referrer_type_cjs/__test__.jsonc new file mode 100644 index 000000000..cf19217d1 --- /dev/null +++ b/tests/specs/npm/dual_cjs_esm/ts_referrer_type_cjs/__test__.jsonc @@ -0,0 +1,14 @@ +{ + "tempDir": true, + "tests": { + "check": { + "args": "check --node-modules-dir=auto main.ts", + "output": "check.out", + "exitCode": 1 + }, + "run": { + "args": "run --node-modules-dir=auto --allow-read main.ts", + "output": "main.out" + } + } +} diff --git a/tests/specs/npm/dual_cjs_esm/ts_referrer_type_cjs/check.out b/tests/specs/npm/dual_cjs_esm/ts_referrer_type_cjs/check.out new file mode 100644 index 000000000..cbd7740a9 --- /dev/null +++ b/tests/specs/npm/dual_cjs_esm/ts_referrer_type_cjs/check.out @@ -0,0 +1,8 @@ +Download http://localhost:4260/@denotest%2fdual-cjs-esm +Download http://localhost:4260/@denotest/dual-cjs-esm/1.0.0.tgz +Initialize @denotest/dual-cjs-esm@1.0.0 +Check file:///[WILDLINE]/main.ts +error: TS2322 [ERROR]: Type '"cjs"' is not assignable to type '"other"'. +const kind: "other" = mod.getKind(); + ~~~~ + at file:///[WILDLINE]/main.ts:3:7 diff --git a/tests/specs/npm/dual_cjs_esm/ts_referrer_type_cjs/main.out b/tests/specs/npm/dual_cjs_esm/ts_referrer_type_cjs/main.out new file mode 100644 index 000000000..62ddbf479 --- /dev/null +++ b/tests/specs/npm/dual_cjs_esm/ts_referrer_type_cjs/main.out @@ -0,0 +1,4 @@ +Download http://localhost:4260/@denotest%2fdual-cjs-esm +Download http://localhost:4260/@denotest/dual-cjs-esm/1.0.0.tgz +Initialize @denotest/dual-cjs-esm@1.0.0 +cjs diff --git a/tests/specs/npm/dual_cjs_esm/ts_referrer_type_cjs/main.ts b/tests/specs/npm/dual_cjs_esm/ts_referrer_type_cjs/main.ts new file mode 100644 index 000000000..b8dd343f8 --- /dev/null +++ b/tests/specs/npm/dual_cjs_esm/ts_referrer_type_cjs/main.ts @@ -0,0 +1,4 @@ +import mod = require("@denotest/dual-cjs-esm"); + +const kind: "other" = mod.getKind(); +console.log(kind); diff --git a/tests/specs/npm/dual_cjs_esm/ts_referrer_type_cjs/package.json b/tests/specs/npm/dual_cjs_esm/ts_referrer_type_cjs/package.json new file mode 100644 index 000000000..419d3d9f1 --- /dev/null +++ b/tests/specs/npm/dual_cjs_esm/ts_referrer_type_cjs/package.json @@ -0,0 +1,6 @@ +{ + "type": "commonjs", + "dependencies": { + "@denotest/dual-cjs-esm": "*" + } +} diff --git a/tests/specs/npm/permissions_outside_package/__test__.jsonc b/tests/specs/npm/permissions_outside_package/__test__.jsonc index 56228296b..d5f6bf490 100644 --- a/tests/specs/npm/permissions_outside_package/__test__.jsonc +++ b/tests/specs/npm/permissions_outside_package/__test__.jsonc @@ -1,4 +1,5 @@ { - "args": "run --allow-read permissions_outside_package/main.ts", - "output": "permissions_outside_package/main.out" + "tempDir": true, + "args": "run --allow-read --node-modules-dir=none main.ts", + "output": "main.out" } diff --git a/tests/specs/npm/permissions_outside_package/foo/config.js b/tests/specs/npm/permissions_outside_package/foo/config.js new file mode 100644 index 000000000..e667790d2 --- /dev/null +++ b/tests/specs/npm/permissions_outside_package/foo/config.js @@ -0,0 +1,4 @@ +module.exports = { + "name": "foobar", + "version": "0.0.1", +}; diff --git a/tests/specs/npm/permissions_outside_package/foo/package.json b/tests/specs/npm/permissions_outside_package/foo/package.json new file mode 100644 index 000000000..95b43077e --- /dev/null +++ b/tests/specs/npm/permissions_outside_package/foo/package.json @@ -0,0 +1,5 @@ +{ + "name": "foobar", + "version": "0.0.1", + "type": "commonjs" +} diff --git a/tests/specs/npm/permissions_outside_package/main.out b/tests/specs/npm/permissions_outside_package/main.out new file mode 100644 index 000000000..0fde8cf87 --- /dev/null +++ b/tests/specs/npm/permissions_outside_package/main.out @@ -0,0 +1,3 @@ +Download http://localhost:4260/@denotest%2fpermissions-outside-package +Download http://localhost:4260/@denotest/permissions-outside-package/1.0.0.tgz +{ name: "foobar", version: "0.0.1" } diff --git a/tests/specs/npm/permissions_outside_package/main.ts b/tests/specs/npm/permissions_outside_package/main.ts new file mode 100644 index 000000000..a80713fa7 --- /dev/null +++ b/tests/specs/npm/permissions_outside_package/main.ts @@ -0,0 +1,5 @@ +import { loadConfigFile } from "npm:@denotest/permissions-outside-package"; + +const fileName = `${Deno.cwd()}/foo/config.js`; +const config = loadConfigFile(fileName); +console.log(config); diff --git a/tests/specs/npm/permissions_outside_package/package.json b/tests/specs/npm/permissions_outside_package/package.json new file mode 100644 index 000000000..2c63c0851 --- /dev/null +++ b/tests/specs/npm/permissions_outside_package/package.json @@ -0,0 +1,2 @@ +{ +} diff --git a/tests/specs/npm/permissions_outside_package/permissions_outside_package/foo/config.js b/tests/specs/npm/permissions_outside_package/permissions_outside_package/foo/config.js deleted file mode 100644 index e667790d2..000000000 --- a/tests/specs/npm/permissions_outside_package/permissions_outside_package/foo/config.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - "name": "foobar", - "version": "0.0.1", -}; diff --git a/tests/specs/npm/permissions_outside_package/permissions_outside_package/foo/package.json b/tests/specs/npm/permissions_outside_package/permissions_outside_package/foo/package.json deleted file mode 100644 index cc049e6ce..000000000 --- a/tests/specs/npm/permissions_outside_package/permissions_outside_package/foo/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "foobar", - "version": "0.0.1" -} diff --git a/tests/specs/npm/permissions_outside_package/permissions_outside_package/main.out b/tests/specs/npm/permissions_outside_package/permissions_outside_package/main.out deleted file mode 100644 index 0fde8cf87..000000000 --- a/tests/specs/npm/permissions_outside_package/permissions_outside_package/main.out +++ /dev/null @@ -1,3 +0,0 @@ -Download http://localhost:4260/@denotest%2fpermissions-outside-package -Download http://localhost:4260/@denotest/permissions-outside-package/1.0.0.tgz -{ name: "foobar", version: "0.0.1" } diff --git a/tests/specs/npm/permissions_outside_package/permissions_outside_package/main.ts b/tests/specs/npm/permissions_outside_package/permissions_outside_package/main.ts deleted file mode 100644 index 934a3eebc..000000000 --- a/tests/specs/npm/permissions_outside_package/permissions_outside_package/main.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { loadConfigFile } from "npm:@denotest/permissions-outside-package"; - -const fileName = `${Deno.cwd()}/permissions_outside_package/foo/config.js`; -const config = loadConfigFile(fileName); -console.log(config); diff --git a/tests/specs/run/import_common_js/__test__.jsonc b/tests/specs/run/import_common_js/__test__.jsonc index 6510dbad7..0602a09ba 100644 --- a/tests/specs/run/import_common_js/__test__.jsonc +++ b/tests/specs/run/import_common_js/__test__.jsonc @@ -1,21 +1,27 @@ { - "steps": [ - { "args": "run -R index.cjs", "output": "index.out" }, - { "args": "run -R main.ts", "output": "main.out" }, - { + "tests": { + "cjs_entrypoint": { + "args": "run -R index.cjs", + "output": "index.out" + }, + "esm_entrypoint": { + "args": "run -R main.ts", + "output": "main.out" + }, + "module_error": { "args": "run module_error.js", "output": "module_error.out", "exitCode": 1 }, - { + "exports_error": { "args": "run exports_error.js", "output": "exports_error.out", "exitCode": 1 }, - { + "require_error": { "args": "run require_error.js", "output": "require_error.out", "exitCode": 1 } - ] + } } diff --git a/tests/specs/run/import_common_js/a.js b/tests/specs/run/import_common_js/a.js deleted file mode 100644 index c465ab588..000000000 --- a/tests/specs/run/import_common_js/a.js +++ /dev/null @@ -1,7 +0,0 @@ -function foobar() { - console.log("foobar"); -} - -module.exports = { - foobar, -}; diff --git a/tests/specs/run/import_common_js/exports_error.out b/tests/specs/run/import_common_js/exports_error.out index b979cce5c..baa44682b 100644 --- a/tests/specs/run/import_common_js/exports_error.out +++ b/tests/specs/run/import_common_js/exports_error.out @@ -3,10 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); ^ at [WILDCARD]exports_error.js:1:23 - info: Deno supports CommonJS modules in .cjs files, or when there's a package.json - with "type": "commonjs" option and --unstable-detect-cjs flag is used. + info: Deno supports CommonJS modules in .cjs files, or when the closest + package.json has a "type": "commonjs" option. hint: Rewrite this module to ESM, or change the file extension to .cjs, - or add package.json next to the file with "type": "commonjs" option - and pass --unstable-detect-cjs flag. + or add package.json next to the file with "type": "commonjs" option. docs: https://docs.deno.com/go/commonjs diff --git a/tests/specs/run/import_common_js/index.cjs b/tests/specs/run/import_common_js/index.cjs index 18caf81e9..0026e237d 100644 --- a/tests/specs/run/import_common_js/index.cjs +++ b/tests/specs/run/import_common_js/index.cjs @@ -1,9 +1,7 @@ const process = require("process"); -const a = require("./a"); console.log(process.cwd()); module.exports = { cwd: process.cwd, - foobar: a.foobar, }; diff --git a/tests/specs/run/import_common_js/index.out b/tests/specs/run/import_common_js/index.out index 3650631b7..6a734b994 100644 --- a/tests/specs/run/import_common_js/index.out +++ b/tests/specs/run/import_common_js/index.out @@ -1 +1 @@ -[WILDCARD]import_common_js +[WILDLINE]import_common_js diff --git a/tests/specs/run/import_common_js/main.out b/tests/specs/run/import_common_js/main.out index 03301b362..9df312975 100644 --- a/tests/specs/run/import_common_js/main.out +++ b/tests/specs/run/import_common_js/main.out @@ -1,5 +1,3 @@ hello from foo node module [WILDCARD]import_common_js cjsModule.cwd() [WILDCARD]import_common_js -foobar -cjsModule.foobar() undefined diff --git a/tests/specs/run/import_common_js/module_error.out b/tests/specs/run/import_common_js/module_error.out index 654ee838d..957b19cb1 100644 --- a/tests/specs/run/import_common_js/module_error.out +++ b/tests/specs/run/import_common_js/module_error.out @@ -3,10 +3,9 @@ module.exports = { ^ at [WILDCARD]module_error.js:1:1 - info: Deno supports CommonJS modules in .cjs files, or when there's a package.json - with "type": "commonjs" option and --unstable-detect-cjs flag is used. + info: Deno supports CommonJS modules in .cjs files, or when the closest + package.json has a "type": "commonjs" option. hint: Rewrite this module to ESM, or change the file extension to .cjs, - or add package.json next to the file with "type": "commonjs" option - and pass --unstable-detect-cjs flag. + or add package.json next to the file with "type": "commonjs" option. docs: https://docs.deno.com/go/commonjs diff --git a/tests/specs/run/import_common_js/node_modules/foo/index.mjs b/tests/specs/run/import_common_js/node_modules/foo/index.mjs index cc93554c7..7a11d39ae 100644 --- a/tests/specs/run/import_common_js/node_modules/foo/index.mjs +++ b/tests/specs/run/import_common_js/node_modules/foo/index.mjs @@ -10,5 +10,4 @@ export default async function () { const cjsModule = await import(url.pathToFileURL(cjsFileToImport)); console.log("cjsModule.cwd()", cjsModule.cwd()); - console.log("cjsModule.foobar()", cjsModule.foobar()); } diff --git a/tests/specs/run/import_common_js/require_error.out b/tests/specs/run/import_common_js/require_error.out index 81ffd6591..e13db85e8 100644 --- a/tests/specs/run/import_common_js/require_error.out +++ b/tests/specs/run/import_common_js/require_error.out @@ -3,10 +3,9 @@ const process = require("process"); ^ at [WILDCARD]require_error.js:1:17 - info: Deno supports CommonJS modules in .cjs files, or when there's a package.json - with "type": "commonjs" option and --unstable-detect-cjs flag is used. + info: Deno supports CommonJS modules in .cjs files, or when the closest + package.json has a "type": "commonjs" option. hint: Rewrite this module to ESM, or change the file extension to .cjs, - or add package.json next to the file with "type": "commonjs" option - and pass --unstable-detect-cjs flag. + or add package.json next to the file with "type": "commonjs" option. docs: https://docs.deno.com/go/commonjs diff --git a/tests/specs/run/npm_pkg_requires_esm_js/__test__.jsonc b/tests/specs/run/npm_pkg_requires_esm_js/__test__.jsonc new file mode 100644 index 000000000..3da8db404 --- /dev/null +++ b/tests/specs/run/npm_pkg_requires_esm_js/__test__.jsonc @@ -0,0 +1,5 @@ +{ + "args": "run -A main.js", + "output": "output.out", + "exitCode": 1 +} diff --git a/tests/specs/run/npm_pkg_requires_esm_js/file.js b/tests/specs/run/npm_pkg_requires_esm_js/file.js new file mode 100644 index 000000000..d9536a69b --- /dev/null +++ b/tests/specs/run/npm_pkg_requires_esm_js/file.js @@ -0,0 +1 @@ +console.log(import.meta.url); diff --git a/tests/specs/run/npm_pkg_requires_esm_js/logs_require.js b/tests/specs/run/npm_pkg_requires_esm_js/logs_require.js new file mode 100644 index 000000000..984e1f3e7 --- /dev/null +++ b/tests/specs/run/npm_pkg_requires_esm_js/logs_require.js @@ -0,0 +1 @@ +console.log(require); diff --git a/tests/specs/run/npm_pkg_requires_esm_js/main.js b/tests/specs/run/npm_pkg_requires_esm_js/main.js new file mode 100644 index 000000000..3704c8bf6 --- /dev/null +++ b/tests/specs/run/npm_pkg_requires_esm_js/main.js @@ -0,0 +1,5 @@ +import doRequire from "package"; +import path from "node:path"; + +doRequire(path.resolve(import.meta.dirname, "file.js")); +doRequire(path.resolve(import.meta.dirname, "logs_require.js")); diff --git a/tests/specs/run/npm_pkg_requires_esm_js/node_modules/package/index.js b/tests/specs/run/npm_pkg_requires_esm_js/node_modules/package/index.js new file mode 100644 index 000000000..5d7872371 --- /dev/null +++ b/tests/specs/run/npm_pkg_requires_esm_js/node_modules/package/index.js @@ -0,0 +1,3 @@ +module.exports = (file) => { + return require(file); +}; diff --git a/tests/specs/run/npm_pkg_requires_esm_js/node_modules/package/package.json b/tests/specs/run/npm_pkg_requires_esm_js/node_modules/package/package.json new file mode 100644 index 000000000..5723987e9 --- /dev/null +++ b/tests/specs/run/npm_pkg_requires_esm_js/node_modules/package/package.json @@ -0,0 +1,4 @@ +{ + "name": "package", + "version": "1.0.0" +} \ No newline at end of file diff --git a/tests/specs/run/npm_pkg_requires_esm_js/output.out b/tests/specs/run/npm_pkg_requires_esm_js/output.out new file mode 100644 index 000000000..2cae7108b --- /dev/null +++ b/tests/specs/run/npm_pkg_requires_esm_js/output.out @@ -0,0 +1,12 @@ +file:///[WILDLINE]/file.js +error: Uncaught (in promise) ReferenceError: require is not defined +console.log(require); + ^ + at [WILDCARD] + + info: Deno supports CommonJS modules in .cjs files, or when the closest + package.json has a "type": "commonjs" option. + hint: Rewrite this module to ESM, + or change the file extension to .cjs, + or add package.json next to the file with "type": "commonjs" option. + docs: https://docs.deno.com/go/commonjs diff --git a/tests/specs/run/npm_pkg_requires_esm_js/package.json b/tests/specs/run/npm_pkg_requires_esm_js/package.json new file mode 100644 index 000000000..e69de29bb diff --git a/tests/specs/run/package_json_type/commonjs/basic/deno.jsonc b/tests/specs/run/package_json_type/commonjs/basic/deno.jsonc deleted file mode 100644 index 35f64c86f..000000000 --- a/tests/specs/run/package_json_type/commonjs/basic/deno.jsonc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "unstable": [ - "detect-cjs" - ] -} diff --git a/tests/specs/run/package_json_type/commonjs/basic/main_mix.out b/tests/specs/run/package_json_type/commonjs/basic/main_mix.out index 78f421644..65671fd61 100644 --- a/tests/specs/run/package_json_type/commonjs/basic/main_mix.out +++ b/tests/specs/run/package_json_type/commonjs/basic/main_mix.out @@ -4,10 +4,9 @@ console.log(require("./add").add(1, 2)); ^ at file:///[WILDLINE]main_mix.js:[WILDLINE] - info: Deno supports CommonJS modules in .cjs files, or when there's a package.json - with "type": "commonjs" option and --unstable-detect-cjs flag is used. + info: Deno supports CommonJS modules in .cjs files, or when the closest + package.json has a "type": "commonjs" option. hint: Rewrite this module to ESM, or change the file extension to .cjs, - or add package.json next to the file with "type": "commonjs" option - and pass --unstable-detect-cjs flag. + or add package.json next to the file with "type": "commonjs" option. docs: https://docs.deno.com/go/commonjs diff --git a/tests/specs/run/package_json_type/commonjs/jsx/deno.jsonc b/tests/specs/run/package_json_type/commonjs/jsx/deno.jsonc index 192ddb98c..31d05ffb7 100644 --- a/tests/specs/run/package_json_type/commonjs/jsx/deno.jsonc +++ b/tests/specs/run/package_json_type/commonjs/jsx/deno.jsonc @@ -3,8 +3,5 @@ "compilerOptions": { "jsx": "react-jsx", "jsxImportSource": "react" - }, - "unstable": [ - "detect-cjs" - ] + } } diff --git a/tests/specs/run/package_json_type/none/deno.jsonc b/tests/specs/run/package_json_type/none/deno.jsonc deleted file mode 100644 index 35f64c86f..000000000 --- a/tests/specs/run/package_json_type/none/deno.jsonc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "unstable": [ - "detect-cjs" - ] -} diff --git a/tests/specs/run/package_json_type/none/main_cjs.out b/tests/specs/run/package_json_type/none/main_cjs.out index 8d34808fb..afa5028f4 100644 --- a/tests/specs/run/package_json_type/none/main_cjs.out +++ b/tests/specs/run/package_json_type/none/main_cjs.out @@ -3,10 +3,9 @@ const { add } = require("./add"); ^ at file:///[WILDLINE] - info: Deno supports CommonJS modules in .cjs files, or when there's a package.json - with "type": "commonjs" option and --unstable-detect-cjs flag is used. + info: Deno supports CommonJS modules in .cjs files, or when the closest + package.json has a "type": "commonjs" option. hint: Rewrite this module to ESM, or change the file extension to .cjs, - or add package.json next to the file with "type": "commonjs" option - and pass --unstable-detect-cjs flag. + or add package.json next to the file with "type": "commonjs" option. docs: https://docs.deno.com/go/commonjs diff --git a/tests/specs/run/require_esm/main.out b/tests/specs/run/require_esm/main.out index 57b842b34..4890e1a49 100644 --- a/tests/specs/run/require_esm/main.out +++ b/tests/specs/run/require_esm/main.out @@ -1,13 +1,4 @@ [Module: null prototype] { sync_js: 1 } [Module: null prototype] { sync_mjs: 1 } 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]) - at Module.load (node:module:[WILDCARD]) - at Function.Module._load (node:module:[WILDCARD]) - at Module.require (node:module:[WILDCARD]) - at require (node:module:[WILDCARD]) - at Object. (file:[WILDCARD]/tests/specs/run/require_esm/main.cjs:[WILDCARD]) - at Object. (file:[WILDCARD]/tests/specs/run/require_esm/main.cjs:[WILDCARD]) - at Module._compile (node:module:[WILDCARD]) + at [WILDCARD] diff --git a/tests/specs/run/stdin_type_cjs/__test__.jsonc b/tests/specs/run/stdin_type_cjs/__test__.jsonc new file mode 100644 index 000000000..e60af4a80 --- /dev/null +++ b/tests/specs/run/stdin_type_cjs/__test__.jsonc @@ -0,0 +1,5 @@ +{ + "args": "run --quiet -", + "output": "1\n", + "input": "console.log(1)" +} diff --git a/tests/specs/run/stdin_type_cjs/package.json b/tests/specs/run/stdin_type_cjs/package.json new file mode 100644 index 000000000..5bbefffba --- /dev/null +++ b/tests/specs/run/stdin_type_cjs/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/tests/specs/run/stdin_type_cjs/stdin_read_all.ts b/tests/specs/run/stdin_type_cjs/stdin_read_all.ts new file mode 100644 index 000000000..2ecae40b7 --- /dev/null +++ b/tests/specs/run/stdin_type_cjs/stdin_read_all.ts @@ -0,0 +1 @@ +Deno.stdin.readable.pipeTo(Deno.stdout.writable); diff --git a/tests/specs/schema.json b/tests/specs/schema.json index 8f3953ee4..2b35d9bd7 100644 --- a/tests/specs/schema.json +++ b/tests/specs/schema.json @@ -36,6 +36,9 @@ "flaky": { "type": "boolean" }, + "symlinkedTempDir": { + "type": "boolean" + }, "if": { "type": "string", "examples": [ diff --git a/tests/util/server/src/servers/mod.rs b/tests/util/server/src/servers/mod.rs index d9adde542..0b1d99aeb 100644 --- a/tests/util/server/src/servers/mod.rs +++ b/tests/util/server/src/servers/mod.rs @@ -807,17 +807,17 @@ async fn main_server( (_, "/jsx/jsx-runtime") | (_, "/jsx/jsx-dev-runtime") => { let mut res = Response::new(string_body( r#"export function jsx( - _type, - _props, - _key, - _source, - _self, - ) {} - export const jsxs = jsx; - export const jsxDEV = jsx; - export const Fragment = Symbol("Fragment"); - console.log("imported", import.meta.url); - "#, + _type, + _props, + _key, + _source, + _self, +) {} +export const jsxs = jsx; +export const jsxDEV = jsx; +export const Fragment = Symbol("Fragment"); +console.log("imported", import.meta.url); +"#, )); res.headers_mut().insert( "Content-type", -- cgit v1.2.3