From c223425af188869a25dd0a5e7f4750efea95a691 Mon Sep 17 00:00:00 2001 From: Riccardo Cipolleschi Date: Wed, 7 May 2025 05:58:36 -0700 Subject: [PATCH] Fix set-rn-version to account for codegen snapshot test files (#51157) Summary: test-js jobs are failing because the codegen snapshot tests generates a Podspecs withan hardcoded version that does not matches the version we are about to release. This fix updates the script that set the RN version to make sure it also updates the Codegen snapshots. This is a porting to `main` of [this PR](https://github.com/facebook/react-native/pull/51156). ## Changelog: [Internal] - Fix set-rn-version to account for codegen snapshot test files Reviewed By: fabriziocucci, cortinico Differential Revision: D74321590 --- .../set-rn-artifacts-version-test.js.snap | 12 +++++++ .../__snapshots__/set-version-test.js.snap | 6 ++++ .../set-rn-artifacts-version-test.js | 14 ++++++++ scripts/releases/set-rn-artifacts-version.js | 35 +++++++++++++++++++ 4 files changed, 67 insertions(+) diff --git a/scripts/releases/__tests__/__snapshots__/set-rn-artifacts-version-test.js.snap b/scripts/releases/__tests__/__snapshots__/set-rn-artifacts-version-test.js.snap index 9b49b2b57a9b28..2209f4aeab716e 100644 --- a/scripts/releases/__tests__/__snapshots__/set-rn-artifacts-version-test.js.snap +++ b/scripts/releases/__tests__/__snapshots__/set-rn-artifacts-version-test.js.snap @@ -121,6 +121,12 @@ constexpr struct { " `; +exports[`updateReactNativeArtifacts should set nightly version: packages/react-native/scripts/codegen/__tests__/__snapshots__/generate-artifacts-executor-test.js.snap 1`] = ` +"version = \\"0.81.0-nightly-29282302-abcd1234\\\\ +other text +version = \\"0.81.0-nightly-29282302-abcd1234\\\\" +`; + exports[`updateReactNativeArtifacts should set release version: packages/react-native/Libraries/Core/ReactNativeVersion.js 1`] = ` "/** * Copyright (c) Meta Platforms, Inc. and affiliates. @@ -241,3 +247,9 @@ constexpr struct { } // namespace facebook::react " `; + +exports[`updateReactNativeArtifacts should set release version: packages/react-native/scripts/codegen/__tests__/__snapshots__/generate-artifacts-executor-test.js.snap 1`] = ` +"version = \\"0.81.0\\\\ +other text +version = \\"0.81.0\\\\" +`; diff --git a/scripts/releases/__tests__/__snapshots__/set-version-test.js.snap b/scripts/releases/__tests__/__snapshots__/set-version-test.js.snap index db17d33615f1b3..ee516002ff8c88 100644 --- a/scripts/releases/__tests__/__snapshots__/set-version-test.js.snap +++ b/scripts/releases/__tests__/__snapshots__/set-version-test.js.snap @@ -1,5 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`setVersion updates monorepo for nightly: ../../../../packages/react-native/scripts/codegen/__tests__/__snapshots__/generate-artifacts-executor-test.js.snap 1`] = `"[omitted]"`; + exports[`setVersion updates monorepo for nightly: set-version/package.json 1`] = ` "{ \\"name\\": \\"@react-native/monorepo\\", @@ -81,6 +83,8 @@ exports[`setVersion updates monorepo for nightly: set-version/packages/react-nat " `; +exports[`setVersion updates monorepo for release-candidate: ../../../../packages/react-native/scripts/codegen/__tests__/__snapshots__/generate-artifacts-executor-test.js.snap 1`] = `"[omitted]"`; + exports[`setVersion updates monorepo for release-candidate: set-version/package.json 1`] = ` "{ \\"name\\": \\"@react-native/monorepo\\", @@ -162,6 +166,8 @@ exports[`setVersion updates monorepo for release-candidate: set-version/packages " `; +exports[`setVersion updates monorepo for stable version: ../../../../packages/react-native/scripts/codegen/__tests__/__snapshots__/generate-artifacts-executor-test.js.snap 1`] = `"[omitted]"`; + exports[`setVersion updates monorepo for stable version: set-version/package.json 1`] = ` "{ \\"name\\": \\"@react-native/monorepo\\", diff --git a/scripts/releases/__tests__/set-rn-artifacts-version-test.js b/scripts/releases/__tests__/set-rn-artifacts-version-test.js index 3b885f1b226d64..97cb47ebf0f596 100644 --- a/scripts/releases/__tests__/set-rn-artifacts-version-test.js +++ b/scripts/releases/__tests__/set-rn-artifacts-version-test.js @@ -37,6 +37,20 @@ describe('updateReactNativeArtifacts', () => { ) { return 'VERSION_NAME=1000.0.0\n'; } + + if ( + filePath === + path.join( + REPO_ROOT, + 'packages/react-native/scripts/codegen/__tests__/__snapshots__/generate-artifacts-executor-test.js.snap', + ) + ) { + return ` +version = "1000.0.0\\ +other text +version = "1000.0.0\\ + `; + } }); }); diff --git a/scripts/releases/set-rn-artifacts-version.js b/scripts/releases/set-rn-artifacts-version.js index 58557dbb97ad4a..0bd5618f1024f1 100755 --- a/scripts/releases/set-rn-artifacts-version.js +++ b/scripts/releases/set-rn-artifacts-version.js @@ -79,6 +79,7 @@ async function updateReactNativeArtifacts( const versionInfo = parseVersion(version, buildType); await updateSourceFiles(versionInfo); + await updateTestFiles(versionInfo); await updateGradleFile(versionInfo.version); } @@ -116,6 +117,40 @@ function updateSourceFiles( ]); } +function updateTestFiles( + versionInfo /*: Version */, +) /*: Promise>*/ { + const oldVersion = /"\d+\.\d+\.\d+(-rc\.\d+)?\\/g; + const newVersion = `"${versionInfo.version}\\`; + + const snapshotTestPath = path.join( + __dirname, + '..', + '..', + 'packages', + 'react-native', + 'scripts', + 'codegen', + '__tests__', + '__snapshots__', + 'generate-artifacts-executor-test.js.snap', + ); + + const promise /*: Promise */ = new Promise(async (resolve, reject) => { + try { + let snapshot = String(await fs.readFile(snapshotTestPath, 'utf8')).trim(); + // Replace all occurrences of the old version pattern with the new version + snapshot = snapshot.replaceAll(oldVersion, newVersion); + await fs.writeFile(snapshotTestPath, snapshot, {encoding: 'utf8'}); + resolve(); + } catch (error) { + reject(error); + } + }); + + return Promise.all([promise]); +} + async function updateGradleFile(version /*: string */) /*: Promise */ { const contents = await fs.readFile(GRADLE_FILE_PATH, 'utf-8');