mirror of
https://github.com/angular/angular-cli.git
synced 2025-05-17 02:54:21 +08:00
With this change we update Angular dependencies to use `^` instead of `~` as version prefix. Closes #21925
154 lines
5.0 KiB
TypeScript
154 lines
5.0 KiB
TypeScript
/**
|
|
* @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 { EmptyTree } from '@angular-devkit/schematics';
|
|
import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/testing';
|
|
|
|
describe('Migration to update Angular packages version prefix to `^` instead of `~`', () => {
|
|
const packageJsonPath = '/package.json';
|
|
const schematicName = 'update-angular-packages-version-prefix';
|
|
const schematicRunner = new SchematicTestRunner(
|
|
'migrations',
|
|
require.resolve('../migration-collection.json'),
|
|
);
|
|
|
|
let tree: UnitTestTree;
|
|
beforeEach(() => {
|
|
tree = new UnitTestTree(new EmptyTree());
|
|
});
|
|
|
|
it(`should replace Angular packages versioned with '~' to '^'`, async () => {
|
|
tree.create(
|
|
packageJsonPath,
|
|
JSON.stringify({
|
|
dependencies: {
|
|
'@angular/animations': '~13.1.0',
|
|
'@angular/common': '~13.1.0',
|
|
'@angular/compiler': '~13.1.0',
|
|
'@angular/core': '~13.1.0',
|
|
'@angular/forms': '~13.1.0',
|
|
'@angular/platform-browser': '~13.1.0',
|
|
'@angular/platform-browser-dynamic': '~13.1.0',
|
|
'@angular/router': '~13.1.0',
|
|
'@nguniversal/commom': '^13.1.0',
|
|
'rxjs': '~7.4.0',
|
|
'tslib': '^2.3.0',
|
|
'zone.js': '~0.11.4',
|
|
},
|
|
devDependencies: {
|
|
'@angular-devkit/build-angular': '~13.1.3',
|
|
'@angular/cli': '~13.1.3',
|
|
'@angular/compiler-cli': '~13.1.0',
|
|
'@angular/localize': '^13.1.3',
|
|
'@types/jasmine': '~3.10.0',
|
|
'@types/node': '^12.11.1',
|
|
'jasmine-core': '~3.10.0',
|
|
'karma': '~6.3.0',
|
|
'karma-chrome-launcher': '~3.1.0',
|
|
'karma-coverage': '~2.1.0',
|
|
'karma-jasmine': '~4.0.0',
|
|
'karma-jasmine-html-reporter': '~1.7.0',
|
|
'ng-packagr': '~13.1.3',
|
|
'typescript': '~4.5.2',
|
|
},
|
|
}),
|
|
);
|
|
|
|
const newTree = await schematicRunner.runSchematicAsync(schematicName, {}, tree).toPromise();
|
|
const pkg = JSON.parse(newTree.readContent(packageJsonPath));
|
|
|
|
expect(pkg['dependencies']).toEqual({
|
|
'@angular/animations': '^13.1.0',
|
|
'@angular/common': '^13.1.0',
|
|
'@angular/compiler': '^13.1.0',
|
|
'@angular/core': '^13.1.0',
|
|
'@angular/forms': '^13.1.0',
|
|
'@angular/platform-browser': '^13.1.0',
|
|
'@angular/platform-browser-dynamic': '^13.1.0',
|
|
'@angular/router': '^13.1.0',
|
|
'@nguniversal/commom': '^13.1.0',
|
|
'rxjs': '~7.4.0',
|
|
'tslib': '^2.3.0',
|
|
'zone.js': '~0.11.4',
|
|
});
|
|
|
|
expect(pkg['devDependencies']).toEqual({
|
|
'@angular-devkit/build-angular': '^13.1.3',
|
|
'@angular/cli': '^13.1.3',
|
|
'@angular/compiler-cli': '^13.1.0',
|
|
'@angular/localize': '^13.1.3',
|
|
'@types/jasmine': '~3.10.0',
|
|
'@types/node': '^12.11.1',
|
|
'jasmine-core': '~3.10.0',
|
|
'karma': '~6.3.0',
|
|
'karma-chrome-launcher': '~3.1.0',
|
|
'karma-coverage': '~2.1.0',
|
|
'karma-jasmine': '~4.0.0',
|
|
'karma-jasmine-html-reporter': '~1.7.0',
|
|
'ng-packagr': '^13.1.3',
|
|
'typescript': '~4.5.2',
|
|
});
|
|
});
|
|
|
|
it('should not replace pinned Angular packages versions', async () => {
|
|
tree.create(
|
|
packageJsonPath,
|
|
JSON.stringify({
|
|
dependencies: {
|
|
'@angular/animations': '13.1.0',
|
|
'@angular/core': '~13.1.0',
|
|
},
|
|
devDependencies: {
|
|
'@angular-devkit/build-angular': '13.1.3',
|
|
},
|
|
}),
|
|
);
|
|
|
|
const newTree = await schematicRunner.runSchematicAsync(schematicName, {}, tree).toPromise();
|
|
const pkg = JSON.parse(newTree.readContent(packageJsonPath));
|
|
|
|
expect(pkg['dependencies']['@angular/animations']).toBe('13.1.0');
|
|
expect(pkg['dependencies']['@angular/core']).toBe('^13.1.0');
|
|
expect(pkg['devDependencies']['@angular-devkit/build-angular']).toBe('13.1.3');
|
|
});
|
|
|
|
it('should not error when `dependencies` is missing', async () => {
|
|
tree.create(
|
|
packageJsonPath,
|
|
JSON.stringify({
|
|
devDependencies: {
|
|
'@angular-devkit/build-angular': '~13.1.3',
|
|
},
|
|
}),
|
|
);
|
|
|
|
const newTree = await schematicRunner.runSchematicAsync(schematicName, {}, tree).toPromise();
|
|
const pkg = JSON.parse(newTree.readContent(packageJsonPath));
|
|
|
|
expect(pkg['dependencies']).toBeUndefined();
|
|
expect(pkg['devDependencies']['@angular-devkit/build-angular']).toBe('^13.1.3');
|
|
});
|
|
|
|
it('should not error when `devDependencies` is missing', async () => {
|
|
tree.create(
|
|
packageJsonPath,
|
|
JSON.stringify({
|
|
dependencies: {
|
|
'@angular-devkit/build-angular': '~13.1.3',
|
|
},
|
|
}),
|
|
);
|
|
|
|
const newTree = await schematicRunner.runSchematicAsync(schematicName, {}, tree).toPromise();
|
|
const pkg = JSON.parse(newTree.readContent(packageJsonPath));
|
|
|
|
expect(pkg['dependencies']['@angular-devkit/build-angular']).toBe('^13.1.3');
|
|
expect(pkg['devDependencies']).toBeUndefined();
|
|
});
|
|
});
|