Skip to content

Commit ad082c9

Browse files
authored
feat(core): expand --from versions in migrate command to packages included in packageGroup (#14841)
1 parent 3eb4eb1 commit ad082c9

File tree

2 files changed

+159
-93
lines changed

2 files changed

+159
-93
lines changed

packages/nx/src/command-line/migrate.spec.ts

Lines changed: 52 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,11 @@ describe('Migration', () => {
1515
it('should throw an error when the target package is not available', async () => {
1616
const migrator = new Migrator({
1717
packageJson: createPackageJson(),
18-
versions: () => '1.0',
18+
getInstalledPackageVersion: () => '1.0',
1919
fetch: (_p, _v) => {
2020
throw new Error('cannot fetch');
2121
},
22+
from: {},
2223
to: {},
2324
});
2425

@@ -30,8 +31,9 @@ describe('Migration', () => {
3031
it('should return a patch to the new version', async () => {
3132
const migrator = new Migrator({
3233
packageJson: createPackageJson(),
33-
versions: () => '1.0.0',
34+
getInstalledPackageVersion: () => '1.0.0',
3435
fetch: (_p, _v) => Promise.resolve({ version: '2.0.0' }),
36+
from: {},
3537
to: {},
3638
});
3739

@@ -46,7 +48,7 @@ describe('Migration', () => {
4648
it('should collect the information recursively from upserts', async () => {
4749
const migrator = new Migrator({
4850
packageJson: createPackageJson({ dependencies: { child: '1.0.0' } }),
49-
versions: () => '1.0.0',
51+
getInstalledPackageVersion: () => '1.0.0',
5052
fetch: (p, _v) => {
5153
if (p === 'parent') {
5254
return Promise.resolve({
@@ -73,6 +75,7 @@ describe('Migration', () => {
7375
return Promise.resolve(null);
7476
}
7577
},
78+
from: {},
7679
to: {},
7780
});
7881

@@ -89,7 +92,7 @@ describe('Migration', () => {
8992
it('should support the deprecated "alwaysAddToPackageJson" option', async () => {
9093
const migrator = new Migrator({
9194
packageJson: createPackageJson({ dependencies: { child1: '1.0.0' } }),
92-
versions: () => '1.0.0',
95+
getInstalledPackageVersion: () => '1.0.0',
9396
fetch: (p, _v) => {
9497
if (p === 'mypackage') {
9598
return Promise.resolve({
@@ -112,6 +115,7 @@ describe('Migration', () => {
112115
return Promise.resolve(null);
113116
}
114117
},
118+
from: {},
115119
to: {},
116120
});
117121

@@ -128,7 +132,7 @@ describe('Migration', () => {
128132
it('should stop recursive calls when exact version', async () => {
129133
const migrator = new Migrator({
130134
packageJson: createPackageJson({ dependencies: { child: '1.0.0' } }),
131-
versions: () => '1.0.0',
135+
getInstalledPackageVersion: () => '1.0.0',
132136
fetch: (p, _v) => {
133137
if (p === 'parent') {
134138
return Promise.resolve({
@@ -160,6 +164,7 @@ describe('Migration', () => {
160164
return Promise.resolve(null);
161165
}
162166
},
167+
from: {},
163168
to: {},
164169
});
165170

@@ -181,7 +186,7 @@ describe('Migration', () => {
181186
grandchild: '1.0.0',
182187
},
183188
}),
184-
versions: () => '1.0.0',
189+
getInstalledPackageVersion: () => '1.0.0',
185190
fetch: (p, _v) => {
186191
if (p === 'parent') {
187192
return Promise.resolve({
@@ -227,6 +232,7 @@ describe('Migration', () => {
227232
return Promise.resolve({ version: '4.0.0' });
228233
}
229234
},
235+
from: {},
230236
to: {},
231237
});
232238

@@ -246,7 +252,7 @@ describe('Migration', () => {
246252
packageJson: createPackageJson({
247253
dependencies: { child: '1.0.0', grandchild: '2.0.0' },
248254
}),
249-
versions: () => '1.0.0',
255+
getInstalledPackageVersion: () => '1.0.0',
250256
fetch: (p, _v) => {
251257
if (p === 'parent') {
252258
return Promise.resolve({
@@ -278,6 +284,7 @@ describe('Migration', () => {
278284
return Promise.resolve({ version: '2.0.0' });
279285
}
280286
},
287+
from: {},
281288
to: {},
282289
});
283290

@@ -295,7 +302,8 @@ describe('Migration', () => {
295302
packageJson: createPackageJson({
296303
dependencies: { child1: '1.0.0', child2: '1.0.0' },
297304
}),
298-
versions: (p) => (p !== 'not-installed' ? '1.0.0' : null),
305+
getInstalledPackageVersion: (p) =>
306+
p !== 'not-installed' ? '1.0.0' : null,
299307
fetch: (p, _v) => {
300308
if (p === 'parent') {
301309
return Promise.resolve({
@@ -322,6 +330,7 @@ describe('Migration', () => {
322330
return Promise.resolve(null);
323331
}
324332
},
333+
from: {},
325334
to: {},
326335
});
327336

@@ -351,7 +360,7 @@ describe('Migration', () => {
351360
'@my-company/lib-6': '0.9.0',
352361
},
353362
},
354-
versions: () => '1.0.0',
363+
getInstalledPackageVersion: () => '1.0.0',
355364
fetch: async (pkg, version) => {
356365
if (pkg === '@my-company/nx-workspace') {
357366
return {
@@ -381,6 +390,7 @@ describe('Migration', () => {
381390
}
382391
return { version: '2.0.0' };
383392
},
393+
from: {},
384394
to: {},
385395
});
386396

@@ -417,7 +427,7 @@ describe('Migration', () => {
417427
'@my-company/lib-2': '0.9.0',
418428
},
419429
},
420-
versions: () => '1.0.0',
430+
getInstalledPackageVersion: () => '1.0.0',
421431
fetch: async (pkg, version) => {
422432
if (pkg === '@my-company/nx-workspace' && version === '2.0.0') {
423433
return {
@@ -456,6 +466,7 @@ describe('Migration', () => {
456466
}
457467
throw new Error(`Should not call fetch for ${pkg}@${version}`);
458468
},
469+
from: {},
459470
to: {},
460471
});
461472

@@ -477,12 +488,14 @@ describe('Migration', () => {
477488
it('should not throw when packages are missing', async () => {
478489
const migrator = new Migrator({
479490
packageJson: createPackageJson(),
480-
versions: (p) => (p === '@nrwl/nest' ? null : '1.0.0'),
491+
getInstalledPackageVersion: (p) =>
492+
p === '@nrwl/nest' ? null : '1.0.0',
481493
fetch: (_p, _v) =>
482494
Promise.resolve({
483495
version: '2.0.0',
484496
packageJsonUpdates: { one: { version: '2.0.0', packages: {} } },
485497
}),
498+
from: {},
486499
to: {},
487500
});
488501
await migrator.updatePackageJson('@nrwl/workspace', '2.0.0');
@@ -491,7 +504,8 @@ describe('Migration', () => {
491504
it('should only fetch packages that are installed', async () => {
492505
const migrator = new Migrator({
493506
packageJson: createPackageJson(),
494-
versions: (p) => (p === '@nrwl/nest' ? null : '1.0.0'),
507+
getInstalledPackageVersion: (p) =>
508+
p === '@nrwl/nest' ? null : '1.0.0',
495509
fetch: (p, _v) => {
496510
if (p === '@nrwl/nest') {
497511
throw new Error('Boom');
@@ -501,6 +515,7 @@ describe('Migration', () => {
501515
packageJsonUpdates: { one: { version: '2.0.0', packages: {} } },
502516
});
503517
},
518+
from: {},
504519
to: {},
505520
});
506521
await migrator.updatePackageJson('@nrwl/workspace', '2.0.0');
@@ -511,7 +526,7 @@ describe('Migration', () => {
511526
packageJson: createPackageJson({
512527
devDependencies: { parent: '1.0.0', child1: '1.0.0' },
513528
}),
514-
versions: () => '1.0.0',
529+
getInstalledPackageVersion: () => '1.0.0',
515530
fetch: (p, _v) => {
516531
if (p === 'parent') {
517532
return Promise.resolve({
@@ -536,6 +551,7 @@ describe('Migration', () => {
536551
throw new Error('Boom');
537552
}
538553
},
554+
from: {},
539555
to: {},
540556
});
541557

@@ -557,7 +573,7 @@ describe('Migration', () => {
557573
packageJson: createPackageJson({
558574
dependencies: { child1: '1.0.0', child2: '1.0.0', child3: '1.0.0' },
559575
}),
560-
versions: () => '1.0.0',
576+
getInstalledPackageVersion: () => '1.0.0',
561577
fetch: (p) => {
562578
if (p === 'mypackage') {
563579
return Promise.resolve({
@@ -585,6 +601,7 @@ describe('Migration', () => {
585601
return Promise.resolve(null);
586602
}
587603
},
604+
from: {},
588605
to: {},
589606
interactive: true,
590607
});
@@ -615,7 +632,7 @@ describe('Migration', () => {
615632
packageJson: createPackageJson({
616633
dependencies: { child1: '1.0.0', child2: '1.0.0', child3: '1.0.0' },
617634
}),
618-
versions: () => '1.0.0',
635+
getInstalledPackageVersion: () => '1.0.0',
619636
fetch: (p) => {
620637
if (p === 'mypackage') {
621638
return Promise.resolve({
@@ -644,6 +661,7 @@ describe('Migration', () => {
644661
return Promise.resolve(null);
645662
}
646663
},
664+
from: {},
647665
to: {},
648666
interactive: true,
649667
});
@@ -668,7 +686,7 @@ describe('Migration', () => {
668686
packageJson: createPackageJson({
669687
dependencies: { child1: '1.0.0', child2: '1.0.0', child3: '1.0.0' },
670688
}),
671-
versions: () => '1.0.0',
689+
getInstalledPackageVersion: () => '1.0.0',
672690
fetch: (p) => {
673691
if (p === 'mypackage') {
674692
return Promise.resolve({
@@ -697,6 +715,7 @@ describe('Migration', () => {
697715
return Promise.resolve(null);
698716
}
699717
},
718+
from: {},
700719
to: {},
701720
interactive: false,
702721
});
@@ -734,7 +753,7 @@ describe('Migration', () => {
734753
pkg2: '2.0.0',
735754
},
736755
}),
737-
versions: (p) => (p === 'pkg2' ? '2.0.0' : '1.0.0'),
756+
getInstalledPackageVersion: (p) => (p === 'pkg2' ? '2.0.0' : '1.0.0'),
738757
fetch: (p) => {
739758
if (p === 'mypackage') {
740759
return Promise.resolve({
@@ -780,6 +799,7 @@ describe('Migration', () => {
780799
return Promise.resolve(null);
781800
}
782801
},
802+
from: {},
783803
to: {},
784804
});
785805

@@ -806,7 +826,7 @@ describe('Migration', () => {
806826
pkg2: '1.0.0',
807827
},
808828
}),
809-
versions: () => '1.0.0',
829+
getInstalledPackageVersion: () => '1.0.0',
810830
fetch: (p) => {
811831
if (p === 'mypackage') {
812832
return Promise.resolve({
@@ -855,6 +875,7 @@ describe('Migration', () => {
855875
return Promise.resolve(null);
856876
}
857877
},
878+
from: {},
858879
to: {},
859880
});
860881

@@ -883,7 +904,7 @@ describe('Migration', () => {
883904
packageJson: createPackageJson({
884905
dependencies: { child1: '1.0.0', pkg1: '2.0.0' },
885906
}),
886-
versions: (p) => (p === 'pkg1' ? '2.0.0' : '1.0.0'),
907+
getInstalledPackageVersion: (p) => (p === 'pkg1' ? '2.0.0' : '1.0.0'),
887908
fetch: (p) => {
888909
if (p === 'mypackage') {
889910
return Promise.resolve({
@@ -905,6 +926,7 @@ describe('Migration', () => {
905926
return Promise.resolve(null);
906927
}
907928
},
929+
from: {},
908930
to: {},
909931
interactive: true,
910932
});
@@ -935,7 +957,7 @@ describe('Migration', () => {
935957
packageJson: createPackageJson({
936958
dependencies: { child1: '1.0.0', pkg1: '1.0.0' },
937959
}),
938-
versions: () => '1.0.0',
960+
getInstalledPackageVersion: () => '1.0.0',
939961
fetch: (p) => {
940962
if (p === 'mypackage') {
941963
return Promise.resolve({
@@ -957,6 +979,7 @@ describe('Migration', () => {
957979
return Promise.resolve(null);
958980
}
959981
},
982+
from: {},
960983
to: {},
961984
interactive: true,
962985
});
@@ -980,7 +1003,7 @@ describe('Migration', () => {
9801003
packageJson: createPackageJson({
9811004
dependencies: { child: '1.0.0', newChild: '1.0.0' },
9821005
}),
983-
versions: (p) => {
1006+
getInstalledPackageVersion: (p) => {
9841007
if (p === 'parent') return '1.0.0';
9851008
if (p === 'child') return '1.0.0';
9861009
return null;
@@ -1031,6 +1054,7 @@ describe('Migration', () => {
10311054
return Promise.resolve(null);
10321055
}
10331056
},
1057+
from: {},
10341058
to: {},
10351059
});
10361060
expect(await migrator.updatePackageJson('parent', '2.0.0')).toEqual({
@@ -1059,7 +1083,7 @@ describe('Migration', () => {
10591083
it('should not generate migrations for non top-level packages', async () => {
10601084
const migrator = new Migrator({
10611085
packageJson: createPackageJson({ dependencies: { child: '1.0.0' } }),
1062-
versions: (p) => {
1086+
getInstalledPackageVersion: (p) => {
10631087
if (p === 'parent') return '1.0.0';
10641088
if (p === 'child') return '1.0.0';
10651089
if (p === 'newChild') return '1.0.0'; // installed as a transitive dep, not a top-level dep
@@ -1111,6 +1135,7 @@ describe('Migration', () => {
11111135
return Promise.resolve(null);
11121136
}
11131137
},
1138+
from: {},
11141139
to: {},
11151140
});
11161141

@@ -1144,7 +1169,7 @@ describe('Migration', () => {
11441169
packageJson: createPackageJson({
11451170
dependencies: { child: '1.0.0', child2: '1.0.0' },
11461171
}),
1147-
versions: () => '1.0.0',
1172+
getInstalledPackageVersion: () => '1.0.0',
11481173
fetch: (p) => {
11491174
if (p === 'parent') {
11501175
return Promise.resolve({
@@ -1191,6 +1216,7 @@ describe('Migration', () => {
11911216
return Promise.resolve(null);
11921217
}
11931218
},
1219+
from: {},
11941220
to: {},
11951221
interactive: true,
11961222
});
@@ -1224,7 +1250,8 @@ describe('Migration', () => {
12241250
pkg3: '2.0.0',
12251251
},
12261252
}),
1227-
versions: (p) => (p === 'pkg2' || p === 'pkg3' ? '2.0.0' : '1.0.0'),
1253+
getInstalledPackageVersion: (p) =>
1254+
p === 'pkg2' || p === 'pkg3' ? '2.0.0' : '1.0.0',
12281255
fetch: (p) => {
12291256
if (p === 'parent') {
12301257
return Promise.resolve({
@@ -1289,6 +1316,7 @@ describe('Migration', () => {
12891316
return Promise.resolve(null);
12901317
}
12911318
},
1319+
from: {},
12921320
to: {},
12931321
});
12941322

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy