Files
react-native/scripts/releases/utils/__tests__/npm-utils-test.js
Nicola Corti 27630d3106 Remove unused --otp property from release infrastructure (#53779)
Summary:
The `--otp` flag is completely unused now, therefore it can be removed.
We don't pass the `NPM_CONFIG_OTP` env variable either as this was done back in the days of CircleCI so I'm cleaning this up.

## Changelog:

[INTERNAL] - Remove unused --otp property from release infrastructure

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

Test Plan: CI

Reviewed By: lunaleaps

Differential Revision: D82453539

Pulled By: cortinico

fbshipit-source-id: 84a6b82a037c754165c21e17976dc534d9a7ba4c
2025-09-16 02:52:58 -07:00

100 lines
3.1 KiB
JavaScript

/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow strict-local
* @format
*/
const {getNpmInfo, publishPackage} = require('../npm-utils');
const execMock = jest.fn();
const getCurrentCommitMock = jest.fn();
const exitIfNotOnGitMock = jest.fn();
jest.mock('shelljs', () => ({
exec: execMock,
}));
jest.mock('./../scm-utils', () => ({
getCurrentCommit: getCurrentCommitMock,
exitIfNotOnGit: exitIfNotOnGitMock,
}));
describe('npm-utils', () => {
beforeEach(() => {
jest.resetModules();
jest.resetAllMocks();
});
describe('publishPackage', () => {
it('should run publish command', () => {
publishPackage(
'path/to/my-package',
{tags: ['latest']},
{silent: true, cwd: 'i/expect/this/to/be/overriden'},
);
expect(execMock).toHaveBeenCalledWith('npm publish --tag latest', {
silent: true,
cwd: 'path/to/my-package',
});
});
it('should run publish command when no execOptions', () => {
publishPackage('path/to/my-package', {tags: ['latest']});
expect(execMock).toHaveBeenCalledWith('npm publish --tag latest', {
cwd: 'path/to/my-package',
});
});
it('should handle multiple tags', () => {
publishPackage('path/to/my-package', {
tags: ['next', '0.72-stable'],
});
expect(execMock).toHaveBeenCalledWith(
'npm publish --tag next --tag 0.72-stable',
{cwd: 'path/to/my-package'},
);
});
it('should handle -no-tag', () => {
publishPackage('path/to/my-package', {tags: ['--no-tag']});
expect(execMock).toHaveBeenCalledWith('npm publish --no-tag', {
cwd: 'path/to/my-package',
});
});
});
describe('getNpmInfo', () => {
beforeEach(() => {
process.env.GITHUB_REF = '';
process.env.GITHUB_REF_NAME = '';
});
it('return the expected format for patch-prereleases on GHA', () => {
const isoStringSpy = jest.spyOn(Date.prototype, 'toISOString');
isoStringSpy.mockReturnValue('2023-10-04T15:43:55.123Z');
getCurrentCommitMock.mockImplementation(() => 'abcd1234');
// exitIfNotOnGit takes a function as a param and it:
// 1. checks if we are on git => if not it exits
// 2. run the function passed as a param and return the output to the caller
// For the mock, we are assuming we are on github and we are returning `false`
// as the `getNpmInfo` function will pass a function that checks if the
// current commit is a tagged with 'latest'.
// In the Mock, we are assuming that we are on git (it does not exits) and the
// checkIfLatest function returns `false`
exitIfNotOnGitMock.mockImplementation(() => false);
process.env.GITHUB_REF = 'refs/tags/v0.74.1-rc.0';
process.env.GITHUB_REF_NAME = 'v0.74.1-rc.0';
const returnedValue = getNpmInfo('release');
expect(returnedValue).toMatchObject({
version: `0.74.1-rc.0`,
tag: '--no-tag',
});
});
});
});