Compare commits

...

3 Commits

Author SHA1 Message Date
Raphaël
714067e756
Merge 7d1c5630d8 into 89d709d423 2025-09-21 17:42:49 +02:00
dependabot[bot]
89d709d423
Bump prettier from 2.8.8 to 3.6.2 (#1334)
* Bump prettier from 2.8.8 to 3.6.2

Bumps [prettier](https://github.com/prettier/prettier) from 2.8.8 to 3.6.2.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.8.8...3.6.2)

---
updated-dependencies:
- dependency-name: prettier
  dependency-version: 3.6.2
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* check failure fix

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Aparna Jyothi <aparnajyothi-y@github.com>
2025-09-18 15:17:30 -05:00
Raphaël
7d1c5630d8
Explicitly exit the process to not wait for hanging promises
See https://github.com/actions/setup-node/issues/878
2023-11-27 16:08:54 +01:00
12 changed files with 101 additions and 67 deletions

View File

@ -46,6 +46,7 @@ describe('setup-node', () => {
let isCacheActionAvailable: jest.SpyInstance; let isCacheActionAvailable: jest.SpyInstance;
let getExecOutputSpy: jest.SpyInstance; let getExecOutputSpy: jest.SpyInstance;
let getJsonSpy: jest.SpyInstance; let getJsonSpy: jest.SpyInstance;
let processExitSpy: jest.SpyInstance;
beforeEach(() => { beforeEach(() => {
// @actions/core // @actions/core
@ -63,6 +64,9 @@ describe('setup-node', () => {
archSpy = jest.spyOn(osm, 'arch'); archSpy = jest.spyOn(osm, 'arch');
archSpy.mockImplementation(() => os['arch']); archSpy.mockImplementation(() => os['arch']);
execSpy = jest.spyOn(cp, 'execSync'); execSpy = jest.spyOn(cp, 'execSync');
processExitSpy = jest
.spyOn(process, 'exit')
.mockImplementation((() => {}) as () => never);
// @actions/tool-cache // @actions/tool-cache
findSpy = jest.spyOn(tc, 'find'); findSpy = jest.spyOn(tc, 'find');

View File

@ -39,6 +39,8 @@ describe('main tests', () => {
let setupNodeJsSpy: jest.SpyInstance; let setupNodeJsSpy: jest.SpyInstance;
let processExitSpy: jest.SpyInstance;
beforeEach(() => { beforeEach(() => {
inputs = {}; inputs = {};
@ -79,6 +81,10 @@ describe('main tests', () => {
setupNodeJsSpy = jest.spyOn(OfficialBuilds.prototype, 'setupNodeJs'); setupNodeJsSpy = jest.spyOn(OfficialBuilds.prototype, 'setupNodeJs');
setupNodeJsSpy.mockImplementation(() => {}); setupNodeJsSpy.mockImplementation(() => {});
processExitSpy = jest
.spyOn(process, 'exit')
.mockImplementation((() => {}) as () => never);
}); });
afterEach(() => { afterEach(() => {
@ -240,6 +246,12 @@ describe('main tests', () => {
`::error::The specified node version file at: ${versionFilePath} does not exist${osm.EOL}` `::error::The specified node version file at: ${versionFilePath} does not exist${osm.EOL}`
); );
}); });
it('should call process.exit() explicitly after running', async () => {
await main.run();
expect(processExitSpy).toHaveBeenCalled();
});
}); });
describe('cache on GHES', () => { describe('cache on GHES', () => {

View File

@ -46,6 +46,7 @@ describe('setup-node', () => {
let isCacheActionAvailable: jest.SpyInstance; let isCacheActionAvailable: jest.SpyInstance;
let getExecOutputSpy: jest.SpyInstance; let getExecOutputSpy: jest.SpyInstance;
let getJsonSpy: jest.SpyInstance; let getJsonSpy: jest.SpyInstance;
let processExitSpy: jest.SpyInstance;
beforeEach(() => { beforeEach(() => {
// @actions/core // @actions/core
@ -64,6 +65,9 @@ describe('setup-node', () => {
archSpy = jest.spyOn(osm, 'arch'); archSpy = jest.spyOn(osm, 'arch');
archSpy.mockImplementation(() => os['arch']); archSpy.mockImplementation(() => os['arch']);
execSpy = jest.spyOn(cp, 'execSync'); execSpy = jest.spyOn(cp, 'execSync');
processExitSpy = jest
.spyOn(process, 'exit')
.mockImplementation((() => {}) as () => never);
// @actions/tool-cache // @actions/tool-cache
findSpy = jest.spyOn(tc, 'find'); findSpy = jest.spyOn(tc, 'find');

View File

@ -46,6 +46,7 @@ describe('setup-node', () => {
let isCacheActionAvailable: jest.SpyInstance; let isCacheActionAvailable: jest.SpyInstance;
let getExecOutputSpy: jest.SpyInstance; let getExecOutputSpy: jest.SpyInstance;
let getJsonSpy: jest.SpyInstance; let getJsonSpy: jest.SpyInstance;
let processExitSpy: jest.SpyInstance;
beforeEach(() => { beforeEach(() => {
// @actions/core // @actions/core
@ -63,6 +64,9 @@ describe('setup-node', () => {
archSpy = jest.spyOn(osm, 'arch'); archSpy = jest.spyOn(osm, 'arch');
archSpy.mockImplementation(() => os['arch']); archSpy.mockImplementation(() => os['arch']);
execSpy = jest.spyOn(cp, 'execSync'); execSpy = jest.spyOn(cp, 'execSync');
processExitSpy = jest
.spyOn(process, 'exit')
.mockImplementation((() => {}) as () => never);
// @actions/tool-cache // @actions/tool-cache
findSpy = jest.spyOn(tc, 'find'); findSpy = jest.spyOn(tc, 'find');

View File

@ -41,6 +41,7 @@ describe('setup-node', () => {
let isCacheActionAvailable: jest.SpyInstance; let isCacheActionAvailable: jest.SpyInstance;
let getExecOutputSpy: jest.SpyInstance; let getExecOutputSpy: jest.SpyInstance;
let getJsonSpy: jest.SpyInstance; let getJsonSpy: jest.SpyInstance;
let processExitSpy: jest.SpyInstance;
beforeEach(() => { beforeEach(() => {
// @actions/core // @actions/core
@ -58,6 +59,9 @@ describe('setup-node', () => {
archSpy = jest.spyOn(osm, 'arch'); archSpy = jest.spyOn(osm, 'arch');
archSpy.mockImplementation(() => os['arch']); archSpy.mockImplementation(() => os['arch']);
execSpy = jest.spyOn(cp, 'execSync'); execSpy = jest.spyOn(cp, 'execSync');
processExitSpy = jest
.spyOn(process, 'exit')
.mockImplementation((() => {}) as () => never);
// @actions/tool-cache // @actions/tool-cache
findSpy = jest.spyOn(tc, 'find'); findSpy = jest.spyOn(tc, 'find');

3
dist/setup/index.js vendored
View File

@ -99807,6 +99807,9 @@ function run() {
catch (err) { catch (err) {
core.setFailed(err.message); core.setFailed(err.message);
} }
// Explicit process.exit() to not wait for hanging promises,
// see https://github.com/actions/setup-node/issues/878
process.exit();
}); });
} }
exports.run = run; exports.run = run;

13
package-lock.json generated
View File

@ -34,7 +34,7 @@
"jest": "^29.7.0", "jest": "^29.7.0",
"jest-circus": "^29.7.0", "jest-circus": "^29.7.0",
"jest-each": "^29.7.0", "jest-each": "^29.7.0",
"prettier": "^2.8.4", "prettier": "^3.6.2",
"ts-jest": "^29.4.1", "ts-jest": "^29.4.1",
"typescript": "^5.4.2" "typescript": "^5.4.2"
}, },
@ -4962,15 +4962,16 @@
} }
}, },
"node_modules/prettier": { "node_modules/prettier": {
"version": "2.8.8", "version": "3.6.2",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz",
"integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==",
"dev": true, "dev": true,
"license": "MIT",
"bin": { "bin": {
"prettier": "bin-prettier.js" "prettier": "bin/prettier.cjs"
}, },
"engines": { "engines": {
"node": ">=10.13.0" "node": ">=14"
}, },
"funding": { "funding": {
"url": "https://github.com/prettier/prettier?sponsor=1" "url": "https://github.com/prettier/prettier?sponsor=1"

View File

@ -53,7 +53,7 @@
"jest": "^29.7.0", "jest": "^29.7.0",
"jest-circus": "^29.7.0", "jest-circus": "^29.7.0",
"jest-each": "^29.7.0", "jest-each": "^29.7.0",
"prettier": "^2.8.4", "prettier": "^3.6.2",
"ts-jest": "^29.4.1", "ts-jest": "^29.4.1",
"typescript": "^5.4.2" "typescript": "^5.4.2"
} }

View File

@ -167,14 +167,12 @@ const getCacheDirectoriesFromCacheDependencyPath = async (
packageManagerInfo: PackageManagerInfo, packageManagerInfo: PackageManagerInfo,
cacheDependencyPath: string cacheDependencyPath: string
): Promise<string[]> => { ): Promise<string[]> => {
const projectDirectories = await getProjectDirectoriesFromCacheDependencyPath( const projectDirectories =
cacheDependencyPath await getProjectDirectoriesFromCacheDependencyPath(cacheDependencyPath);
);
const cacheFoldersPaths = await Promise.all( const cacheFoldersPaths = await Promise.all(
projectDirectories.map(async projectDirectory => { projectDirectories.map(async projectDirectory => {
const cacheFolderPath = await packageManagerInfo.getCacheFolderPath( const cacheFolderPath =
projectDirectory await packageManagerInfo.getCacheFolderPath(projectDirectory);
);
core.debug( core.debug(
`${packageManagerInfo.name}'s cache folder "${cacheFolderPath}" configured for the directory "${projectDirectory}"` `${packageManagerInfo.name}'s cache folder "${cacheFolderPath}" configured for the directory "${projectDirectory}"`
); );

View File

@ -93,6 +93,10 @@ export async function run() {
} catch (err) { } catch (err) {
core.setFailed((err as Error).message); core.setFailed((err as Error).message);
} }
// Explicit process.exit() to not wait for hanging promises,
// see https://github.com/actions/setup-node/issues/878
process.exit();
} }
function resolveVersionInput(): string { function resolveVersionInput(): string {