fix(compiler-cli): fix case-sensitivity issues in NgtscCompilerHost (#36859)

The `getCanonicalFileName()` method was not actually
calling the  `useCaseSensitiveFileNames()` method. So
it always returned a case-sensitive canonical filename.

PR Close #36859
This commit is contained in:
Pete Bacon Darwin 2020-05-06 21:51:08 +01:00 committed by Alex Rickabaugh
parent f930e75a80
commit 0ec0ff3bce
2 changed files with 23 additions and 1 deletions

View File

@ -44,7 +44,7 @@ export class NgtscCompilerHost implements ts.CompilerHost {
} }
getCanonicalFileName(fileName: string): string { getCanonicalFileName(fileName: string): string {
return this.useCaseSensitiveFileNames ? fileName : fileName.toLowerCase(); return this.useCaseSensitiveFileNames() ? fileName : fileName.toLowerCase();
} }
useCaseSensitiveFileNames(): boolean { useCaseSensitiveFileNames(): boolean {

View File

@ -41,5 +41,27 @@ runInEachFileSystem(() => {
expect(host.getSourceFile(directory, ts.ScriptTarget.ES2015)).toBe(undefined); expect(host.getSourceFile(directory, ts.ScriptTarget.ES2015)).toBe(undefined);
}); });
}); });
describe('useCaseSensitiveFileNames()', () => {
it('should return the same as `FileSystem.isCaseSensitive()', () => {
const directory = absoluteFrom('/a/b/c');
const fs = getFileSystem();
fs.ensureDir(directory);
const host = new NgtscCompilerHost(fs);
expect(host.useCaseSensitiveFileNames()).toEqual(fs.isCaseSensitive());
});
});
describe('getCanonicalFileName()', () => {
it('should return the original filename if FS is case-sensitive or lower case otherwise',
() => {
const directory = absoluteFrom('/a/b/c');
const fs = getFileSystem();
fs.ensureDir(directory);
const host = new NgtscCompilerHost(fs);
expect(host.getCanonicalFileName(('AbCd.ts')))
.toEqual(fs.isCaseSensitive() ? 'AbCd.ts' : 'abcd.ts');
});
});
}); });
}); });