test(compiler-cli): improve compliance test performance (#39956)

The newly built compliance test runner was not using the shared source
file cache that was added in b627f7f02e,
which offers a significant performance boost to the compliance test
targets.

PR Close #39956
This commit is contained in:
JoostK
2020-12-03 20:43:53 +01:00
committed by Misko Hevery
parent de8f0fe5ee
commit a7e4db3344
4 changed files with 31 additions and 15 deletions
@@ -7,5 +7,6 @@
*/
export * from './src/utils';
export * from './src/cached_source_files';
export * from './src/compiler_host';
export * from './src/mock_file_loading';
export * from './src/runfile_helpers';
@@ -0,0 +1,25 @@
/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import * as ts from 'typescript';
import {NgtscCompilerHost} from '../../file_system';
import {getCachedSourceFile} from './cached_source_files';
/**
* A compiler host intended to improve test performance by caching default library source files for
* reuse across tests.
*/
export class NgtscTestCompilerHost extends NgtscCompilerHost {
getSourceFile(fileName: string, languageVersion: ts.ScriptTarget): ts.SourceFile|undefined {
const cachedSf = getCachedSourceFile(fileName, () => this.readFile(fileName));
if (cachedSf !== null) {
return cachedSf;
}
return super.getSourceFile(fileName, languageVersion);
}
}