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:
parent
de8f0fe5ee
commit
a7e4db3344
|
@ -7,5 +7,6 @@
|
||||||
*/
|
*/
|
||||||
export * from './src/utils';
|
export * from './src/utils';
|
||||||
export * from './src/cached_source_files';
|
export * from './src/cached_source_files';
|
||||||
|
export * from './src/compiler_host';
|
||||||
export * from './src/mock_file_loading';
|
export * from './src/mock_file_loading';
|
||||||
export * from './src/runfile_helpers';
|
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);
|
||||||
|
}
|
||||||
|
}
|
|
@ -7,9 +7,9 @@
|
||||||
*/
|
*/
|
||||||
import * as ts from 'typescript';
|
import * as ts from 'typescript';
|
||||||
|
|
||||||
import {AbsoluteFsPath, FileSystem, NgtscCompilerHost} from '../../../src/ngtsc/file_system';
|
import {AbsoluteFsPath, FileSystem} from '../../../src/ngtsc/file_system';
|
||||||
import {initMockFileSystem} from '../../../src/ngtsc/file_system/testing';
|
import {initMockFileSystem} from '../../../src/ngtsc/file_system/testing';
|
||||||
import {loadStandardTestFiles, loadTestDirectory} from '../../../src/ngtsc/testing';
|
import {loadStandardTestFiles, loadTestDirectory, NgtscTestCompilerHost} from '../../../src/ngtsc/testing';
|
||||||
import {Diagnostics, performCompilation} from '../../../src/perform_compile';
|
import {Diagnostics, performCompilation} from '../../../src/perform_compile';
|
||||||
import {CompilerOptions} from '../../../src/transformers/api';
|
import {CompilerOptions} from '../../../src/transformers/api';
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ export function compileTest(
|
||||||
const outDir = getBuildOutputDirectory(fs);
|
const outDir = getBuildOutputDirectory(fs);
|
||||||
const options = getOptions(rootDir, outDir, compilerOptions, angularCompilerOptions);
|
const options = getOptions(rootDir, outDir, compilerOptions, angularCompilerOptions);
|
||||||
const rootNames = files.map(f => fs.resolve(f));
|
const rootNames = files.map(f => fs.resolve(f));
|
||||||
const host = new NgtscCompilerHost(fs, options);
|
const host = new NgtscTestCompilerHost(fs, options);
|
||||||
const {diagnostics, emitResult} = performCompilation({rootNames, host, options});
|
const {diagnostics, emitResult} = performCompilation({rootNames, host, options});
|
||||||
const emittedFiles = emitResult ? emitResult.emittedFiles!.map(p => fs.resolve(rootDir, p)) : [];
|
const emittedFiles = emitResult ? emitResult.emittedFiles!.map(p => fs.resolve(rootDir, p)) : [];
|
||||||
const errors = parseDiagnostics(diagnostics);
|
const errors = parseDiagnostics(diagnostics);
|
||||||
|
|
|
@ -12,13 +12,13 @@ import * as ts from 'typescript';
|
||||||
|
|
||||||
import {createCompilerHost, createProgram} from '../../index';
|
import {createCompilerHost, createProgram} from '../../index';
|
||||||
import {main, mainDiagnosticsForTest, readNgcCommandLineAndConfiguration} from '../../src/main';
|
import {main, mainDiagnosticsForTest, readNgcCommandLineAndConfiguration} from '../../src/main';
|
||||||
import {absoluteFrom, AbsoluteFsPath, FileSystem, getFileSystem, NgtscCompilerHost, relativeFrom} from '../../src/ngtsc/file_system';
|
import {absoluteFrom, AbsoluteFsPath, FileSystem, getFileSystem, relativeFrom} from '../../src/ngtsc/file_system';
|
||||||
import {Folder, MockFileSystem} from '../../src/ngtsc/file_system/testing';
|
import {Folder, MockFileSystem} from '../../src/ngtsc/file_system/testing';
|
||||||
import {IndexedComponent} from '../../src/ngtsc/indexer';
|
import {IndexedComponent} from '../../src/ngtsc/indexer';
|
||||||
import {NgtscProgram} from '../../src/ngtsc/program';
|
import {NgtscProgram} from '../../src/ngtsc/program';
|
||||||
import {DeclarationNode} from '../../src/ngtsc/reflection';
|
import {DeclarationNode} from '../../src/ngtsc/reflection';
|
||||||
import {LazyRoute} from '../../src/ngtsc/routing';
|
import {LazyRoute} from '../../src/ngtsc/routing';
|
||||||
import {getCachedSourceFile} from '../../src/ngtsc/testing';
|
import {NgtscTestCompilerHost} from '../../src/ngtsc/testing';
|
||||||
import {setWrapHostForTest} from '../../src/transformers/compiler_host';
|
import {setWrapHostForTest} from '../../src/transformers/compiler_host';
|
||||||
|
|
||||||
|
|
||||||
|
@ -268,16 +268,6 @@ export class NgtscTestEnvironment {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class AugmentedCompilerHost extends NgtscTestCompilerHost {
|
class AugmentedCompilerHost extends NgtscTestCompilerHost {
|
||||||
delegate!: ts.CompilerHost;
|
delegate!: ts.CompilerHost;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue