diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2024-07-23 20:22:24 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-24 00:22:24 +0000 |
commit | 52ababc4bf948904092cff54c2ab8b91f6b9b443 (patch) | |
tree | 77dc2fe4a9eb79ce893e1593822df4de1f564260 /tests/specs | |
parent | 445e05a39d005eab6f7d2f1f67a7ae2d7c85b1b3 (diff) |
fix(node): better detection for when to surface node resolution errors (#24653)
Diffstat (limited to 'tests/specs')
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(); |