From f8ca9e854205f44d92e7ca7db419889d3a01e306 Mon Sep 17 00:00:00 2001 From: Luna Wei Date: Wed, 14 Jun 2023 07:32:42 -0700 Subject: [PATCH 1/2] Fix set-rn-version Summary: Changelog: [Internal] - Fix `saveFiles` in set-rn-version, incorrect function invoke Differential Revision: D46582168 fbshipit-source-id: 0fc72b3167adaf3588a0606e53f990bf2eeb4440 --- scripts/__tests__/set-rn-version-test.js | 1 - scripts/set-rn-version.js | 9 +++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/scripts/__tests__/set-rn-version-test.js b/scripts/__tests__/set-rn-version-test.js index 5c83cb002ee9..019aef2a62da 100644 --- a/scripts/__tests__/set-rn-version-test.js +++ b/scripts/__tests__/set-rn-version-test.js @@ -156,7 +156,6 @@ describe('set-rn-version', () => { sedMock.mockReturnValueOnce({code: 0}); const filesToValidate = [ 'packages/react-native/package.json', - 'packages/react-native/ReactAndroid/gradle.properties', 'packages/react-native/template/package.json', ]; diff --git a/scripts/set-rn-version.js b/scripts/set-rn-version.js index 4081ee42afbb..189e882fb13e 100755 --- a/scripts/set-rn-version.js +++ b/scripts/set-rn-version.js @@ -155,14 +155,19 @@ function setReactNativeVersion(argVersion, dependencyVersions, buildType) { // Create tmp folder for copies of files to verify files have changed const filesToValidate = [ 'packages/react-native/package.json', - 'packages/react-native/ReactAndroid/gradle.properties', 'packages/react-native/template/package.json', ]; const tmpVersioningFolder = fs.mkdtempSync( path.join(os.tmpdir(), 'rn-set-version'), ); echo(`The tmp versioning folder is ${tmpVersioningFolder}`); - saveFiles(tmpVersioningFolder); + saveFiles( + [ + 'packages/react-native/package.json', + 'packages/react-native/template/package.json', + ], + tmpVersioningFolder, + ); setSource(version); setPackage(version, dependencyVersions); From 222436e16a8f1c5c66c0895e5dfdc78943088cad Mon Sep 17 00:00:00 2001 From: Luna Wei Date: Wed, 14 Jun 2023 07:33:06 -0700 Subject: [PATCH 2/2] Delete validation in set-rn-version (#37814) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/37814 Changelog: [Internal] - deleting file validation, do we need this? Reviewed By: NickGerleman Differential Revision: D46584771 fbshipit-source-id: d65b1e67220f2bf436f8ba8b38c9be05278c2f07 --- scripts/__tests__/set-rn-version-test.js | 46 +----------------------- scripts/set-rn-version.js | 44 +---------------------- 2 files changed, 2 insertions(+), 88 deletions(-) diff --git a/scripts/__tests__/set-rn-version-test.js b/scripts/__tests__/set-rn-version-test.js index 019aef2a62da..d01ee5959059 100644 --- a/scripts/__tests__/set-rn-version-test.js +++ b/scripts/__tests__/set-rn-version-test.js @@ -7,7 +7,6 @@ * @format */ -const execMock = jest.fn(); const echoMock = jest.fn(); const catMock = jest.fn(); const sedMock = jest.fn(); @@ -16,23 +15,15 @@ const updateTemplatePackageMock = jest.fn(); jest .mock('shelljs', () => ({ - exec: execMock, echo: echoMock, cat: catMock, sed: sedMock, })) .mock('./../update-template-package', () => updateTemplatePackageMock) - .mock('./../scm-utils', () => ({ - saveFiles: jest.fn(), - })) - .mock('path', () => ({ - join: () => '../packages/react-native', - })) .mock('fs', () => ({ writeFileSync: writeFileSyncMock, mkdtempSync: () => './rn-set-version/', - })) - .mock('os'); + })); const setReactNativeVersion = require('../set-rn-version'); @@ -58,7 +49,6 @@ describe('set-rn-version', () => { } }); - execMock.mockReturnValueOnce({stdout: 'line1\nline2\nline3\n'}); sedMock.mockReturnValueOnce({code: 0}); const version = '0.81.0-nightly-29282302-abcd1234'; @@ -115,7 +105,6 @@ describe('set-rn-version', () => { return 'exports.version = {major: ${major}, minor: ${minor}, patch: ${patch}, prerelease: ${prerelease}}'; }); - execMock.mockReturnValueOnce({stdout: 'line1\nline2\nline3\n'}); sedMock.mockReturnValueOnce({code: 0}); const version = '0.81.0'; @@ -144,38 +133,5 @@ describe('set-rn-version', () => { expect(updateTemplatePackageMock).toHaveBeenCalledWith({ 'react-native': version, }); - expect(execMock.mock.calls[0][0]).toBe( - `diff -r ./rn-set-version/ . | grep '^[>]' | grep -c ${version} `, - ); - }); - - it('should fail validation', () => { - catMock.mockReturnValue('{}'); - - execMock.mockReturnValueOnce({stdout: 'line1\nline2\n'}); - sedMock.mockReturnValueOnce({code: 0}); - const filesToValidate = [ - 'packages/react-native/package.json', - 'packages/react-native/template/package.json', - ]; - - const version = '0.81.0'; - setReactNativeVersion(version, null, 'release'); - - expect(echoMock).toHaveBeenNthCalledWith( - 1, - 'The tmp versioning folder is ./rn-set-version/', - ); - - expect(echoMock).toHaveBeenNthCalledWith(2, 'WARNING:'); - - expect(echoMock.mock.calls[2][0]).toBe( - `Failed to update all the files: [${filesToValidate.join( - ', ', - )}] must have versions in them`, - ); - expect(echoMock.mock.calls[3][0]).toBe( - `These files already had version ${version} set.`, - ); }); }); diff --git a/scripts/set-rn-version.js b/scripts/set-rn-version.js index 189e882fb13e..836fa7d96f31 100755 --- a/scripts/set-rn-version.js +++ b/scripts/set-rn-version.js @@ -10,12 +10,9 @@ 'use strict'; const fs = require('fs'); -const os = require('os'); -const path = require('path'); -const {cat, echo, exec, exit, sed} = require('shelljs'); +const {cat, echo, exit, sed} = require('shelljs'); const yargs = require('yargs'); const {parseVersion, validateBuildType} = require('./version-utils'); -const {saveFiles} = require('./scm-utils'); const updateTemplatePackage = require('./update-template-package'); const {applyPackageVersions} = require('./npm-utils'); @@ -152,23 +149,6 @@ function setReactNativeVersion(argVersion, dependencyVersions, buildType) { const version = parseVersion(argVersion, buildType); - // Create tmp folder for copies of files to verify files have changed - const filesToValidate = [ - 'packages/react-native/package.json', - 'packages/react-native/template/package.json', - ]; - const tmpVersioningFolder = fs.mkdtempSync( - path.join(os.tmpdir(), 'rn-set-version'), - ); - echo(`The tmp versioning folder is ${tmpVersioningFolder}`); - saveFiles( - [ - 'packages/react-native/package.json', - 'packages/react-native/template/package.json', - ], - tmpVersioningFolder, - ); - setSource(version); setPackage(version, dependencyVersions); @@ -179,28 +159,6 @@ function setReactNativeVersion(argVersion, dependencyVersions, buildType) { updateTemplatePackage(templateDependencyVersions); setGradle(version); - - // Validate changes - // We just do a git diff and check how many times version is added across files - const numberOfChangedLinesWithNewVersion = exec( - `diff -r ${tmpVersioningFolder} . | grep '^[>]' | grep -c ${version.version} `, - {silent: true}, - ).stdout.trim(); - - if (+numberOfChangedLinesWithNewVersion !== filesToValidate.length) { - // TODO: the logic that checks whether all the changes have been applied - // is missing several files. For example, it is not checking Ruby version nor that - // the Objecive-C files, the codegen and other files are properly updated. - // We are going to work on this in another PR. - echo('WARNING:'); - echo( - `Failed to update all the files: [${filesToValidate.join( - ', ', - )}] must have versions in them`, - ); - echo(`These files already had version ${version.version} set.`); - } - return; }