diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2022-11-16 20:41:27 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-16 20:41:27 +0100 |
commit | 1416713cb3af8a952b1ae9952091706e2540341c (patch) | |
tree | a57fd6dac796a0126eedff470c041d01f9c0bf31 /cli/tests | |
parent | bd159b8bad34acefbd6e222781f3d7c6319c9bef (diff) |
fix(npm): using types for packages with subpath (#16656)
For CommonJS packages we were not trying different extensions for files
specified as subpath of the package ([package_name]/[subpath]).
This commit fixes that.
Diffstat (limited to 'cli/tests')
8 files changed, 99 insertions, 0 deletions
diff --git a/cli/tests/integration/npm_tests.rs b/cli/tests/integration/npm_tests.rs index e6990f0e0..e29c1452e 100644 --- a/cli/tests/integration/npm_tests.rs +++ b/cli/tests/integration/npm_tests.rs @@ -266,6 +266,14 @@ itest!(check_local { exit_code: 1, }); +itest!(types { + args: "check --quiet npm/types/main.ts", + output: "npm/types/main.out", + envs: env_vars(), + http_server: true, + exit_code: 1, +}); + itest!(types_ambient_module { args: "check --quiet npm/types_ambient_module/main.ts", output: "npm/types_ambient_module/main.out", diff --git a/cli/tests/testdata/npm/registry/@denotest/types/1.0.0/index.d.ts b/cli/tests/testdata/npm/registry/@denotest/types/1.0.0/index.d.ts new file mode 100644 index 000000000..afe876c4d --- /dev/null +++ b/cli/tests/testdata/npm/registry/@denotest/types/1.0.0/index.d.ts @@ -0,0 +1,4 @@ +export interface Fizzbuzz { + fizz: string; + buzz: string; +}
\ No newline at end of file diff --git a/cli/tests/testdata/npm/registry/@denotest/types/1.0.0/package.json b/cli/tests/testdata/npm/registry/@denotest/types/1.0.0/package.json new file mode 100644 index 000000000..ef927cbe3 --- /dev/null +++ b/cli/tests/testdata/npm/registry/@denotest/types/1.0.0/package.json @@ -0,0 +1,5 @@ +{ + "name": "@denotest/types-ambient", + "version": "1.0.0", + "types": "./index.d.ts" +} diff --git a/cli/tests/testdata/npm/registry/@denotest/types_imported/1.0.0/index.d.ts b/cli/tests/testdata/npm/registry/@denotest/types_imported/1.0.0/index.d.ts new file mode 100644 index 000000000..559cdb2ec --- /dev/null +++ b/cli/tests/testdata/npm/registry/@denotest/types_imported/1.0.0/index.d.ts @@ -0,0 +1,4 @@ +export interface SomeInterface { + prop: string; + prop2: number; +}
\ No newline at end of file diff --git a/cli/tests/testdata/npm/registry/@denotest/types_imported/1.0.0/package.json b/cli/tests/testdata/npm/registry/@denotest/types_imported/1.0.0/package.json new file mode 100644 index 000000000..ef927cbe3 --- /dev/null +++ b/cli/tests/testdata/npm/registry/@denotest/types_imported/1.0.0/package.json @@ -0,0 +1,5 @@ +{ + "name": "@denotest/types-ambient", + "version": "1.0.0", + "types": "./index.d.ts" +} diff --git a/cli/tests/testdata/npm/registry/@denotest/types_imported/1.0.0/subpath.d.ts b/cli/tests/testdata/npm/registry/@denotest/types_imported/1.0.0/subpath.d.ts new file mode 100644 index 000000000..883cf037a --- /dev/null +++ b/cli/tests/testdata/npm/registry/@denotest/types_imported/1.0.0/subpath.d.ts @@ -0,0 +1,4 @@ +export interface Foobar { + foo: string; + bar: string; +}
\ No newline at end of file diff --git a/cli/tests/testdata/npm/types/main.out b/cli/tests/testdata/npm/types/main.out new file mode 100644 index 000000000..c43923478 --- /dev/null +++ b/cli/tests/testdata/npm/types/main.out @@ -0,0 +1,51 @@ +error: TS2322 [ERROR]: Type 'number' is not assignable to type 'string'. + bar: 1, + ~~~ + at [WILDCARD]/npm/types/main.ts:7:3 + + 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]/npm/types/main.ts:11:3 + + 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]/npm/types/main.ts:12:3 + + 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]/npm/types/main.ts:16:3 + + 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]/npm/types/main.ts:17:3 + + 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 + +Found 5 errors. diff --git a/cli/tests/testdata/npm/types/main.ts b/cli/tests/testdata/npm/types/main.ts new file mode 100644 index 000000000..324ed723f --- /dev/null +++ b/cli/tests/testdata/npm/types/main.ts @@ -0,0 +1,18 @@ +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"; + +const foobar: FooInterface = { + foo: "foo", + bar: 1, +}; + +const i: SomeInterface = { + prop: 1, + prop2: "asdf", +}; + +const fizzbuzz: Fizzbuzz = { + fizz: 1, + buzz: 2, +}; |