diff --git a/lib/manager/npm/extract/index.js b/lib/manager/npm/extract/index.js index 9922890cc575b152af1347c5cf155cbdbd732170..639fdabc31a3bd26ebce2cca10cea395b35e0c17 100644 --- a/lib/manager/npm/extract/index.js +++ b/lib/manager/npm/extract/index.js @@ -153,12 +153,11 @@ async function extractDependencies(content, fileName, config) { return dep; } const [depNamePart, depRefPart] = hashSplit; - const depNamePartSplit = depNamePart.split(':'); - if (depNamePartSplit.length === 2 && depNamePartSplit[0] !== 'github') { - dep.skipReason = 'unknown-version'; - return dep; - } - const githubOwnerRepo = depNamePart.replace('github:', ''); + const githubOwnerRepo = depNamePart + .replace(/^github:/, '') + .replace(/^git\+/, '') + .replace(/^https:\/\/github\.com\//, '') + .replace(/\.git$/, ''); const githubRepoSplit = githubOwnerRepo.split('/'); if (githubRepoSplit.length !== 2) { dep.skipReason = 'unknown-version'; diff --git a/test/manager/npm/__snapshots__/update.spec.js.snap b/test/manager/npm/__snapshots__/update.spec.js.snap index f7cdd98658501acfdae73ff9d5ff3259b6e4adc1..62a8a6473e6a884eaab5dadd552cb561f955c62a 100644 --- a/test/manager/npm/__snapshots__/update.spec.js.snap +++ b/test/manager/npm/__snapshots__/update.spec.js.snap @@ -5,3 +5,5 @@ exports[`workers/branch/package-json .bumpPackageVersion() increments 1`] = `"{\ exports[`workers/branch/package-json .bumpPackageVersion() updates 1`] = `"{\\"name\\":\\"some-package\\",\\"version\\":\\"0.1.0\\"}"`; exports[`workers/branch/package-json .updateDependency(fileContent, depType, depName, newValue) replaces a github dependency value 1`] = `"{\\"dependencies\\":{\\"gulp\\":\\"gulpjs/gulp#v4.0.0\\"}}"`; + +exports[`workers/branch/package-json .updateDependency(fileContent, depType, depName, newValue) replaces a github fully specified version 1`] = `"{\\"dependencies\\":{\\"n\\":\\"git+https://github.com/owner/n#v1.1.0\\"}}"`; diff --git a/test/manager/npm/extract/__snapshots__/index.spec.js.snap b/test/manager/npm/extract/__snapshots__/index.spec.js.snap index 9d96c34eb2449076f350e969deb8677f679344ee..f08a8bf20f861bb75ebcf4339d07b48351f9fffe 100644 --- a/test/manager/npm/extract/__snapshots__/index.spec.js.snap +++ b/test/manager/npm/extract/__snapshots__/index.spec.js.snap @@ -194,6 +194,40 @@ Object { "skipReason": "unknown-version", "versionScheme": "semver", }, + Object { + "currentValue": "github:owner/k#49b5aca", + "depName": "k", + "depType": "dependencies", + "prettyDepType": "dependency", + "skipReason": "unversioned-reference", + "versionScheme": "semver", + }, + Object { + "currentValue": "github:owner/l.git#abcdef0", + "depName": "l", + "depType": "dependencies", + "prettyDepType": "dependency", + "skipReason": "unversioned-reference", + "versionScheme": "semver", + }, + Object { + "currentRawValue": "https://github.com/owner/m.git#v1.0.0", + "currentValue": "v1.0.0", + "depName": "m", + "depType": "dependencies", + "prettyDepType": "dependency", + "purl": "pkg:github/owner/m?ref=tags", + "versionScheme": "semver", + }, + Object { + "currentRawValue": "git+https://github.com/owner/n#v2.0.0", + "currentValue": "v2.0.0", + "depName": "n", + "depType": "dependencies", + "prettyDepType": "dependency", + "purl": "pkg:github/owner/n?ref=tags", + "versionScheme": "semver", + }, ], "lernaClient": undefined, "lernaDir": undefined, diff --git a/test/manager/npm/extract/index.spec.js b/test/manager/npm/extract/index.spec.js index 669959b1a5fac0fa0518e0351791ea0fc7b0c017..dc667d165c0a046450efabab74de5b33e890e764 100644 --- a/test/manager/npm/extract/index.spec.js +++ b/test/manager/npm/extract/index.spec.js @@ -183,6 +183,10 @@ describe('manager/npm/extract', () => { h: 'github:-hello/world#v1.0.0', i: '@foo/bar#v2.0.0', j: 'github:frank#v0.0.1', + k: 'github:owner/k#49b5aca', + l: 'github:owner/l.git#abcdef0', + m: 'https://github.com/owner/m.git#v1.0.0', + n: 'git+https://github.com/owner/n#v2.0.0', }, }; const pJsonStr = JSON.stringify(pJson); diff --git a/test/manager/npm/update.spec.js b/test/manager/npm/update.spec.js index da950ef8449e8ace02de28781d65ddd50160260e..93fc10fe2832842d3dca8790c8ef655822cf4f43 100644 --- a/test/manager/npm/update.spec.js +++ b/test/manager/npm/update.spec.js @@ -40,6 +40,23 @@ describe('workers/branch/package-json', () => { const res = npmUpdater.updateDependency(input, upgrade); expect(res).toMatchSnapshot(); }); + it('replaces a github fully specified version', () => { + const upgrade = { + depType: 'dependencies', + depName: 'n', + currentValue: 'v1.0.0', + currentRawValue: 'git+https://github.com/owner/n#v1.0.0', + newValue: 'v1.1.0', + }; + const input = JSON.stringify({ + dependencies: { + n: 'git+https://github.com/owner/n#v1.0.0', + }, + }); + const res = npmUpdater.updateDependency(input, upgrade); + expect(res).toMatchSnapshot(); + expect(res.includes('v1.1.0')).toBe(true); + }); it('updates resolutions too', () => { const upgrade = { depType: 'dependencies',