diff --git a/lib/workers/branch/index.js b/lib/workers/branch/index.js index 4a7bfd3e858004531a7ede7a0b007c1ca757f1c9..2aa1ee0afa0ec389c11351e1b05dfabf77d6a184 100644 --- a/lib/workers/branch/index.js +++ b/lib/workers/branch/index.js @@ -177,7 +177,10 @@ async function processBranch(branchConfig) { logger.debug('Passing repository-changed error up'); throw err; } - logger.error({ err }, `Error updating branch: ${err.message}`); + // istanbul ignore if + if (err.message !== 'registry-failure') { + logger.error({ err }, `Error updating branch: ${err.message}`); + } // Don't throw here - we don't want to stop the other renovations return 'error'; } diff --git a/lib/workers/branch/lock-files.js b/lib/workers/branch/lock-files.js index 7d9cbf309c77c85392518fbbe5af56aed5f9be80..f32a8664cb1df1b9ca51ca8686d7c2bd86ca5372 100644 --- a/lib/workers/branch/lock-files.js +++ b/lib/workers/branch/lock-files.js @@ -402,6 +402,22 @@ async function getUpdatedLockFiles(config) { 'package-lock.json' ); if (res.error) { + // istanbul ignore if + if (res.stderr && res.stderr.includes('No matching version found for')) { + for (const upgrade of config.upgrades) { + if ( + res.stderr.includes( + `No matching version found for ${upgrade.depName}` + ) + ) { + logger.info( + { dependency: upgrade.depName }, + 'npm install failed for the dependency being updated - skipping branch creation' + ); + throw new Error('registry-failure'); + } + } + } lockFileErrors.push({ lockFile: lockFileName, stderr: res.stderr, @@ -433,6 +449,22 @@ async function getUpdatedLockFiles(config) { 'npm-shrinkwrap.json' ); if (res.error) { + // istanbul ignore if + if (res.stderr && res.stderr.includes('No matching version found for')) { + for (const upgrade of config.upgrades) { + if ( + res.stderr.includes( + `No matching version found for ${upgrade.depName}` + ) + ) { + logger.info( + { dependency: upgrade.depName }, + 'npm install failed for the dependency being updated - skipping branch creation' + ); + throw new Error('registry-failure'); + } + } + } lockFileErrors.push({ lockFile: lockFileName, stderr: res.stderr, @@ -462,6 +494,24 @@ async function getUpdatedLockFiles(config) { env ); if (res.error) { + // istanbul ignore if + if (res.stderr && res.stderr.includes(`Couldn't find any versions for`)) { + for (const upgrade of config.upgrades) { + /* eslint-disable no-useless-escape */ + if ( + res.stderr.includes( + `Couldn't find any versions for \\\"${upgrade.depName}\\\"` + ) + ) { + logger.warn( + { dependency: upgrade.depName }, + 'yarn install failed for the dependency being updated - skipping branch creation' + ); + throw new Error('registry-failure'); + } + /* eslint-enable no-useless-escape */ + } + } lockFileErrors.push({ lockFile: lockFileName, stderr: res.stderr, @@ -491,6 +541,22 @@ async function getUpdatedLockFiles(config) { env ); if (res.error) { + // istanbul ignore if + if (res.stdout && res.stdout.includes(`No compatible version found:`)) { + for (const upgrade of config.upgrades) { + if ( + res.stdout.includes( + `No compatible version found: ${upgrade.depName}` + ) + ) { + logger.warn( + { dependency: upgrade.depName }, + 'pnpm install failed for the dependency being updated - skipping branch creation' + ); + throw new Error('registry-failure'); + } + } + } lockFileErrors.push({ lockFile: lockFileName, stderr: res.stderr, diff --git a/lib/workers/branch/npm.js b/lib/workers/branch/npm.js index 7f2c44848a98a47766d09a58ce633b5d122ed81a..1558d5c93df3599cb150b4798f515513aaada004 100644 --- a/lib/workers/branch/npm.js +++ b/lib/workers/branch/npm.js @@ -70,7 +70,7 @@ async function generateLockFile(tmpDir, env, filename) { 'Generated lockfile' ); } catch (err) /* istanbul ignore next */ { - logger.warn( + logger.info( { err, stdout, diff --git a/lib/workers/branch/pnpm.js b/lib/workers/branch/pnpm.js index f843220c359baf0ee89205b36c7a59a1b21fe973..5f0b3bbbb6eaf3da4ae17870b78456e8049ef161 100644 --- a/lib/workers/branch/pnpm.js +++ b/lib/workers/branch/pnpm.js @@ -79,7 +79,7 @@ async function generateLockFile(tmpDir, env) { }, 'pnpm install error' ); - return { error: true, stderr: err.stderr }; + return { error: true, stderr: err.stderr, stdout: err.stdout }; } return { lockFile }; } diff --git a/lib/workers/branch/yarn.js b/lib/workers/branch/yarn.js index 03187adb67d4b5e2f34d87a668102bfe38d448cf..cdc640a3364d708afd92d752ac64d808b21cb8c5 100644 --- a/lib/workers/branch/yarn.js +++ b/lib/workers/branch/yarn.js @@ -81,6 +81,8 @@ async function generateLockFile(tmpDir, env) { logger.info( { err, + stdout, + stderr, }, 'yarn install error' );