Skip to content

Commit 0cb4514

Browse files
committed
Add test to show how scope messes with casing
1 parent f071d30 commit 0cb4514

File tree

2 files changed

+194
-0
lines changed

2 files changed

+194
-0
lines changed

src/testRunner/unittests/tscWatch/forceConsistentCasingInFileNames.ts

+44
Original file line numberDiff line numberDiff line change
@@ -262,5 +262,49 @@ a;b;
262262
verifyDirSymlink("when import matches disk but directory symlink target does not", `${projectRoot}/XY`, `${projectRoot}/XY`, `./Xy`);
263263
verifyDirSymlink("when import and directory symlink target agree but do not match disk", `${projectRoot}/XY`, `${projectRoot}/Xy`, `./Xy`);
264264
verifyDirSymlink("when import, directory symlink target, and disk are all different", `${projectRoot}/XY`, `${projectRoot}/Xy`, `./yX`);
265+
266+
verifyTscWatch({
267+
scenario: "forceConsistentCasingInFileNames",
268+
subScenario: "with nodeNext resolution",
269+
commandLineArgs: ["--w", "--explainFiles"],
270+
sys: () => createWatchedSystem({
271+
"/Users/name/projects/web/src/bin.ts": `import { foo } from "yargs";`,
272+
"/Users/name/projects/web/node_modules/@types/yargs/index.d.ts": "export function foo(): void;",
273+
"/Users/name/projects/web/node_modules/@types/yargs/index.d.mts": "export function foo(): void;",
274+
"/Users/name/projects/web/node_modules/@types/yargs/package.json": JSON.stringify({
275+
name: "yargs",
276+
version: "17.0.12",
277+
exports: {
278+
".": {
279+
types: {
280+
import: "./index.d.mts",
281+
default: "./index.d.ts"
282+
}
283+
},
284+
// "./helpers": {
285+
// types: {
286+
// "import": "./helpers.d.mts",
287+
// "default": "./helpers.d.ts"
288+
// }
289+
// },
290+
// "./yargs": {
291+
// "types": {
292+
// "default": "./yargs.d.ts"
293+
// }
294+
// },
295+
// "./package.json": "./package.json"
296+
}
297+
}),
298+
"/Users/name/projects/web/tsconfig.json": JSON.stringify({
299+
compilerOptions: {
300+
moduleResolution: "nodenext",
301+
forceConsistentCasingInFileNames: true,
302+
traceResolution: true,
303+
}
304+
}),
305+
[libFile.path]: libFile.content,
306+
}, { currentDirectory: "/Users/name/projects/web" }),
307+
changes: emptyArray,
308+
});
265309
});
266310
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
Input::
2+
//// [/Users/name/projects/web/src/bin.ts]
3+
import { foo } from "yargs";
4+
5+
//// [/Users/name/projects/web/node_modules/@types/yargs/index.d.ts]
6+
export function foo(): void;
7+
8+
//// [/Users/name/projects/web/node_modules/@types/yargs/index.d.mts]
9+
export function foo(): void;
10+
11+
//// [/Users/name/projects/web/node_modules/@types/yargs/package.json]
12+
{"name":"yargs","version":"17.0.12","exports":{".":{"types":{"import":"./index.d.mts","default":"./index.d.ts"}}}}
13+
14+
//// [/Users/name/projects/web/tsconfig.json]
15+
{"compilerOptions":{"moduleResolution":"nodenext","forceConsistentCasingInFileNames":true,"traceResolution":true}}
16+
17+
//// [/a/lib/lib.d.ts]
18+
/// <reference no-default-lib="true"/>
19+
interface Boolean {}
20+
interface Function {}
21+
interface CallableFunction {}
22+
interface NewableFunction {}
23+
interface IArguments {}
24+
interface Number { toExponential: any; }
25+
interface Object {}
26+
interface RegExp {}
27+
interface String { charAt: any; }
28+
interface Array<T> { length: number; [n: number]: T; }
29+
30+
31+
/a/lib/tsc.js --w --explainFiles
32+
Output::
33+
>> Screen clear
34+
[12:00:35 AM] Starting compilation in watch mode...
35+
36+
File '/users/name/projects/web/src/package.json' does not exist.
37+
File '/users/name/projects/web/package.json' does not exist.
38+
File '/users/name/projects/package.json' does not exist.
39+
File '/users/name/package.json' does not exist.
40+
File '/users/package.json' does not exist.
41+
File '/package.json' does not exist.
42+
======== Resolving module 'yargs' from '/Users/name/projects/web/src/bin.ts'. ========
43+
Explicitly specified module resolution kind: 'NodeNext'.
44+
File '/users/name/projects/web/src/package.json' does not exist according to earlier cached lookups.
45+
File '/users/name/projects/web/package.json' does not exist according to earlier cached lookups.
46+
File '/users/name/projects/package.json' does not exist according to earlier cached lookups.
47+
File '/users/name/package.json' does not exist according to earlier cached lookups.
48+
File '/users/package.json' does not exist according to earlier cached lookups.
49+
File '/package.json' does not exist according to earlier cached lookups.
50+
Loading module 'yargs' from 'node_modules' folder, target file type 'TypeScript'.
51+
Directory '/Users/name/projects/web/src/node_modules' does not exist, skipping all lookups in it.
52+
File '/Users/name/projects/web/node_modules/yargs.ts' does not exist.
53+
File '/Users/name/projects/web/node_modules/yargs.tsx' does not exist.
54+
File '/Users/name/projects/web/node_modules/yargs.d.ts' does not exist.
55+
Found 'package.json' at '/Users/name/projects/web/node_modules/@types/yargs/package.json'.
56+
'package.json' does not have a 'typesVersions' field.
57+
File '/users/name/projects/web/node_modules/@types/yargs/index.d.ts' exist - use it as a name resolution result.
58+
Resolving real path for '/users/name/projects/web/node_modules/@types/yargs/index.d.ts', result '/Users/name/projects/web/node_modules/@types/yargs/index.d.ts'.
59+
======== Module name 'yargs' was successfully resolved to '/users/name/projects/web/node_modules/@types/yargs/index.d.ts' with Package ID 'yargs/[email protected]'. ========
60+
File '/users/name/projects/web/node_modules/@types/yargs/package.json' exists according to earlier cached lookups.
61+
======== Resolving type reference directive 'yargs', containing file '/Users/name/projects/web/__inferred type names__.ts', root directory '/Users/name/projects/web/node_modules/@types'. ========
62+
Resolving with primary search path '/Users/name/projects/web/node_modules/@types'.
63+
File '/Users/name/projects/web/node_modules/@types/yargs/package.json' exists according to earlier cached lookups.
64+
'package.json' does not have a 'typings' field.
65+
'package.json' does not have a 'types' field.
66+
File '/Users/name/projects/web/node_modules/@types/yargs/index.d.ts' exist - use it as a name resolution result.
67+
Resolving real path for '/Users/name/projects/web/node_modules/@types/yargs/index.d.ts', result '/Users/name/projects/web/node_modules/@types/yargs/index.d.ts'.
68+
======== Type reference directive 'yargs' was successfully resolved to '/Users/name/projects/web/node_modules/@types/yargs/index.d.ts' with Package ID 'yargs/[email protected]', primary: true. ========
69+
File '/a/lib/package.json' does not exist.
70+
File '/a/package.json' does not exist.
71+
File '/package.json' does not exist according to earlier cached lookups.
72+
src/bin.ts:1:21 - error TS1261: Already included file name '/users/name/projects/web/node_modules/@types/yargs/index.d.ts' differs from file name '/Users/name/projects/web/node_modules/@types/yargs/index.d.ts' only in casing.
73+
The file is in the program because:
74+
Imported via "yargs" from file '/Users/name/projects/web/src/bin.ts' with packageId 'yargs/[email protected]'
75+
Entry point for implicit type library 'yargs' with packageId 'yargs/[email protected]'
76+
File is CommonJS module because '/users/name/projects/web/node_modules/@types/yargs/package.json' does not have field "type"
77+
78+
1 import { foo } from "yargs";
79+
   ~~~~~~~
80+
81+
../../../../a/lib/lib.d.ts
82+
Default library for target 'es3'
83+
node_modules/@types/yargs/index.d.ts
84+
Imported via "yargs" from file 'src/bin.ts' with packageId 'yargs/[email protected]'
85+
Entry point for implicit type library 'yargs' with packageId 'yargs/[email protected]'
86+
File is CommonJS module because 'node_modules/@types/yargs/package.json' does not have field "type"
87+
src/bin.ts
88+
Matched by default include pattern '**/*'
89+
File is CommonJS module because 'package.json' was not found
90+
[12:00:38 AM] Found 1 error. Watching for file changes.
91+
92+
93+
94+
Program root files: ["/Users/name/projects/web/src/bin.ts"]
95+
Program options: {"moduleResolution":99,"forceConsistentCasingInFileNames":true,"traceResolution":true,"watch":true,"explainFiles":true,"configFilePath":"/Users/name/projects/web/tsconfig.json"}
96+
Program structureReused: Not
97+
Program files::
98+
/a/lib/lib.d.ts
99+
/users/name/projects/web/node_modules/@types/yargs/index.d.ts
100+
/Users/name/projects/web/src/bin.ts
101+
102+
Semantic diagnostics in builder refreshed for::
103+
/a/lib/lib.d.ts
104+
/users/name/projects/web/node_modules/@types/yargs/index.d.ts
105+
/Users/name/projects/web/src/bin.ts
106+
107+
Shape signatures in builder refreshed for::
108+
/a/lib/lib.d.ts (used version)
109+
/users/name/projects/web/node_modules/@types/yargs/index.d.ts (used version)
110+
/users/name/projects/web/src/bin.ts (used version)
111+
112+
WatchedFiles::
113+
/users/name/projects/web/tsconfig.json:
114+
{"fileName":"/Users/name/projects/web/tsconfig.json","pollingInterval":250}
115+
/users/name/projects/web/src/bin.ts:
116+
{"fileName":"/Users/name/projects/web/src/bin.ts","pollingInterval":250}
117+
/users/name/projects/web/node_modules/@types/yargs/index.d.ts:
118+
{"fileName":"/users/name/projects/web/node_modules/@types/yargs/index.d.ts","pollingInterval":250}
119+
/a/lib/lib.d.ts:
120+
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
121+
/users/name/projects/web/node_modules/@types/yargs/package.json:
122+
{"fileName":"/Users/name/projects/web/node_modules/@types/yargs/package.json","pollingInterval":250}
123+
/users/name/projects/web/src/package.json:
124+
{"fileName":"/Users/name/projects/web/src/package.json","pollingInterval":250}
125+
/users/name/projects/web/package.json:
126+
{"fileName":"/Users/name/projects/web/package.json","pollingInterval":250}
127+
/users/name/projects/package.json:
128+
{"fileName":"/Users/name/projects/package.json","pollingInterval":250}
129+
130+
FsWatches::
131+
/users/name/projects/web:
132+
{"directoryName":"/Users/name/projects/web"}
133+
134+
FsWatchesRecursive::
135+
/users/name/projects/web/src:
136+
{"directoryName":"/users/name/projects/web/src"}
137+
/users/name/projects/web/node_modules:
138+
{"directoryName":"/Users/name/projects/web/node_modules"}
139+
/users/name/projects/web/node_modules/@types:
140+
{"directoryName":"/Users/name/projects/web/node_modules/@types"}
141+
/users/name/projects/web:
142+
{"directoryName":"/users/name/projects/web"}
143+
144+
exitCode:: ExitStatus.undefined
145+
146+
//// [/Users/name/projects/web/src/bin.js]
147+
"use strict";
148+
exports.__esModule = true;
149+
150+

0 commit comments

Comments
 (0)