summaryrefslogtreecommitdiff
path: root/tests/specs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2024-07-23 20:22:24 -0400
committerGitHub <noreply@github.com>2024-07-24 00:22:24 +0000
commit52ababc4bf948904092cff54c2ab8b91f6b9b443 (patch)
tree77dc2fe4a9eb79ce893e1593822df4de1f564260 /tests/specs
parent445e05a39d005eab6f7d2f1f67a7ae2d7c85b1b3 (diff)
fix(node): better detection for when to surface node resolution errors (#24653)
Diffstat (limited to 'tests/specs')
-rw-r--r--tests/specs/node/byonm_phantom_dep_res_failure/__test__.jsonc13
-rw-r--r--tests/specs/node/byonm_phantom_dep_res_failure/bad_import.out2
-rw-r--r--tests/specs/node/byonm_phantom_dep_res_failure/bad_import.ts3
-rw-r--r--tests/specs/node/byonm_phantom_dep_res_failure/deno.json3
-rw-r--r--tests/specs/node/byonm_phantom_dep_res_failure/good_import.out1
-rw-r--r--tests/specs/node/byonm_phantom_dep_res_failure/good_import.ts3
-rw-r--r--tests/specs/node/byonm_phantom_dep_res_failure/node_modules/package/main.js1
-rw-r--r--tests/specs/node/byonm_phantom_dep_res_failure/node_modules/package/package.json4
-rw-r--r--tests/specs/node/byonm_phantom_dep_res_failure/package.json2
-rw-r--r--tests/specs/npm/esm_import_cjs_default/__test__.jsonc4
-rw-r--r--tests/specs/npm/esm_import_cjs_default/main.out58
-rw-r--r--tests/specs/npm/esm_import_cjs_default/main.ts23
-rw-r--r--tests/specs/npm/no_types_cjs/__test__.jsonc4
-rw-r--r--tests/specs/npm/no_types_cjs/main.out3
-rw-r--r--tests/specs/npm/no_types_cjs/main.ts7
-rw-r--r--tests/specs/npm/no_types_in_conditional_exports/__test__.jsonc4
-rw-r--r--tests/specs/npm/no_types_in_conditional_exports/main.out4
-rw-r--r--tests/specs/npm/no_types_in_conditional_exports/main.ts2
-rw-r--r--tests/specs/npm/types_general/__test__.jsonc5
-rw-r--r--tests/specs/npm/types_general/main.out80
-rw-r--r--tests/specs/npm/types_general/main.ts27
21 files changed, 253 insertions, 0 deletions
diff --git a/tests/specs/node/byonm_phantom_dep_res_failure/__test__.jsonc b/tests/specs/node/byonm_phantom_dep_res_failure/__test__.jsonc
new file mode 100644
index 000000000..35e0a7686
--- /dev/null
+++ b/tests/specs/node/byonm_phantom_dep_res_failure/__test__.jsonc
@@ -0,0 +1,13 @@
+{
+ "tests": {
+ "bad_import": {
+ "args": "run bad_import.ts",
+ "output": "bad_import.out",
+ "exitCode": 1
+ },
+ "good_import": {
+ "args": "run good_import.ts",
+ "output": "good_import.out"
+ }
+ }
+}
diff --git a/tests/specs/node/byonm_phantom_dep_res_failure/bad_import.out b/tests/specs/node/byonm_phantom_dep_res_failure/bad_import.out
new file mode 100644
index 000000000..a524720e3
--- /dev/null
+++ b/tests/specs/node/byonm_phantom_dep_res_failure/bad_import.out
@@ -0,0 +1,2 @@
+error: [ERR_MODULE_NOT_FOUND] Cannot find module 'file:///[WILDLINE]/node_modules/package/index.js' imported from 'file:///[WILDLINE]/bad_import.ts'
+ at file:///[WILDLINE]/bad_import.ts:1:16
diff --git a/tests/specs/node/byonm_phantom_dep_res_failure/bad_import.ts b/tests/specs/node/byonm_phantom_dep_res_failure/bad_import.ts
new file mode 100644
index 000000000..e20fe1fcf
--- /dev/null
+++ b/tests/specs/node/byonm_phantom_dep_res_failure/bad_import.ts
@@ -0,0 +1,3 @@
+import hi from "package";
+
+hi();
diff --git a/tests/specs/node/byonm_phantom_dep_res_failure/deno.json b/tests/specs/node/byonm_phantom_dep_res_failure/deno.json
new file mode 100644
index 000000000..6134d86d1
--- /dev/null
+++ b/tests/specs/node/byonm_phantom_dep_res_failure/deno.json
@@ -0,0 +1,3 @@
+{
+ "unstable": ["byonm"]
+}
diff --git a/tests/specs/node/byonm_phantom_dep_res_failure/good_import.out b/tests/specs/node/byonm_phantom_dep_res_failure/good_import.out
new file mode 100644
index 000000000..45b983be3
--- /dev/null
+++ b/tests/specs/node/byonm_phantom_dep_res_failure/good_import.out
@@ -0,0 +1 @@
+hi
diff --git a/tests/specs/node/byonm_phantom_dep_res_failure/good_import.ts b/tests/specs/node/byonm_phantom_dep_res_failure/good_import.ts
new file mode 100644
index 000000000..2b17d3e33
--- /dev/null
+++ b/tests/specs/node/byonm_phantom_dep_res_failure/good_import.ts
@@ -0,0 +1,3 @@
+import hi from "package/main.js";
+
+hi();
diff --git a/tests/specs/node/byonm_phantom_dep_res_failure/node_modules/package/main.js b/tests/specs/node/byonm_phantom_dep_res_failure/node_modules/package/main.js
new file mode 100644
index 000000000..bc76b8e9e
--- /dev/null
+++ b/tests/specs/node/byonm_phantom_dep_res_failure/node_modules/package/main.js
@@ -0,0 +1 @@
+module.exports = () => console.log('hi'); \ No newline at end of file
diff --git a/tests/specs/node/byonm_phantom_dep_res_failure/node_modules/package/package.json b/tests/specs/node/byonm_phantom_dep_res_failure/node_modules/package/package.json
new file mode 100644
index 000000000..5723987e9
--- /dev/null
+++ b/tests/specs/node/byonm_phantom_dep_res_failure/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/node/byonm_phantom_dep_res_failure/package.json b/tests/specs/node/byonm_phantom_dep_res_failure/package.json
new file mode 100644
index 000000000..2c63c0851
--- /dev/null
+++ b/tests/specs/node/byonm_phantom_dep_res_failure/package.json
@@ -0,0 +1,2 @@
+{
+}
diff --git a/tests/specs/npm/esm_import_cjs_default/__test__.jsonc b/tests/specs/npm/esm_import_cjs_default/__test__.jsonc
new file mode 100644
index 000000000..b2a25914f
--- /dev/null
+++ b/tests/specs/npm/esm_import_cjs_default/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-read --allow-env --check=all main.ts",
+ "output": "main.out"
+}
diff --git a/tests/specs/npm/esm_import_cjs_default/main.out b/tests/specs/npm/esm_import_cjs_default/main.out
new file mode 100644
index 000000000..ec7962e5a
--- /dev/null
+++ b/tests/specs/npm/esm_import_cjs_default/main.out
@@ -0,0 +1,58 @@
+[UNORDERED_START]
+Download http://localhost:4260/@denotest/esm-import-cjs-default
+Download http://localhost:4260/@denotest/cjs-default-export
+Download http://localhost:4260/@denotest/cjs-default-export/1.0.0.tgz
+Download http://localhost:4260/@denotest/esm-import-cjs-default/1.0.0.tgz
+[UNORDERED_END]
+Check file:///[WILDLINE]/main.ts
+Node esm importing node cjs
+===========================
+{
+ default: [Function (anonymous)],
+ named: [Function (anonymous)],
+ MyClass: [class MyClass]
+}
+{ default: [Function (anonymous)], named: [Function (anonymous)] }
+[Module: null prototype] {
+ MyClass: [class MyClass],
+ __esModule: true,
+ default: {
+ default: [Function (anonymous)],
+ named: [Function (anonymous)],
+ MyClass: [class MyClass]
+ },
+ named: [Function (anonymous)]
+}
+[Module: null prototype] {
+ __esModule: true,
+ default: { default: [Function (anonymous)], named: [Function (anonymous)] },
+ named: [Function (anonymous)]
+}
+===========================
+static method
+Deno esm importing node cjs
+===========================
+{
+ default: [Function (anonymous)],
+ named: [Function (anonymous)],
+ MyClass: [class MyClass]
+}
+[Module: null prototype] {
+ MyClass: [class MyClass],
+ __esModule: true,
+ default: {
+ default: [Function (anonymous)],
+ named: [Function (anonymous)],
+ MyClass: [class MyClass]
+ },
+ named: [Function (anonymous)]
+}
+===========================
+Deno esm importing node esm
+===========================
+[Function: default]
+[Module: null prototype] { default: [Function: default] }
+===========================
+1
+5
+static method
diff --git a/tests/specs/npm/esm_import_cjs_default/main.ts b/tests/specs/npm/esm_import_cjs_default/main.ts
new file mode 100644
index 000000000..f9c3280e5
--- /dev/null
+++ b/tests/specs/npm/esm_import_cjs_default/main.ts
@@ -0,0 +1,23 @@
+// @ts-check
+import cjsDefault, {
+ MyClass as MyCjsClass,
+} from "npm:@denotest/cjs-default-export";
+import * as cjsNamespace from "npm:@denotest/cjs-default-export";
+import esmDefault from "npm:@denotest/esm-import-cjs-default";
+import * as esmNamespace from "npm:@denotest/esm-import-cjs-default";
+
+console.log("Deno esm importing node cjs");
+console.log("===========================");
+console.log(cjsDefault);
+console.log(cjsNamespace);
+console.log("===========================");
+
+console.log("Deno esm importing node esm");
+console.log("===========================");
+console.log(esmDefault);
+console.log(esmNamespace);
+console.log("===========================");
+
+console.log(cjsDefault.default());
+console.log(esmDefault());
+console.log(MyCjsClass.someStaticMethod());
diff --git a/tests/specs/npm/no_types_cjs/__test__.jsonc b/tests/specs/npm/no_types_cjs/__test__.jsonc
new file mode 100644
index 000000000..de0339cfb
--- /dev/null
+++ b/tests/specs/npm/no_types_cjs/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "check main.ts",
+ "output": "main.out"
+}
diff --git a/tests/specs/npm/no_types_cjs/main.out b/tests/specs/npm/no_types_cjs/main.out
new file mode 100644
index 000000000..4747a9a32
--- /dev/null
+++ b/tests/specs/npm/no_types_cjs/main.out
@@ -0,0 +1,3 @@
+Download http://localhost:4260/@denotest/no-types-cjs
+Download http://localhost:4260/@denotest/no-types-cjs/1.0.0.tgz
+Check file:///[WILDLINE]/no_types_cjs/main.ts
diff --git a/tests/specs/npm/no_types_cjs/main.ts b/tests/specs/npm/no_types_cjs/main.ts
new file mode 100644
index 000000000..32458e839
--- /dev/null
+++ b/tests/specs/npm/no_types_cjs/main.ts
@@ -0,0 +1,7 @@
+import mod from "npm:@denotest/no-types-cjs";
+
+// it actually returns a `number` and has that in its
+// jsdocs, but the jsdocs should not have been resolved so
+// this should type check just fine
+const value: string = mod();
+console.log(value);
diff --git a/tests/specs/npm/no_types_in_conditional_exports/__test__.jsonc b/tests/specs/npm/no_types_in_conditional_exports/__test__.jsonc
new file mode 100644
index 000000000..8955fcda2
--- /dev/null
+++ b/tests/specs/npm/no_types_in_conditional_exports/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --check main.ts",
+ "output": "main.out"
+}
diff --git a/tests/specs/npm/no_types_in_conditional_exports/main.out b/tests/specs/npm/no_types_in_conditional_exports/main.out
new file mode 100644
index 000000000..46c583234
--- /dev/null
+++ b/tests/specs/npm/no_types_in_conditional_exports/main.out
@@ -0,0 +1,4 @@
+Download http://localhost:4260/@denotest/no-types-in-conditional-exports
+Download http://localhost:4260/@denotest/no-types-in-conditional-exports/1.0.0.tgz
+Check [WILDCARD]npm/no_types_in_conditional_exports/main.ts
+{ foo: "bar" }
diff --git a/tests/specs/npm/no_types_in_conditional_exports/main.ts b/tests/specs/npm/no_types_in_conditional_exports/main.ts
new file mode 100644
index 000000000..7ec2f18fd
--- /dev/null
+++ b/tests/specs/npm/no_types_in_conditional_exports/main.ts
@@ -0,0 +1,2 @@
+import foo from "npm:@denotest/no-types-in-conditional-exports@1.0.0";
+console.log(foo);
diff --git a/tests/specs/npm/types_general/__test__.jsonc b/tests/specs/npm/types_general/__test__.jsonc
new file mode 100644
index 000000000..a991c6eed
--- /dev/null
+++ b/tests/specs/npm/types_general/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "check main.ts",
+ "output": "main.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/npm/types_general/main.out b/tests/specs/npm/types_general/main.out
new file mode 100644
index 000000000..ffba4f84d
--- /dev/null
+++ b/tests/specs/npm/types_general/main.out
@@ -0,0 +1,80 @@
+[UNORDERED_START]
+Download http://localhost:4260/@denotest/types
+Download http://localhost:4260/@denotest/types_imported
+Download http://localhost:4260/@denotest/types-exports-subpaths
+Download http://localhost:4260/@denotest/types_imported/1.0.0.tgz
+Download http://localhost:4260/@denotest/types-exports-subpaths/1.0.0.tgz
+Download http://localhost:4260/@denotest/types/1.0.0.tgz
+[UNORDERED_END]
+Check file:///[WILDLINE]/main.ts
+error: TS2322 [ERROR]: Type 'number' is not assignable to type 'string'.
+ bar: 1,
+ ~~~
+ at [WILDCARD]/main.ts:[WILDCARD]
+
+ The expected type comes from property 'bar' which is declared here on type 'Foobar'
+ bar: string;
+ ~~~
+ at [WILDCARD]/@denotest/types_imported/1.0.0/subpath.d.ts:3:5
+
+TS2322 [ERROR]: Type 'number' is not assignable to type 'string'.
+ prop: 1,
+ ~~~~
+ at [WILDCARD]/main.ts:[WILDCARD]
+
+ The expected type comes from property 'prop' which is declared here on type 'SomeInterface'
+ prop: string;
+ ~~~~
+ at [WILDCARD]/@denotest/types_imported/1.0.0/index.d.ts:2:5
+
+TS2322 [ERROR]: Type 'string' is not assignable to type 'number'.
+ prop2: "asdf",
+ ~~~~~
+ at [WILDCARD]/main.ts:[WILDCARD]
+
+ The expected type comes from property 'prop2' which is declared here on type 'SomeInterface'
+ prop2: number;
+ ~~~~~
+ at [WILDCARD]/@denotest/types_imported/1.0.0/index.d.ts:3:5
+
+TS2322 [ERROR]: Type 'number' is not assignable to type 'string'.
+ fizz: 1,
+ ~~~~
+ at [WILDCARD]/main.ts:[WILDCARD]
+
+ The expected type comes from property 'fizz' which is declared here on type 'Fizzbuzz'
+ fizz: string;
+ ~~~~
+ at [WILDCARD]/@denotest/types/1.0.0/index.d.ts:2:3
+
+TS2322 [ERROR]: Type 'number' is not assignable to type 'string'.
+ buzz: 2,
+ ~~~~
+ at [WILDCARD]/main.ts:[WILDCARD]
+
+ The expected type comes from property 'buzz' which is declared here on type 'Fizzbuzz'
+ buzz: string;
+ ~~~~
+ at [WILDCARD]/@denotest/types/1.0.0/index.d.ts:3:3
+
+TS2322 [ERROR]: Type '5' is not assignable to type '"test1"'.
+const valueA: "test1" = getClient();
+ ~~~~~~
+ at [WILDCARD]/main.ts:[WILDCARD]
+
+TS2322 [ERROR]: Type '"import"' is not assignable to type '"test2"'.
+const valueB: "test2" = entryImport();
+ ~~~~~~
+ at [WILDCARD]/main.ts:[WILDCARD]
+
+TS2322 [ERROR]: Type '12' is not assignable to type '"test3"'.
+const valueC: "test3" = entryA();
+ ~~~~~~
+ at [WILDCARD]/main.ts:[WILDCARD]
+
+TS2322 [ERROR]: Type '"types"' is not assignable to type '"test4"'.
+const valueD: "test4" = entryTypes();
+ ~~~~~~
+ at file:///[WILDCARD]/main.ts:[WILDCARD]
+
+Found 9 errors.
diff --git a/tests/specs/npm/types_general/main.ts b/tests/specs/npm/types_general/main.ts
new file mode 100644
index 000000000..ae420f6d6
--- /dev/null
+++ b/tests/specs/npm/types_general/main.ts
@@ -0,0 +1,27 @@
+import type { Fizzbuzz } from "npm:@denotest/types";
+import type { SomeInterface } from "npm:@denotest/types_imported";
+import type { Foobar as FooInterface } from "npm:@denotest/types_imported/subpath";
+import { getClient } from "npm:@denotest/types-exports-subpaths/client";
+import { entryImport } from "npm:@denotest/types-exports-subpaths/entry-import";
+import { entryA } from "npm:@denotest/types-exports-subpaths/entry-a";
+import { entryTypes } from "npm:@denotest/types-exports-subpaths/entry-types-last-no-declaration-before";
+
+const foobar: FooInterface = {
+ foo: "foo",
+ bar: 1,
+};
+
+const i: SomeInterface = {
+ prop: 1,
+ prop2: "asdf",
+};
+
+const fizzbuzz: Fizzbuzz = {
+ fizz: 1,
+ buzz: 2,
+};
+
+const valueA: "test1" = getClient();
+const valueB: "test2" = entryImport();
+const valueC: "test3" = entryA();
+const valueD: "test4" = entryTypes();