Skip to content

Commit 15f0f77

Browse files
committed
test(@angular/cli): verify package group locking under peer updates
Asserts that the update resolver loops correctly prioritize package group expansions before evaluating peer dependencies. This prevents regression of issue #22654, where specifying a package with a wide pre-release peer range (like @angular/cdk) before a package defining a group (like @angular/core) would resolve group dependencies (like @angular/common) to next-major pre-releases instead of locking them to target group versions.
1 parent 035c72a commit 15f0f77

1 file changed

Lines changed: 83 additions & 0 deletions

File tree

packages/angular/cli/src/commands/update/update-resolver_spec.ts

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,62 @@ describe('UpdateResolver', () => {
172172
'1.2.0': { name: '@angular-devkit-tests/update-release-age', version: '1.2.0' },
173173
},
174174
},
175+
'@angular-devkit-tests/core-bug': {
176+
metadata: {
177+
name: '@angular-devkit-tests/core-bug',
178+
'dist-tags': { latest: '14.0.0-next.0' },
179+
versions: ['12.2.0', '13.2.0', '14.0.0-next.0'],
180+
},
181+
manifests: {
182+
'12.2.0': { name: '@angular-devkit-tests/core-bug', version: '12.2.0' },
183+
'13.2.0': {
184+
name: '@angular-devkit-tests/core-bug',
185+
version: '13.2.0',
186+
'ng-update': {
187+
packageGroup: ['@angular-devkit-tests/core-bug', '@angular-devkit-tests/common-bug'],
188+
},
189+
},
190+
'14.0.0-next.0': { name: '@angular-devkit-tests/core-bug', version: '14.0.0-next.0' },
191+
},
192+
},
193+
'@angular-devkit-tests/common-bug': {
194+
metadata: {
195+
name: '@angular-devkit-tests/common-bug',
196+
'dist-tags': { latest: '14.0.0-next.0' },
197+
versions: ['12.2.0', '13.2.0', '14.0.0-next.0'],
198+
},
199+
manifests: {
200+
'12.2.0': { name: '@angular-devkit-tests/common-bug', version: '12.2.0' },
201+
'13.2.0': { name: '@angular-devkit-tests/common-bug', version: '13.2.0' },
202+
'14.0.0-next.0': { name: '@angular-devkit-tests/common-bug', version: '14.0.0-next.0' },
203+
},
204+
},
205+
'@angular-devkit-tests/cdk-bug': {
206+
metadata: {
207+
name: '@angular-devkit-tests/cdk-bug',
208+
'dist-tags': { latest: '14.0.0-next.0' },
209+
versions: ['12.2.0', '13.2.0', '14.0.0-next.0'],
210+
},
211+
manifests: {
212+
'12.2.0': {
213+
name: '@angular-devkit-tests/cdk-bug',
214+
version: '12.2.0',
215+
peerDependencies: {
216+
'@angular-devkit-tests/core-bug': '^12.0.0',
217+
'@angular-devkit-tests/common-bug': '^12.0.0',
218+
},
219+
},
220+
'13.2.0': {
221+
name: '@angular-devkit-tests/cdk-bug',
222+
version: '13.2.0',
223+
peerDependencies: {
224+
'@angular-devkit-tests/core-bug': '^13.0.0 || ^14.0.0-0',
225+
'@angular-devkit-tests/common-bug': '^13.0.0 || ^14.0.0-0',
226+
},
227+
},
228+
'14.0.0-next.0': { name: '@angular-devkit-tests/cdk-bug', version: '14.0.0-next.0' },
229+
},
230+
},
175231
};
176232

177233
async function resolvePlan(options: UpdateResolverOptions, minReleaseAge = 0) {
@@ -391,6 +447,33 @@ describe('UpdateResolver', () => {
391447
'1.1.0',
392448
);
393449
});
450+
451+
it('correctly keeps packageGroup version when updating alongside peer dependencies', async () => {
452+
createMockWorkspace(
453+
{
454+
name: 'blah',
455+
dependencies: {
456+
'@angular-devkit-tests/core-bug': '12.2.0',
457+
'@angular-devkit-tests/common-bug': '12.2.0',
458+
'@angular-devkit-tests/cdk-bug': '12.2.0',
459+
},
460+
},
461+
{
462+
'@angular-devkit-tests/core-bug': { version: '12.2.0' },
463+
'@angular-devkit-tests/common-bug': { version: '12.2.0' },
464+
'@angular-devkit-tests/cdk-bug': { version: '12.2.0' },
465+
},
466+
);
467+
468+
const plan = await resolvePlan({
469+
packages: ['@angular-devkit-tests/cdk-bug@13', '@angular-devkit-tests/core-bug@13'],
470+
workspaceRoot: tempRoot,
471+
});
472+
473+
expect(plan.packagesToUpdate.get('@angular-devkit-tests/core-bug')).toBe('13.2.0');
474+
expect(plan.packagesToUpdate.get('@angular-devkit-tests/common-bug')).toBe('13.2.0');
475+
expect(plan.packagesToUpdate.get('@angular-devkit-tests/cdk-bug')).toBe('13.2.0');
476+
});
394477
});
395478

396479
describe('RegistryClient', () => {

0 commit comments

Comments
 (0)