Add test to show how scope messes with casing

This commit is contained in:
Sheetal Nandi
2022-08-30 16:12:13 -07:00
parent f071d303c1
commit 0cb4514766
2 changed files with 194 additions and 0 deletions
@@ -262,5 +262,49 @@ a;b;
verifyDirSymlink("when import matches disk but directory symlink target does not", `${projectRoot}/XY`, `${projectRoot}/XY`, `./Xy`);
verifyDirSymlink("when import and directory symlink target agree but do not match disk", `${projectRoot}/XY`, `${projectRoot}/Xy`, `./Xy`);
verifyDirSymlink("when import, directory symlink target, and disk are all different", `${projectRoot}/XY`, `${projectRoot}/Xy`, `./yX`);
verifyTscWatch({
scenario: "forceConsistentCasingInFileNames",
subScenario: "with nodeNext resolution",
commandLineArgs: ["--w", "--explainFiles"],
sys: () => createWatchedSystem({
"/Users/name/projects/web/src/bin.ts": `import { foo } from "yargs";`,
"/Users/name/projects/web/node_modules/@types/yargs/index.d.ts": "export function foo(): void;",
"/Users/name/projects/web/node_modules/@types/yargs/index.d.mts": "export function foo(): void;",
"/Users/name/projects/web/node_modules/@types/yargs/package.json": JSON.stringify({
name: "yargs",
version: "17.0.12",
exports: {
".": {
types: {
import: "./index.d.mts",
default: "./index.d.ts"
}
},
// "./helpers": {
// types: {
// "import": "./helpers.d.mts",
// "default": "./helpers.d.ts"
// }
// },
// "./yargs": {
// "types": {
// "default": "./yargs.d.ts"
// }
// },
// "./package.json": "./package.json"
}
}),
"/Users/name/projects/web/tsconfig.json": JSON.stringify({
compilerOptions: {
moduleResolution: "nodenext",
forceConsistentCasingInFileNames: true,
traceResolution: true,
}
}),
[libFile.path]: libFile.content,
}, { currentDirectory: "/Users/name/projects/web" }),
changes: emptyArray,
});
});
}
@@ -0,0 +1,150 @@
Input::
//// [/Users/name/projects/web/src/bin.ts]
import { foo } from "yargs";
//// [/Users/name/projects/web/node_modules/@types/yargs/index.d.ts]
export function foo(): void;
//// [/Users/name/projects/web/node_modules/@types/yargs/index.d.mts]
export function foo(): void;
//// [/Users/name/projects/web/node_modules/@types/yargs/package.json]
{"name":"yargs","version":"17.0.12","exports":{".":{"types":{"import":"./index.d.mts","default":"./index.d.ts"}}}}
//// [/Users/name/projects/web/tsconfig.json]
{"compilerOptions":{"moduleResolution":"nodenext","forceConsistentCasingInFileNames":true,"traceResolution":true}}
//// [/a/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; }
/a/lib/tsc.js --w --explainFiles
Output::
>> Screen clear
[12:00:35 AM] Starting compilation in watch mode...
File '/users/name/projects/web/src/package.json' does not exist.
File '/users/name/projects/web/package.json' does not exist.
File '/users/name/projects/package.json' does not exist.
File '/users/name/package.json' does not exist.
File '/users/package.json' does not exist.
File '/package.json' does not exist.
======== Resolving module 'yargs' from '/Users/name/projects/web/src/bin.ts'. ========
Explicitly specified module resolution kind: 'NodeNext'.
File '/users/name/projects/web/src/package.json' does not exist according to earlier cached lookups.
File '/users/name/projects/web/package.json' does not exist according to earlier cached lookups.
File '/users/name/projects/package.json' does not exist according to earlier cached lookups.
File '/users/name/package.json' does not exist according to earlier cached lookups.
File '/users/package.json' does not exist according to earlier cached lookups.
File '/package.json' does not exist according to earlier cached lookups.
Loading module 'yargs' from 'node_modules' folder, target file type 'TypeScript'.
Directory '/Users/name/projects/web/src/node_modules' does not exist, skipping all lookups in it.
File '/Users/name/projects/web/node_modules/yargs.ts' does not exist.
File '/Users/name/projects/web/node_modules/yargs.tsx' does not exist.
File '/Users/name/projects/web/node_modules/yargs.d.ts' does not exist.
Found 'package.json' at '/Users/name/projects/web/node_modules/@types/yargs/package.json'.
'package.json' does not have a 'typesVersions' field.
File '/users/name/projects/web/node_modules/@types/yargs/index.d.ts' exist - use it as a name resolution result.
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'.
======== Module name 'yargs' was successfully resolved to '/users/name/projects/web/node_modules/@types/yargs/index.d.ts' with Package ID 'yargs/index.d.ts@17.0.12'. ========
File '/users/name/projects/web/node_modules/@types/yargs/package.json' exists according to earlier cached lookups.
======== Resolving type reference directive 'yargs', containing file '/Users/name/projects/web/__inferred type names__.ts', root directory '/Users/name/projects/web/node_modules/@types'. ========
Resolving with primary search path '/Users/name/projects/web/node_modules/@types'.
File '/Users/name/projects/web/node_modules/@types/yargs/package.json' exists according to earlier cached lookups.
'package.json' does not have a 'typings' field.
'package.json' does not have a 'types' field.
File '/Users/name/projects/web/node_modules/@types/yargs/index.d.ts' exist - use it as a name resolution result.
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'.
======== Type reference directive 'yargs' was successfully resolved to '/Users/name/projects/web/node_modules/@types/yargs/index.d.ts' with Package ID 'yargs/index.d.ts@17.0.12', primary: true. ========
File '/a/lib/package.json' does not exist.
File '/a/package.json' does not exist.
File '/package.json' does not exist according to earlier cached lookups.
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.
The file is in the program because:
Imported via "yargs" from file '/Users/name/projects/web/src/bin.ts' with packageId 'yargs/index.d.ts@17.0.12'
Entry point for implicit type library 'yargs' with packageId 'yargs/index.d.ts@17.0.12'
File is CommonJS module because '/users/name/projects/web/node_modules/@types/yargs/package.json' does not have field "type"
1 import { foo } from "yargs";
   ~~~~~~~
../../../../a/lib/lib.d.ts
Default library for target 'es3'
node_modules/@types/yargs/index.d.ts
Imported via "yargs" from file 'src/bin.ts' with packageId 'yargs/index.d.ts@17.0.12'
Entry point for implicit type library 'yargs' with packageId 'yargs/index.d.ts@17.0.12'
File is CommonJS module because 'node_modules/@types/yargs/package.json' does not have field "type"
src/bin.ts
Matched by default include pattern '**/*'
File is CommonJS module because 'package.json' was not found
[12:00:38 AM] Found 1 error. Watching for file changes.
Program root files: ["/Users/name/projects/web/src/bin.ts"]
Program options: {"moduleResolution":99,"forceConsistentCasingInFileNames":true,"traceResolution":true,"watch":true,"explainFiles":true,"configFilePath":"/Users/name/projects/web/tsconfig.json"}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
/users/name/projects/web/node_modules/@types/yargs/index.d.ts
/Users/name/projects/web/src/bin.ts
Semantic diagnostics in builder refreshed for::
/a/lib/lib.d.ts
/users/name/projects/web/node_modules/@types/yargs/index.d.ts
/Users/name/projects/web/src/bin.ts
Shape signatures in builder refreshed for::
/a/lib/lib.d.ts (used version)
/users/name/projects/web/node_modules/@types/yargs/index.d.ts (used version)
/users/name/projects/web/src/bin.ts (used version)
WatchedFiles::
/users/name/projects/web/tsconfig.json:
{"fileName":"/Users/name/projects/web/tsconfig.json","pollingInterval":250}
/users/name/projects/web/src/bin.ts:
{"fileName":"/Users/name/projects/web/src/bin.ts","pollingInterval":250}
/users/name/projects/web/node_modules/@types/yargs/index.d.ts:
{"fileName":"/users/name/projects/web/node_modules/@types/yargs/index.d.ts","pollingInterval":250}
/a/lib/lib.d.ts:
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
/users/name/projects/web/node_modules/@types/yargs/package.json:
{"fileName":"/Users/name/projects/web/node_modules/@types/yargs/package.json","pollingInterval":250}
/users/name/projects/web/src/package.json:
{"fileName":"/Users/name/projects/web/src/package.json","pollingInterval":250}
/users/name/projects/web/package.json:
{"fileName":"/Users/name/projects/web/package.json","pollingInterval":250}
/users/name/projects/package.json:
{"fileName":"/Users/name/projects/package.json","pollingInterval":250}
FsWatches::
/users/name/projects/web:
{"directoryName":"/Users/name/projects/web"}
FsWatchesRecursive::
/users/name/projects/web/src:
{"directoryName":"/users/name/projects/web/src"}
/users/name/projects/web/node_modules:
{"directoryName":"/Users/name/projects/web/node_modules"}
/users/name/projects/web/node_modules/@types:
{"directoryName":"/Users/name/projects/web/node_modules/@types"}
/users/name/projects/web:
{"directoryName":"/users/name/projects/web"}
exitCode:: ExitStatus.undefined
//// [/Users/name/projects/web/src/bin.js]
"use strict";
exports.__esModule = true;