From 5e5f66be2b90e40094c08b36a88d5826c78198f8 Mon Sep 17 00:00:00 2001 From: Priyagupta108 Date: Fri, 21 Feb 2025 14:56:34 +0530 Subject: [PATCH] Add error handling for Windows 'pip cache dir' execution --- dist/setup/index.js | 19 ++++++++++--------- src/cache-distributions/pip-cache.ts | 18 +++++++++--------- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/dist/setup/index.js b/dist/setup/index.js index 53196f67..c2158733 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -98893,24 +98893,25 @@ class PipCache extends cache_distributor_1.default { } getCacheGlobalDirectories() { return __awaiter(this, void 0, void 0, function* () { - let exitCode = 1; + let exitCode = 0; let stdout = ''; let stderr = ''; // Add temporary fix for Windows - // On windows it is necessary to execute through an exec - // because the getExecOutput gives a non zero code or writes to stderr for pip 22.0.2, + // On Windows, it is necessary to execute through an exec + // because the getExecOutput gives a non-zero code or writes to stderr for pip 22.0.2, // or spawn must be started with the shell option enabled for getExecOutput // Related issue: https://github.com/actions/setup-python/issues/328 if (utils_1.IS_WINDOWS) { const execPromisify = util_1.default.promisify(child_process.exec); - ({ stdout: stdout, stderr: stderr } = yield execPromisify('pip cache dir')); + try { + ({ stdout, stderr } = yield execPromisify('pip cache dir')); + } + catch (err) { + exitCode = 1; + } } else { - ({ - stdout: stdout, - stderr: stderr, - exitCode: exitCode - } = yield exec.getExecOutput('pip cache dir')); + ({ stdout, stderr, exitCode } = yield exec.getExecOutput('pip cache dir')); } if (exitCode && stderr) { throw new Error(`Could not get cache folder path for pip package manager`); diff --git a/src/cache-distributions/pip-cache.ts b/src/cache-distributions/pip-cache.ts index d64ae931..1833c5f2 100644 --- a/src/cache-distributions/pip-cache.ts +++ b/src/cache-distributions/pip-cache.ts @@ -21,24 +21,24 @@ class PipCache extends CacheDistributor { } protected async getCacheGlobalDirectories() { - let exitCode = 1; + let exitCode = 0; let stdout = ''; let stderr = ''; // Add temporary fix for Windows - // On windows it is necessary to execute through an exec - // because the getExecOutput gives a non zero code or writes to stderr for pip 22.0.2, + // On Windows, it is necessary to execute through an exec + // because the getExecOutput gives a non-zero code or writes to stderr for pip 22.0.2, // or spawn must be started with the shell option enabled for getExecOutput // Related issue: https://github.com/actions/setup-python/issues/328 if (IS_WINDOWS) { const execPromisify = utils.promisify(child_process.exec); - ({stdout: stdout, stderr: stderr} = await execPromisify('pip cache dir')); + try { + ({stdout, stderr} = await execPromisify('pip cache dir')); + } catch (err) { + exitCode = 1; + } } else { - ({ - stdout: stdout, - stderr: stderr, - exitCode: exitCode - } = await exec.getExecOutput('pip cache dir')); + ({stdout, stderr, exitCode} = await exec.getExecOutput('pip cache dir')); } if (exitCode && stderr) {