Add double publishing support to set-rn-version (#40784)

Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/40784

## Changelog
[Internal] Add double publishing support to set-rn-version

Reviewed By: cortinico

Differential Revision: D49955312

fbshipit-source-id: b154fe0c4cc53dbe3cc6319bbf43663307816ee4
This commit is contained in:
Riccardo Cipolleschi 2023-10-11 10:09:57 -07:00 коммит произвёл Facebook GitHub Bot
Родитель 657aea0946
Коммит 2d067568d7
2 изменённых файлов: 65 добавлений и 1 удалений

Просмотреть файл

@ -134,4 +134,68 @@ describe('set-rn-version', () => {
'react-native': version,
});
});
it('should set prealpha version', () => {
catMock.mockImplementation(path => {
if (path === 'packages/react-native/package.json') {
return '{"name": "myPackage", "version": 2, "dependencies": {"@react-native/package-a": "prealpha", "@react-native/package-b": "^0.73.0"}}';
} else if (
path === 'scripts/versiontemplates/ReactNativeVersion.java.template' ||
path === 'scripts/versiontemplates/RCTVersion.m.template' ||
path === 'scripts/versiontemplates/ReactNativeVersion.h.template' ||
path === 'scripts/versiontemplates/ReactNativeVersion.js.template'
) {
return '{major: ${major}, minor: ${minor}, patch: ${patch}, prerelease: ${prerelease}}';
} else {
throw new Error(`Invalid path passed for package dir. Path: ${path}`);
}
});
sedMock.mockReturnValueOnce({code: 0});
const version = '0.0.0-prealpha-2023100415';
const nightlyVersions = {
'@react-native/package-a': version,
};
setReactNativeVersion(version, nightlyVersions, 'prealpha');
expect(sedMock).toHaveBeenCalledWith(
'-i',
/^VERSION_NAME=.*/,
`VERSION_NAME=${version}`,
'packages/react-native/ReactAndroid/gradle.properties',
);
expect(writeFileSyncMock.mock.calls.length).toBe(5);
expect(writeFileSyncMock.mock.calls[0][0]).toBe(
'packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java',
);
expect(writeFileSyncMock.mock.calls[0][1]).toBe(
'{major: 0, minor: 0, patch: 0, prerelease: "prealpha-2023100415"}',
);
expect(writeFileSyncMock.mock.calls[1][0]).toBe(
'packages/react-native/React/Base/RCTVersion.m',
);
expect(writeFileSyncMock.mock.calls[2][0]).toBe(
'packages/react-native/ReactCommon/cxxreact/ReactNativeVersion.h',
);
expect(writeFileSyncMock.mock.calls[3][0]).toBe(
'packages/react-native/Libraries/Core/ReactNativeVersion.js',
);
expect(writeFileSyncMock.mock.calls[4][0]).toBe(
'packages/react-native/package.json',
);
expect(writeFileSyncMock.mock.calls[4][1]).toBe(`{
"name": "myPackage",
"version": "${version}",
"dependencies": {
"@react-native/package-a": "0.0.0-prealpha-2023100415",
"@react-native/package-b": "^0.73.0"
}
}`);
expect(updateTemplatePackageMock).toHaveBeenCalledWith({
'@react-native/package-a': '0.0.0-prealpha-2023100415',
'react-native': version,
});
});
});

Просмотреть файл

@ -46,7 +46,7 @@ if (require.main === module) {
.option('b', {
alias: 'build-type',
type: 'string',
choices: ['dry-run', 'nightly', 'release'],
choices: ['dry-run', 'nightly', 'release', 'prealpha'],
required: true,
}).argv;