mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-06-01 14:25:16 -05:00
Add test that fails
This commit is contained in:
@@ -41,6 +41,7 @@ namespace fakes {
|
||||
}
|
||||
|
||||
public write(message: string) {
|
||||
if (ts.Debug.isDebugging) console.log(message);
|
||||
this.output.push(message);
|
||||
}
|
||||
|
||||
|
||||
@@ -987,6 +987,7 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
}
|
||||
|
||||
write(message: string) {
|
||||
if (Debug.isDebugging) console.log(message);
|
||||
this.output.push(message);
|
||||
}
|
||||
|
||||
|
||||
@@ -86,4 +86,36 @@ namespace ts.tscWatch {
|
||||
commandLineArgs: ["-b", "/src/packages/pkg1.tsconfig.json", "/src/packages/pkg2.tsconfig.json", "--verbose", "--traceResolution"],
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
describe("unittests:: tsbuild:: moduleResolution:: impliedNodeFormat differs between projects for shared file", () => {
|
||||
verifyTscWithEdits({
|
||||
scenario: "moduleResolution",
|
||||
subScenario: "impliedNodeFormat differs between projects for shared file",
|
||||
fs: () => loadProjectFromFiles({
|
||||
"/src/projects/a/src/index.ts": "",
|
||||
"/src/projects/a/tsconfig.json": JSON.stringify({
|
||||
compilerOptions: { strict: true }
|
||||
}),
|
||||
"/src/projects/b/src/index.ts": Utils.dedent`
|
||||
import pg from "pg";
|
||||
pg.foo();
|
||||
`,
|
||||
"/src/projects/b/tsconfig.json": JSON.stringify({
|
||||
compilerOptions: { strict: true, module: "node16" }
|
||||
}),
|
||||
"/src/projects/b/package.json": JSON.stringify({
|
||||
name: "b",
|
||||
type: "module"
|
||||
}),
|
||||
"/src/projects/node_modules/@types/pg/index.d.ts": "export function foo(): void;",
|
||||
"/src/projects/node_modules/@types/pg/package.json": JSON.stringify({
|
||||
name: "@types/pg",
|
||||
types: "index.d.ts",
|
||||
}),
|
||||
}),
|
||||
modifyFs: fs => fs.writeFileSync("/lib/lib.es2022.full.d.ts", libFile.content),
|
||||
commandLineArgs: ["-b", "/src/projects/a", "/src/projects/b", "--verbose", "--traceResolution", "--explainFiles"],
|
||||
edits: noChangeOnlyRuns
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,196 @@
|
||||
Input::
|
||||
//// [/lib/lib.d.ts]
|
||||
/// <reference no-default-lib="true"/>
|
||||
interface Boolean {}
|
||||
interface Function {}
|
||||
interface CallableFunction {}
|
||||
interface NewableFunction {}
|
||||
interface IArguments {}
|
||||
interface Number { toExponential: any; }
|
||||
interface Object {}
|
||||
interface RegExp {}
|
||||
interface String { charAt: any; }
|
||||
interface Array<T> { length: number; [n: number]: T; }
|
||||
interface ReadonlyArray<T> {}
|
||||
declare const console: { log(msg: any): void; };
|
||||
|
||||
//// [/lib/lib.es2022.full.d.ts]
|
||||
/// <reference no-default-lib="true"/>
|
||||
interface Boolean {}
|
||||
interface Function {}
|
||||
interface CallableFunction {}
|
||||
interface NewableFunction {}
|
||||
interface IArguments {}
|
||||
interface Number { toExponential: any; }
|
||||
interface Object {}
|
||||
interface RegExp {}
|
||||
interface String { charAt: any; }
|
||||
interface Array<T> { length: number; [n: number]: T; }
|
||||
|
||||
//// [/src/projects/a/src/index.ts]
|
||||
|
||||
|
||||
//// [/src/projects/a/tsconfig.json]
|
||||
{"compilerOptions":{"strict":true}}
|
||||
|
||||
//// [/src/projects/b/package.json]
|
||||
{"name":"b","type":"module"}
|
||||
|
||||
//// [/src/projects/b/src/index.ts]
|
||||
import pg from "pg";
|
||||
pg.foo();
|
||||
|
||||
|
||||
//// [/src/projects/b/tsconfig.json]
|
||||
{"compilerOptions":{"strict":true,"module":"node16"}}
|
||||
|
||||
//// [/src/projects/node_modules/@types/pg/index.d.ts]
|
||||
export function foo(): void;
|
||||
|
||||
//// [/src/projects/node_modules/@types/pg/package.json]
|
||||
{"name":"@types/pg","types":"index.d.ts"}
|
||||
|
||||
|
||||
|
||||
Output::
|
||||
/lib/tsc -b /src/projects/a /src/projects/b --verbose --traceResolution --explainFiles
|
||||
[[90m12:00:22 AM[0m] Projects in this build:
|
||||
* src/projects/a/tsconfig.json
|
||||
* src/projects/b/tsconfig.json
|
||||
|
||||
[[90m12:00:23 AM[0m] Project 'src/projects/a/tsconfig.json' is out of date because output file 'src/projects/a/src/index.js' does not exist
|
||||
|
||||
[[90m12:00:24 AM[0m] Building project '/src/projects/a/tsconfig.json'...
|
||||
|
||||
======== Resolving type reference directive 'pg', containing file '/src/projects/a/__inferred type names__.ts', root directory '/src/projects/node_modules/@types'. ========
|
||||
Resolving with primary search path '/src/projects/node_modules/@types'.
|
||||
Found 'package.json' at '/src/projects/node_modules/@types/pg/package.json'.
|
||||
'package.json' does not have a 'typesVersions' field.
|
||||
'package.json' does not have a 'typings' field.
|
||||
'package.json' has 'types' field 'index.d.ts' that references '/src/projects/node_modules/@types/pg/index.d.ts'.
|
||||
File '/src/projects/node_modules/@types/pg/index.d.ts' exist - use it as a name resolution result.
|
||||
Resolving real path for '/src/projects/node_modules/@types/pg/index.d.ts', result '/src/projects/node_modules/@types/pg/index.d.ts'.
|
||||
======== Type reference directive 'pg' was successfully resolved to '/src/projects/node_modules/@types/pg/index.d.ts', primary: true. ========
|
||||
lib/lib.d.ts
|
||||
Default library for target 'es3'
|
||||
src/projects/a/src/index.ts
|
||||
Matched by default include pattern '**/*'
|
||||
src/projects/node_modules/@types/pg/index.d.ts
|
||||
Entry point for implicit type library 'pg'
|
||||
[[90m12:00:26 AM[0m] Project 'src/projects/b/tsconfig.json' is out of date because output file 'src/projects/b/src/index.js' does not exist
|
||||
|
||||
[[90m12:00:27 AM[0m] Building project '/src/projects/b/tsconfig.json'...
|
||||
|
||||
File '/src/projects/b/src/package.json' does not exist.
|
||||
Found 'package.json' at '/src/projects/b/package.json'.
|
||||
'package.json' does not have a 'typesVersions' field.
|
||||
======== Resolving module 'pg' from '/src/projects/b/src/index.ts'. ========
|
||||
Module resolution kind is not specified, using 'Node16'.
|
||||
File '/src/projects/b/src/package.json' does not exist according to earlier cached lookups.
|
||||
File '/src/projects/b/package.json' exists according to earlier cached lookups.
|
||||
Loading module 'pg' from 'node_modules' folder, target file type 'TypeScript'.
|
||||
Directory '/src/projects/b/src/node_modules' does not exist, skipping all lookups in it.
|
||||
Directory '/src/projects/b/node_modules' does not exist, skipping all lookups in it.
|
||||
File '/src/projects/node_modules/@types/pg/package.json' exists according to earlier cached lookups.
|
||||
'package.json' does not have a 'typings' field.
|
||||
'package.json' has 'types' field 'index.d.ts' that references '/src/projects/node_modules/@types/pg/index.d.ts'.
|
||||
File '/src/projects/node_modules/@types/pg/index.d.ts' exist - use it as a name resolution result.
|
||||
Resolving real path for '/src/projects/node_modules/@types/pg/index.d.ts', result '/src/projects/node_modules/@types/pg/index.d.ts'.
|
||||
======== Module name 'pg' was successfully resolved to '/src/projects/node_modules/@types/pg/index.d.ts'. ========
|
||||
File '/src/projects/node_modules/@types/pg/package.json' exists according to earlier cached lookups.
|
||||
======== Resolving type reference directive 'pg', containing file '/src/projects/b/__inferred type names__.ts', root directory '/src/projects/node_modules/@types'. ========
|
||||
Resolving with primary search path '/src/projects/node_modules/@types'.
|
||||
File '/src/projects/node_modules/@types/pg/package.json' exists according to earlier cached lookups.
|
||||
'package.json' does not have a 'typings' field.
|
||||
'package.json' has 'types' field 'index.d.ts' that references '/src/projects/node_modules/@types/pg/index.d.ts'.
|
||||
File '/src/projects/node_modules/@types/pg/index.d.ts' exist - use it as a name resolution result.
|
||||
Resolving real path for '/src/projects/node_modules/@types/pg/index.d.ts', result '/src/projects/node_modules/@types/pg/index.d.ts'.
|
||||
======== Type reference directive 'pg' was successfully resolved to '/src/projects/node_modules/@types/pg/index.d.ts', primary: true. ========
|
||||
File '/lib/package.json' does not exist.
|
||||
File '/package.json' does not exist.
|
||||
[96msrc/projects/b/src/index.ts[0m:[93m1[0m:[93m8[0m - [91merror[0m[90m TS1192: [0mModule '"/src/projects/node_modules/@types/pg/index"' has no default export.
|
||||
|
||||
[7m1[0m import pg from "pg";
|
||||
[7m [0m [91m ~~[0m
|
||||
|
||||
lib/lib.es2022.full.d.ts
|
||||
Default library for target 'es2022'
|
||||
src/projects/node_modules/@types/pg/index.d.ts
|
||||
Imported via "pg" from file 'src/projects/b/src/index.ts'
|
||||
Entry point for implicit type library 'pg'
|
||||
src/projects/b/src/index.ts
|
||||
Matched by default include pattern '**/*'
|
||||
File is ECMAScript module because 'src/projects/b/package.json' has field "type" with value "module"
|
||||
|
||||
Found 1 error.
|
||||
|
||||
exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated
|
||||
|
||||
|
||||
//// [/src/projects/a/src/index.js]
|
||||
"use strict";
|
||||
|
||||
|
||||
|
||||
|
||||
Change:: no-change-run
|
||||
Input::
|
||||
|
||||
|
||||
Output::
|
||||
/lib/tsc -b /src/projects/a /src/projects/b --verbose --traceResolution --explainFiles
|
||||
[[90m12:00:28 AM[0m] Projects in this build:
|
||||
* src/projects/a/tsconfig.json
|
||||
* src/projects/b/tsconfig.json
|
||||
|
||||
[[90m12:00:29 AM[0m] Project 'src/projects/a/tsconfig.json' is up to date because newest input 'src/projects/a/src/index.ts' is older than output 'src/projects/a/src/index.js'
|
||||
|
||||
[[90m12:00:30 AM[0m] Project 'src/projects/b/tsconfig.json' is out of date because output file 'src/projects/b/src/index.js' does not exist
|
||||
|
||||
[[90m12:00:31 AM[0m] Building project '/src/projects/b/tsconfig.json'...
|
||||
|
||||
File '/src/projects/b/src/package.json' does not exist.
|
||||
Found 'package.json' at '/src/projects/b/package.json'.
|
||||
'package.json' does not have a 'typesVersions' field.
|
||||
======== Resolving module 'pg' from '/src/projects/b/src/index.ts'. ========
|
||||
Module resolution kind is not specified, using 'Node16'.
|
||||
File '/src/projects/b/src/package.json' does not exist according to earlier cached lookups.
|
||||
File '/src/projects/b/package.json' exists according to earlier cached lookups.
|
||||
Loading module 'pg' from 'node_modules' folder, target file type 'TypeScript'.
|
||||
Directory '/src/projects/b/src/node_modules' does not exist, skipping all lookups in it.
|
||||
Directory '/src/projects/b/node_modules' does not exist, skipping all lookups in it.
|
||||
Found 'package.json' at '/src/projects/node_modules/@types/pg/package.json'.
|
||||
'package.json' does not have a 'typesVersions' field.
|
||||
'package.json' does not have a 'typings' field.
|
||||
'package.json' has 'types' field 'index.d.ts' that references '/src/projects/node_modules/@types/pg/index.d.ts'.
|
||||
File '/src/projects/node_modules/@types/pg/index.d.ts' exist - use it as a name resolution result.
|
||||
Resolving real path for '/src/projects/node_modules/@types/pg/index.d.ts', result '/src/projects/node_modules/@types/pg/index.d.ts'.
|
||||
======== Module name 'pg' was successfully resolved to '/src/projects/node_modules/@types/pg/index.d.ts'. ========
|
||||
File '/src/projects/node_modules/@types/pg/package.json' exists according to earlier cached lookups.
|
||||
======== Resolving type reference directive 'pg', containing file '/src/projects/b/__inferred type names__.ts', root directory '/src/projects/node_modules/@types'. ========
|
||||
Resolving with primary search path '/src/projects/node_modules/@types'.
|
||||
File '/src/projects/node_modules/@types/pg/package.json' exists according to earlier cached lookups.
|
||||
'package.json' does not have a 'typings' field.
|
||||
'package.json' has 'types' field 'index.d.ts' that references '/src/projects/node_modules/@types/pg/index.d.ts'.
|
||||
File '/src/projects/node_modules/@types/pg/index.d.ts' exist - use it as a name resolution result.
|
||||
Resolving real path for '/src/projects/node_modules/@types/pg/index.d.ts', result '/src/projects/node_modules/@types/pg/index.d.ts'.
|
||||
======== Type reference directive 'pg' was successfully resolved to '/src/projects/node_modules/@types/pg/index.d.ts', primary: true. ========
|
||||
File '/lib/package.json' does not exist.
|
||||
File '/package.json' does not exist.
|
||||
lib/lib.es2022.full.d.ts
|
||||
Default library for target 'es2022'
|
||||
src/projects/node_modules/@types/pg/index.d.ts
|
||||
Imported via "pg" from file 'src/projects/b/src/index.ts'
|
||||
Entry point for implicit type library 'pg'
|
||||
File is CommonJS module because 'src/projects/node_modules/@types/pg/package.json' does not have field "type"
|
||||
src/projects/b/src/index.ts
|
||||
Matched by default include pattern '**/*'
|
||||
File is ECMAScript module because 'src/projects/b/package.json' has field "type" with value "module"
|
||||
exitCode:: ExitStatus.Success
|
||||
|
||||
|
||||
//// [/src/projects/b/src/index.js]
|
||||
import pg from "pg";
|
||||
pg.foo();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user