diff --git a/lib/config/__snapshots__/index.spec.ts.snap b/lib/config/__snapshots__/index.spec.ts.snap index 14a9feb09b1bf1647d80edd754a494aeb3c65614..06759fa5c078d48b07f0547542cb0bc88ebbaa7a 100644 --- a/lib/config/__snapshots__/index.spec.ts.snap +++ b/lib/config/__snapshots__/index.spec.ts.snap @@ -56,6 +56,7 @@ Object { "onboardingBranch": "renovate/configure", "onboardingPrTitle": "Configure Renovate", "persistRepoData": false, + "pinDigests": false, "platform": "github", "postUpdateOptions": Array [], "postUpgradeTasks": Object { diff --git a/lib/config/definitions.ts b/lib/config/definitions.ts index 6aa2dd7bfc81fa39633a6d7a1631a81ac44ec9c6..cd0eacac98ebd1a8baafa2d652213082a27e2984 100644 --- a/lib/config/definitions.ts +++ b/lib/config/definitions.ts @@ -870,7 +870,6 @@ const options: RenovateOptions[] = [ { name: 'pinDigests', description: 'Whether to add digests to Dockerfile source images', - stage: 'package', type: 'boolean', default: false, }, diff --git a/lib/workers/branch/__snapshots__/auto-replace.spec.ts.snap b/lib/workers/branch/__snapshots__/auto-replace.spec.ts.snap index aba6ee470ef45fec82ad7327b35305c66306ae7b..ee040deb4527e594152d91d8d795a1c0715d5815 100644 --- a/lib/workers/branch/__snapshots__/auto-replace.spec.ts.snap +++ b/lib/workers/branch/__snapshots__/auto-replace.spec.ts.snap @@ -1,5 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`workers/branch/auto-replace doAutoReplace handles a double attempt 1`] = `" <script src=\\"https://cdnjs.cloudflare.com/ajax/libs/reactstrap/7.1.0/reactstrap.min.js\\"> <script src=\\"https://cdnjs.cloudflare.com/ajax/libs/reactstrap/7.1.1/reactstrap.min.js\\"> "`; + exports[`workers/branch/auto-replace doAutoReplace handles already updated 1`] = `" <script src=\\"https://cdnjs.cloudflare.com/ajax/libs/reactstrap/7.1.1/reactstrap.min.js\\"> "`; exports[`workers/branch/auto-replace doAutoReplace updates version and integrity 1`] = `" <script src=\\"https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.js\\" integrity=\\"sha256-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\" crossorigin=\\"anonymous\\"> "`; diff --git a/lib/workers/branch/auto-replace.spec.ts b/lib/workers/branch/auto-replace.spec.ts index 09623bfa58a1fb0a56e716007b74e3a2c46e3e86..94743e9e5808c5ec7784c91c95192c7c393677b3 100644 --- a/lib/workers/branch/auto-replace.spec.ts +++ b/lib/workers/branch/auto-replace.spec.ts @@ -49,10 +49,24 @@ describe('workers/branch/auto-replace', () => { upgrade.lookupName = 'reactstrap/7.1.0/reactstrap.min.js'; upgrade.currentValue = '7.1.0'; upgrade.newValue = '7.1.1'; + upgrade.newDigest = 'some-digest'; upgrade.depIndex = 0; const res = await doAutoReplace(upgrade, src, parentBranch); expect(res).toMatchSnapshot(); }); + it('handles a double attempt', async () => { + const script = + '<script src="https://cdnjs.cloudflare.com/ajax/libs/reactstrap/7.1.0/reactstrap.min.js">'; + const src = ` ${script} ${script} `; + upgrade.baseDeps = extractPackageFile(src).deps; + upgrade.depName = 'reactstrap'; + upgrade.lookupName = 'reactstrap/7.1.0/reactstrap.min.js'; + upgrade.currentValue = '7.1.0'; + upgrade.newValue = '7.1.1'; + upgrade.depIndex = 1; + const res = await doAutoReplace(upgrade, src, parentBranch); + expect(res).toMatchSnapshot(); + }); it('handles already updated', async () => { const script = '<script src="https://cdnjs.cloudflare.com/ajax/libs/reactstrap/7.1.0/reactstrap.min.js">'; diff --git a/lib/workers/branch/auto-replace.ts b/lib/workers/branch/auto-replace.ts index d31c85414962560a5323defebbc6837968ac17f2..11a7cb4597606532c489ce27ff3d67622ff44f02 100644 --- a/lib/workers/branch/auto-replace.ts +++ b/lib/workers/branch/auto-replace.ts @@ -10,7 +10,15 @@ export async function confirmIfDepUpdated( upgrade, newContent: string ): Promise<boolean> { - const { manager, packageFile, newValue, newDigest, depIndex } = upgrade; + const { + manager, + packageFile, + newValue, + newDigest, + depIndex, + currentDigest, + pinDigests, + } = upgrade; const extractPackageFile = get(manager, 'extractPackageFile'); let newUpgrade; try { @@ -23,13 +31,22 @@ export async function confirmIfDepUpdated( } catch (err) /* istanbul ignore next */ { logger.debug('Failed to parse newContent'); } - if ( - newUpgrade && - newUpgrade.currentValue === newValue && - (!newDigest || newUpgrade.currentDigest === newDigest) - ) { + if (!newUpgrade) { + return false; + } + if (newUpgrade.currentValue !== newValue) { + return false; + } + if (!newDigest) { + return true; + } + if (newUpgrade.currentDigest === newDigest) { return true; } + if (!currentDigest && !pinDigests) { + return true; + } + // istanbul ignore next return false; }