diff --git a/dist/setup/index.js b/dist/setup/index.js index 53196f673..7f7400d65 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -98893,24 +98893,28 @@ 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) { + // Pip outputs warnings to stderr (e.g., --no-python-version-warning flag deprecation warning), causing false failure detection + // Related issue: https://github.com/actions/setup-python/issues/1034 + // If an error occurs, set exitCode to 1 to indicate failure + 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 d64ae931d..4af492c0e 100644 --- a/src/cache-distributions/pip-cache.ts +++ b/src/cache-distributions/pip-cache.ts @@ -21,24 +21,27 @@ 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) { + // Pip outputs warnings to stderr (e.g., --no-python-version-warning flag deprecation warning), causing false failure detection + // Related issue: https://github.com/actions/setup-python/issues/1034 + // If an error occurs, set exitCode to 1 to indicate failure + 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) {