diff --git a/lib/manager/docker/update.js b/lib/manager/docker/update.js index b245ce8d4b4e5f0f45d764a8774200877bbdf1cf..0a2c868d7f8a76b0f1be3364a0ce1118008add31 100644 --- a/lib/manager/docker/update.js +++ b/lib/manager/docker/update.js @@ -10,11 +10,9 @@ function setNewValue(currentFileContent, upgrade) { upgrade.fromSuffix }\\n` ); - let newLine = `$1${upgrade.fromPrefix}$2${upgrade.newFrom}$3`; - if (upgrade.fromSuffix.length) { - newLine += `${upgrade.fromSuffix}`; - } - newLine += '\n'; + const newLine = `$1${upgrade.fromPrefix}$2${upgrade.newFrom}$3${ + upgrade.fromSuffix + }\n`; const newFileContent = currentFileContent.replace(oldLine, newLine); return newFileContent; } catch (err) { diff --git a/test/manager/docker/__snapshots__/update.spec.js.snap b/test/manager/docker/__snapshots__/update.spec.js.snap index e060864e05062022ebe1ca3ad23c2ac8ef44285a..8c5bc5c570f4479876be94426e0d4c67710d84c9 100644 --- a/test/manager/docker/__snapshots__/update.spec.js.snap +++ b/test/manager/docker/__snapshots__/update.spec.js.snap @@ -1,5 +1,12 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`workers/branch/dockerfile setNewValue handles similar FROM 1`] = ` +"FROM debian:wheezy@sha256:abcdefghijklmnop as stage-1 +RUN something +FROM debian:wheezy@sha256:abcdefghijklmnop +RUN something else" +`; + exports[`workers/branch/dockerfile setNewValue handles strange whitespace 1`] = ` "# comment FROM node:8 FROM node:8@sha256:abcdefghijklmnop as base diff --git a/test/manager/docker/update.spec.js b/test/manager/docker/update.spec.js index 59fd58ef026cb4bed7d7293752df76163711620d..ad3f847b219a8c9f102b4c82b04b902acef450eb 100644 --- a/test/manager/docker/update.spec.js +++ b/test/manager/docker/update.spec.js @@ -53,5 +53,27 @@ describe('workers/branch/dockerfile', () => { const res = dockerfile.setNewValue(currentFileContent, upgrade); expect(res).toBe(null); }); + it('handles similar FROM', () => { + const currentFileContent = + 'FROM debian:wheezy as stage-1\nRUN something\nFROM debian:wheezy\nRUN something else'; + const upgrade1 = { + depName: 'debian', + currentVersion: 'debian:wheezy', + fromPrefix: 'FROM', + fromSuffix: 'as stage-1', + newFrom: 'debian:wheezy@sha256:abcdefghijklmnop', + }; + const upgrade2 = { + depName: 'debian', + currentVersion: 'debian:wheezy', + fromPrefix: 'FROM', + fromSuffix: '', + newFrom: 'debian:wheezy@sha256:abcdefghijklmnop', + }; + let res = dockerfile.setNewValue(currentFileContent, upgrade1); + res = dockerfile.setNewValue(res, upgrade2); + expect(res).toMatchSnapshot(); + expect(res.includes('as stage-1')).toBe(true); + }); }); });