refactor(tests): migrate npm itests to specs (#25764)

Towards https://github.com/denoland/deno/issues/25241
This commit is contained in:
Satya Rohith 2024-09-21 02:08:32 +05:30 committed by GitHub
parent 3e053f8f06
commit 94bdebe399
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
25 changed files with 196 additions and 39 deletions

View File

@ -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(),

View File

@ -0,0 +1,14 @@
{
"tempDir": true,
"steps": [
{
"args": "install",
"output": "install.out"
},
{
"args": "run -A index.js",
"output": "index.out",
"exitCode": 0
}
]
}

View File

@ -0,0 +1 @@
true it works

View File

@ -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]

View File

@ -0,0 +1,10 @@
{
"tempDir": true,
"steps": [
{
"args": "run -A index.js",
"output": "index.out",
"exitCode": 0
}
]
}

View File

@ -0,0 +1,3 @@
{
"nodeModulesDir": "auto"
}

View File

@ -0,0 +1,3 @@
import * as d from "define-properties";
console.log(typeof d.default === "function", "it works");

View File

@ -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

View File

@ -0,0 +1,7 @@
{
"name": "foo",
"type": "module",
"dependencies": {
"define-properties": "^1.2.0"
}
}

View File

@ -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
}
]
}
}
}

View File

@ -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

View File

@ -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.

View File

@ -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
}
]
}
}
}

View File

@ -0,0 +1,3 @@
{
"nodeModulesDir": "auto"
}

View File

@ -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

View File

@ -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);

View File

@ -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.

View File

@ -0,0 +1,5 @@
{
"dependencies": {
"@denotest/esm-basic": "^1"
}
}

View File

@ -1,2 +0,0 @@
Download [WILDCARD]
true it works

View File

@ -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,