From 255209327889a42069efd2e03aa81bcb0e9730c8 Mon Sep 17 00:00:00 2001 From: Alan Agius <alanagius@google.com> Date: Thu, 30 Jan 2025 12:13:32 +0000 Subject: [PATCH] build: re-enable latest version checks during release This commit restores the latest version checks, which are now fixed by using the stamped versions. --- .../dependency-ranges/index.mts | 5 ++-- .../latest-versions-check.mts | 29 ++++++++++--------- .../dependency-ranges/peer-deps-check.mts | 10 +++---- 3 files changed, 23 insertions(+), 21 deletions(-) diff --git a/scripts/release-checks/dependency-ranges/index.mts b/scripts/release-checks/dependency-ranges/index.mts index 85cba2de5de3..9f507a8b4425 100644 --- a/scripts/release-checks/dependency-ranges/index.mts +++ b/scripts/release-checks/dependency-ranges/index.mts @@ -32,9 +32,8 @@ export async function assertValidDependencyRanges( } const failures: string[] = [ - ...(await checkPeerDependencies(newVersion, allPackages)), - // TODO: Re-enable the following once the checks are performed against the stamped `.js` file instead of the source `.json` file. - // ...(await checkSchematicsAngularLatestVersion(newVersion)), + ...checkPeerDependencies(newVersion, allPackages), + ...checkSchematicsAngularLatestVersion(newVersion), ]; if (failures.length !== 0) { diff --git a/scripts/release-checks/dependency-ranges/latest-versions-check.mts b/scripts/release-checks/dependency-ranges/latest-versions-check.mts index afeff6712cea..9b8e054f71fb 100644 --- a/scripts/release-checks/dependency-ranges/latest-versions-check.mts +++ b/scripts/release-checks/dependency-ranges/latest-versions-check.mts @@ -6,30 +6,33 @@ * found in the LICENSE file at https://angular.dev/license */ -import { readFile } from 'node:fs/promises'; +import { createRequire } from 'node:module'; +import { fileURLToPath } from 'node:url'; import semver from 'semver'; -export async function checkSchematicsAngularLatestVersion( - newVersion: semver.SemVer, -): Promise<string[]> { - const { dependencies } = JSON.parse( - await readFile('./packages/schematics/angular/utility/latest-versions/package.json', 'utf-8'), +export function checkSchematicsAngularLatestVersion(newVersion: semver.SemVer): string[] { + // Root of the Angular CLI project. + const root = fileURLToPath(new URL('../../../', import.meta.url)); + const rootRequire = createRequire(root); + const { latestVersions } = rootRequire( + './dist/releases/schematics/angular/utility/latest-versions.js', ); - const keysToCheck = ['ng-packagr', '@angular/core']; - const { major, minor } = newVersion; - const isPrerelease = !!newVersion.prerelease[0]; + const keysToCheck = ['Angular', 'NgPackagr']; + const { major, minor, prerelease } = newVersion; + const isPrerelease = !!prerelease[0]; const failures: string[] = []; - let expectedFwDep = `^${major}.${minor}.0`; + let expectedVersionDep = `^${major}.${minor}.0`; if (isPrerelease) { - expectedFwDep = `^${major}.${minor}.0-next.0`; + expectedVersionDep += '-next.0'; } for (const key of keysToCheck) { - if (dependencies[key] !== expectedFwDep) { + const latestVersion = latestVersions[key]; + if (latestVersion !== expectedVersionDep) { failures.push( - `latest-versions: Invalid dependency range for "${key}". Expected: ${expectedFwDep}`, + `latest-versions: Invalid dependency range for "${key}". Expected: ${expectedVersionDep} but got: ${latestVersion}`, ); } } diff --git a/scripts/release-checks/dependency-ranges/peer-deps-check.mts b/scripts/release-checks/dependency-ranges/peer-deps-check.mts index e212d800aac0..0c8bf6fc8c3a 100644 --- a/scripts/release-checks/dependency-ranges/peer-deps-check.mts +++ b/scripts/release-checks/dependency-ranges/peer-deps-check.mts @@ -16,12 +16,12 @@ export interface PackageJson { peerDependencies?: Record<string, string>; } -export async function checkPeerDependencies( +export function checkPeerDependencies( newVersion: semver.SemVer, allPackages: PackageJson[], -): Promise<string[]> { - const { major, minor } = newVersion; - const isPrerelease = !!newVersion.prerelease[0]; +): string[] { + const { major, minor, prerelease } = newVersion; + const isPrerelease = !!prerelease[0]; const isMajor = minor === 0; let expectedFwPeerDep = `^${major}.0.0`; @@ -58,7 +58,7 @@ function checkPackage(pkgJson: PackageJson, expectedFwPeerDep: string): string[] if (range !== expectedFwPeerDep) { failures.push( - `${pkgJson.name}: Unexpected peer dependency range for "${depName}". Expected: ${expectedFwPeerDep}`, + `${pkgJson.name}: Unexpected peer dependency range for "${depName}". Expected: ${expectedFwPeerDep} but got: ${range}`, ); } }