test(ngcc): use `isNamedDeclaration()` helper to simplify tests (#38959)
Previously these tests were checking multiple specific expression types. The new helper function is more general and will also support `PropertyAccessExpression` nodes for `InlineDeclaration` types. PR Close #38959
This commit is contained in:
parent
0accd1e68d
commit
47eab61cad
|
@ -10,8 +10,8 @@ import * as ts from 'typescript';
|
||||||
import {absoluteFrom, AbsoluteFsPath, getSourceFileOrError} from '../../../src/ngtsc/file_system';
|
import {absoluteFrom, AbsoluteFsPath, getSourceFileOrError} from '../../../src/ngtsc/file_system';
|
||||||
import {runInEachFileSystem, TestFile} from '../../../src/ngtsc/file_system/testing';
|
import {runInEachFileSystem, TestFile} from '../../../src/ngtsc/file_system/testing';
|
||||||
import {MockLogger} from '../../../src/ngtsc/logging/testing';
|
import {MockLogger} from '../../../src/ngtsc/logging/testing';
|
||||||
import {DeclarationNode, isNamedClassDeclaration, isNamedVariableDeclaration} from '../../../src/ngtsc/reflection';
|
import {DeclarationNode} from '../../../src/ngtsc/reflection';
|
||||||
import {getDeclaration} from '../../../src/ngtsc/testing';
|
import {getDeclaration, isNamedDeclaration} from '../../../src/ngtsc/testing';
|
||||||
import {loadTestFiles} from '../../../test/helpers';
|
import {loadTestFiles} from '../../../test/helpers';
|
||||||
import {ModuleWithProvidersAnalyses, ModuleWithProvidersAnalyzer} from '../../src/analysis/module_with_providers_analyzer';
|
import {ModuleWithProvidersAnalyses, ModuleWithProvidersAnalyzer} from '../../src/analysis/module_with_providers_analyzer';
|
||||||
import {NgccReferencesRegistry} from '../../src/analysis/ngcc_references_registry';
|
import {NgccReferencesRegistry} from '../../src/analysis/ngcc_references_registry';
|
||||||
|
@ -661,9 +661,7 @@ runInEachFileSystem(() => {
|
||||||
}
|
}
|
||||||
|
|
||||||
function getName(node: DeclarationNode|null): string {
|
function getName(node: DeclarationNode|null): string {
|
||||||
return node && (isNamedVariableDeclaration(node) || isNamedClassDeclaration(node)) ?
|
return node && isNamedDeclaration(node) ? `${node.name.text}.` : '';
|
||||||
`${node.name.text}.` :
|
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -5,4 +5,4 @@
|
||||||
* Use of this source code is governed by an MIT-style license that can be
|
* 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
|
* found in the LICENSE file at https://angular.io/license
|
||||||
*/
|
*/
|
||||||
export {expectCompleteReuse, getDeclaration, makeProgram} from './src/utils';
|
export {expectCompleteReuse, getDeclaration, isNamedDeclaration, makeProgram} from './src/utils';
|
||||||
|
|
|
@ -93,9 +93,7 @@ export function walkForDeclarations(name: string, rootNode: ts.Node): Declaratio
|
||||||
chosenDecls.push(...walkForDeclarations(name, node));
|
chosenDecls.push(...walkForDeclarations(name, node));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else if (
|
} else if (isNamedDeclaration(node)) {
|
||||||
ts.isClassDeclaration(node) || ts.isFunctionDeclaration(node) ||
|
|
||||||
ts.isInterfaceDeclaration(node) || ts.isClassExpression(node)) {
|
|
||||||
if (node.name !== undefined && node.name.text === name) {
|
if (node.name !== undefined && node.name.text === name) {
|
||||||
chosenDecls.push(node);
|
chosenDecls.push(node);
|
||||||
}
|
}
|
||||||
|
@ -111,6 +109,11 @@ export function walkForDeclarations(name: string, rootNode: ts.Node): Declaratio
|
||||||
return chosenDecls;
|
return chosenDecls;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function isNamedDeclaration(node: ts.Node): node is ts.Declaration&{name: ts.Identifier} {
|
||||||
|
const namedNode = node as {name?: ts.Identifier};
|
||||||
|
return namedNode.name !== undefined && ts.isIdentifier(namedNode.name);
|
||||||
|
}
|
||||||
|
|
||||||
const COMPLETE_REUSE_FAILURE_MESSAGE =
|
const COMPLETE_REUSE_FAILURE_MESSAGE =
|
||||||
'The original program was not reused completely, even though no changes should have been made to its structure';
|
'The original program was not reused completely, even though no changes should have been made to its structure';
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue