diff --git a/tests/integration/npm_tests.rs b/tests/integration/npm_tests.rs index 3aea62fc6c..004136ae7f 100644 --- a/tests/integration/npm_tests.rs +++ b/tests/integration/npm_tests.rs @@ -145,17 +145,6 @@ itest!(mixed_case_package_name_local_dir { temp_cwd: true, }); -// TODO(2.0): this should be rewritten to a spec test and first run `deno install` -// itest!(local_dir_resolves_symlinks { -// args: "run -A index.js", -// output: "npm/local_dir_resolves_symlinks/index.out", -// exit_code: 0, -// envs: env_vars_for_npm_tests(), -// cwd: Some("npm/local_dir_resolves_symlinks/"), -// copy_temp_dir: Some("npm/local_dir_resolves_symlinks/"), -// http_server: true, -// }); - // FIXME(bartlomieju): npm: specifiers are not handled in dynamic imports // at the moment // itest!(dynamic_import { @@ -1561,28 +1550,6 @@ itest!(create_require { http_server: true, }); -// TODO(2.0): this should be rewritten to a spec test and first run `deno install` -// itest!(node_modules_import_run { -// args: "run --quiet main.ts", -// output: "npm/node_modules_import/main.out", -// http_server: true, -// copy_temp_dir: Some("npm/node_modules_import/"), -// cwd: Some("npm/node_modules_import/"), -// envs: env_vars_for_npm_tests(), -// exit_code: 0, -// }); - -// TODO(2.0): this should be rewritten to a spec test and first run `deno install` -// itest!(node_modules_import_check { -// args: "check --quiet main.ts", -// output: "npm/node_modules_import/main_check.out", -// envs: env_vars_for_npm_tests(), -// http_server: true, -// cwd: Some("npm/node_modules_import/"), -// copy_temp_dir: Some("npm/node_modules_import/"), -// exit_code: 1, -// }); - itest!(non_existent_dep { args: "cache npm:@denotest/non-existent-dep", envs: env_vars_for_npm_tests(), diff --git a/tests/specs/npm/local_dir_resolves_symlinks/__test__.jsonc b/tests/specs/npm/local_dir_resolves_symlinks/__test__.jsonc new file mode 100644 index 0000000000..a846fdcb4e --- /dev/null +++ b/tests/specs/npm/local_dir_resolves_symlinks/__test__.jsonc @@ -0,0 +1,14 @@ +{ + "tempDir": true, + "steps": [ + { + "args": "install", + "output": "install.out" + }, + { + "args": "run -A index.js", + "output": "index.out", + "exitCode": 0 + } + ] +} diff --git a/tests/testdata/npm/local_dir_resolves_symlinks/index.js b/tests/specs/npm/local_dir_resolves_symlinks/index.js similarity index 100% rename from tests/testdata/npm/local_dir_resolves_symlinks/index.js rename to tests/specs/npm/local_dir_resolves_symlinks/index.js diff --git a/tests/specs/npm/local_dir_resolves_symlinks/index.out b/tests/specs/npm/local_dir_resolves_symlinks/index.out new file mode 100644 index 0000000000..7550ee1323 --- /dev/null +++ b/tests/specs/npm/local_dir_resolves_symlinks/index.out @@ -0,0 +1 @@ +true it works diff --git a/tests/specs/npm/local_dir_resolves_symlinks/install.out b/tests/specs/npm/local_dir_resolves_symlinks/install.out new file mode 100644 index 0000000000..0c15b2a0e9 --- /dev/null +++ b/tests/specs/npm/local_dir_resolves_symlinks/install.out @@ -0,0 +1,23 @@ +[UNORDERED_START] +Download http://localhost:4260/define-properties +Download http://localhost:4260/has-property-descriptors +Download http://localhost:4260/object-keys +Download http://localhost:4260/get-intrinsic +Download http://localhost:4260/function-bind +Download http://localhost:4260/has +Download http://localhost:4260/has-symbols +Download http://localhost:4260/define-properties/define-properties-1.2.0.tgz +Download http://localhost:4260/has-property-descriptors/has-property-descriptors-1.0.0.tgz +Download http://localhost:4260/object-keys/object-keys-1.1.1.tgz +Download http://localhost:4260/get-intrinsic/get-intrinsic-1.2.0.tgz +Download http://localhost:4260/has-symbols/has-symbols-1.0.3.tgz +Download http://localhost:4260/has/has-1.0.3.tgz +Download http://localhost:4260/function-bind/function-bind-1.1.1.tgz +Initialize has@1.0.3 +Initialize define-properties@1.2.0 +Initialize has-property-descriptors@1.0.0 +Initialize object-keys@1.1.1 +Initialize get-intrinsic@1.2.0 +Initialize function-bind@1.1.1 +Initialize has-symbols@1.0.3 +[UNORDERED_END] diff --git a/tests/testdata/npm/local_dir_resolves_symlinks/package.json b/tests/specs/npm/local_dir_resolves_symlinks/package.json similarity index 100% rename from tests/testdata/npm/local_dir_resolves_symlinks/package.json rename to tests/specs/npm/local_dir_resolves_symlinks/package.json diff --git a/tests/specs/npm/local_dir_resolves_symlinks_auto/__test__.jsonc b/tests/specs/npm/local_dir_resolves_symlinks_auto/__test__.jsonc new file mode 100644 index 0000000000..78cd876f2b --- /dev/null +++ b/tests/specs/npm/local_dir_resolves_symlinks_auto/__test__.jsonc @@ -0,0 +1,10 @@ +{ + "tempDir": true, + "steps": [ + { + "args": "run -A index.js", + "output": "index.out", + "exitCode": 0 + } + ] +} diff --git a/tests/specs/npm/local_dir_resolves_symlinks_auto/deno.json b/tests/specs/npm/local_dir_resolves_symlinks_auto/deno.json new file mode 100644 index 0000000000..fbd70ec480 --- /dev/null +++ b/tests/specs/npm/local_dir_resolves_symlinks_auto/deno.json @@ -0,0 +1,3 @@ +{ + "nodeModulesDir": "auto" +} diff --git a/tests/specs/npm/local_dir_resolves_symlinks_auto/index.js b/tests/specs/npm/local_dir_resolves_symlinks_auto/index.js new file mode 100644 index 0000000000..72d8913f51 --- /dev/null +++ b/tests/specs/npm/local_dir_resolves_symlinks_auto/index.js @@ -0,0 +1,3 @@ +import * as d from "define-properties"; + +console.log(typeof d.default === "function", "it works"); diff --git a/tests/specs/npm/local_dir_resolves_symlinks_auto/index.out b/tests/specs/npm/local_dir_resolves_symlinks_auto/index.out new file mode 100644 index 0000000000..0cb3a15938 --- /dev/null +++ b/tests/specs/npm/local_dir_resolves_symlinks_auto/index.out @@ -0,0 +1,24 @@ +[UNORDERED_START] +Download http://localhost:4260/define-properties +Download http://localhost:4260/has-property-descriptors +Download http://localhost:4260/object-keys +Download http://localhost:4260/get-intrinsic +Download http://localhost:4260/function-bind +Download http://localhost:4260/has +Download http://localhost:4260/has-symbols +Download http://localhost:4260/define-properties/define-properties-1.2.0.tgz +Download http://localhost:4260/has-property-descriptors/has-property-descriptors-1.0.0.tgz +Download http://localhost:4260/object-keys/object-keys-1.1.1.tgz +Download http://localhost:4260/get-intrinsic/get-intrinsic-1.2.0.tgz +Download http://localhost:4260/has-symbols/has-symbols-1.0.3.tgz +Download http://localhost:4260/has/has-1.0.3.tgz +Download http://localhost:4260/function-bind/function-bind-1.1.1.tgz +Initialize has@1.0.3 +Initialize define-properties@1.2.0 +Initialize has-property-descriptors@1.0.0 +Initialize object-keys@1.1.1 +Initialize get-intrinsic@1.2.0 +Initialize function-bind@1.1.1 +Initialize has-symbols@1.0.3 +[UNORDERED_END] +true it works diff --git a/tests/specs/npm/local_dir_resolves_symlinks_auto/package.json b/tests/specs/npm/local_dir_resolves_symlinks_auto/package.json new file mode 100644 index 0000000000..4c974022e3 --- /dev/null +++ b/tests/specs/npm/local_dir_resolves_symlinks_auto/package.json @@ -0,0 +1,7 @@ +{ + "name": "foo", + "type": "module", + "dependencies": { + "define-properties": "^1.2.0" + } +} diff --git a/tests/specs/npm/node_modules_import/__test__.jsonc b/tests/specs/npm/node_modules_import/__test__.jsonc new file mode 100644 index 0000000000..61a1706a88 --- /dev/null +++ b/tests/specs/npm/node_modules_import/__test__.jsonc @@ -0,0 +1,31 @@ +{ + "tempDir": true, + "tests": { + "node_modules_import_run": { + "steps": [ + { + "args": "install", + "output": "install.out" + }, + { + "args": "run --quiet main.ts", + "output": "main.out", + "exitCode": 0 + } + ] + }, + "node_modules_import_check": { + "steps": [ + { + "args": "install", + "output": "install.out" + }, + { + "args": "check --quiet main.ts", + "output": "main_check.out", + "exitCode": 1 + } + ] + } + } +} diff --git a/tests/specs/npm/node_modules_import/install.out b/tests/specs/npm/node_modules_import/install.out new file mode 100644 index 0000000000..b8114c12a0 --- /dev/null +++ b/tests/specs/npm/node_modules_import/install.out @@ -0,0 +1,3 @@ +Download http://localhost:4260/@denotest/esm-basic +Download http://localhost:4260/@denotest/esm-basic/1.0.0.tgz +Initialize @denotest/esm-basic@1.0.0 diff --git a/tests/testdata/npm/node_modules_import/main.out b/tests/specs/npm/node_modules_import/main.out similarity index 100% rename from tests/testdata/npm/node_modules_import/main.out rename to tests/specs/npm/node_modules_import/main.out diff --git a/tests/testdata/npm/node_modules_import/main.ts b/tests/specs/npm/node_modules_import/main.ts similarity index 100% rename from tests/testdata/npm/node_modules_import/main.ts rename to tests/specs/npm/node_modules_import/main.ts diff --git a/tests/testdata/npm/node_modules_import/main_check.out b/tests/specs/npm/node_modules_import/main_check.out similarity index 67% rename from tests/testdata/npm/node_modules_import/main_check.out rename to tests/specs/npm/node_modules_import/main_check.out index cf7cc110d4..7fd7013fc4 100644 --- a/tests/testdata/npm/node_modules_import/main_check.out +++ b/tests/specs/npm/node_modules_import/main_check.out @@ -1,16 +1,16 @@ error: TS2322 [ERROR]: Type 'number' is not assignable to type 'string'. const value1: string = myImport1.getValue(); ~~~~~~ - at file:///[WILDCARD]/npm/node_modules_import/main.ts:9:7 + at file:///[WILDCARD]/main.ts:9:7 TS2322 [ERROR]: Type 'number' is not assignable to type 'string'. const value2: string = myImport2.getValue(); ~~~~~~ - at file:///[WILDCARD]/npm/node_modules_import/main.ts:10:7 + at file:///[WILDCARD]/main.ts:10:7 TS2322 [ERROR]: Type 'number' is not assignable to type 'string'. const value3: string = myImport3.getValue(); ~~~~~~ - at file:///[WILDCARD]/npm/node_modules_import/main.ts:11:7 + at file:///[WILDCARD]/main.ts:11:7 Found 3 errors. diff --git a/tests/testdata/npm/node_modules_import/package.json b/tests/specs/npm/node_modules_import/package.json similarity index 100% rename from tests/testdata/npm/node_modules_import/package.json rename to tests/specs/npm/node_modules_import/package.json diff --git a/tests/specs/npm/node_modules_import_auto/__test__.jsonc b/tests/specs/npm/node_modules_import_auto/__test__.jsonc new file mode 100644 index 0000000000..4f18ebe60b --- /dev/null +++ b/tests/specs/npm/node_modules_import_auto/__test__.jsonc @@ -0,0 +1,23 @@ +{ + "tempDir": true, + "tests": { + "node_modules_import_run": { + "steps": [ + { + "args": "run main.ts", + "output": "main.out", + "exitCode": 0 + } + ] + }, + "node_modules_import_check": { + "steps": [ + { + "args": "check main.ts", + "output": "main_check.out", + "exitCode": 1 + } + ] + } + } +} diff --git a/tests/specs/npm/node_modules_import_auto/deno.json b/tests/specs/npm/node_modules_import_auto/deno.json new file mode 100644 index 0000000000..fbd70ec480 --- /dev/null +++ b/tests/specs/npm/node_modules_import_auto/deno.json @@ -0,0 +1,3 @@ +{ + "nodeModulesDir": "auto" +} diff --git a/tests/specs/npm/node_modules_import_auto/main.out b/tests/specs/npm/node_modules_import_auto/main.out new file mode 100644 index 0000000000..8fda5cda1e --- /dev/null +++ b/tests/specs/npm/node_modules_import_auto/main.out @@ -0,0 +1,6 @@ +Download http://localhost:4260/@denotest/esm-basic +Download http://localhost:4260/@denotest/esm-basic/1.0.0.tgz +Initialize @denotest/esm-basic@1.0.0 +2 +2 +2 diff --git a/tests/specs/npm/node_modules_import_auto/main.ts b/tests/specs/npm/node_modules_import_auto/main.ts new file mode 100644 index 0000000000..848ca0f81e --- /dev/null +++ b/tests/specs/npm/node_modules_import_auto/main.ts @@ -0,0 +1,16 @@ +import * as myImport1 from "@denotest/esm-basic"; +import * as myImport2 from "./node_modules/@denotest/esm-basic/main.mjs"; +import * as myImport3 from "@denotest/esm-basic/main.mjs"; + +myImport1.setValue(5); +myImport2.setValue(2); + +// these should all give type errors +const value1: string = myImport1.getValue(); +const value2: string = myImport2.getValue(); +const value3: string = myImport3.getValue(); + +// these should all be equal because it should be mutating the same module +console.log(value1); +console.log(value2); +console.log(value3); diff --git a/tests/specs/npm/node_modules_import_auto/main_check.out b/tests/specs/npm/node_modules_import_auto/main_check.out new file mode 100644 index 0000000000..24249f357b --- /dev/null +++ b/tests/specs/npm/node_modules_import_auto/main_check.out @@ -0,0 +1,20 @@ +Download http://localhost:4260/@denotest/esm-basic +Download http://localhost:4260/@denotest/esm-basic/1.0.0.tgz +Initialize @denotest/esm-basic@1.0.0 +Check file:///[WILDCARD]/main.ts +error: TS2322 [ERROR]: Type 'number' is not assignable to type 'string'. +const value1: string = myImport1.getValue(); + ~~~~~~ + at file:///[WILDCARD]/main.ts:9:7 + +TS2322 [ERROR]: Type 'number' is not assignable to type 'string'. +const value2: string = myImport2.getValue(); + ~~~~~~ + at file:///[WILDCARD]/main.ts:10:7 + +TS2322 [ERROR]: Type 'number' is not assignable to type 'string'. +const value3: string = myImport3.getValue(); + ~~~~~~ + at file:///[WILDCARD]/main.ts:11:7 + +Found 3 errors. diff --git a/tests/specs/npm/node_modules_import_auto/package.json b/tests/specs/npm/node_modules_import_auto/package.json new file mode 100644 index 0000000000..ed77298e0c --- /dev/null +++ b/tests/specs/npm/node_modules_import_auto/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "@denotest/esm-basic": "^1" + } +} diff --git a/tests/testdata/npm/local_dir_resolves_symlinks/index.out b/tests/testdata/npm/local_dir_resolves_symlinks/index.out deleted file mode 100644 index 25d44c6b8e..0000000000 --- a/tests/testdata/npm/local_dir_resolves_symlinks/index.out +++ /dev/null @@ -1,2 +0,0 @@ -Download [WILDCARD] -true it works diff --git a/tools/lint.js b/tools/lint.js index de0db015f3..496e83fc49 100755 --- a/tools/lint.js +++ b/tools/lint.js @@ -214,7 +214,7 @@ async function ensureNoNewITests() { "lsp_tests.rs": 0, "node_compat_tests.rs": 0, "node_unit_tests.rs": 2, - "npm_tests.rs": 92, + "npm_tests.rs": 89, "pm_tests.rs": 0, "publish_tests.rs": 0, "repl_tests.rs": 0,