From debc75f3f4c6b1dffa71d37b3f44b626ad0b9c09 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Tue, 29 Jan 2019 13:57:38 +0100 Subject: [PATCH] refactor: move lookupType out of qualifiers --- lib/datasource/github/index.js | 6 +++--- lib/manager/bazel/extract.js | 2 +- lib/util/purl.js | 4 ++++ test/datasource/github.spec.js | 2 +- test/manager/bazel/__snapshots__/extract.spec.js.snap | 4 ++-- test/util/__snapshots__/purl.spec.js.snap | 9 +++++++++ test/util/purl.spec.js | 3 +++ 7 files changed, 23 insertions(+), 7 deletions(-) diff --git a/lib/datasource/github/index.js b/lib/datasource/github/index.js index 0530ee0c1b..63141067bf 100644 --- a/lib/datasource/github/index.js +++ b/lib/datasource/github/index.js @@ -90,8 +90,8 @@ async function getDigest(config) { */ async function getPkgReleases(purl) { - const { lookupName: repo, qualifiers } = purl; - const lookupType = qualifiers.lookupType || 'tags'; + const { lookupName: repo } = purl; + const lookupType = purl.lookupType || 'tags'; let versions; const cachedResult = await renovateCache.get( cacheNamespace, @@ -102,7 +102,7 @@ async function getPkgReleases(purl) { return cachedResult; } try { - if (lookupType === 'release') { + if (lookupType === 'releases') { const url = `https://api.github.com/repos/${repo}/releases?per_page=100`; versions = (await ghGot(url, { paginate: true })).body.map( o => o.tag_name diff --git a/lib/manager/bazel/extract.js b/lib/manager/bazel/extract.js index 1ddd483427..de92493171 100644 --- a/lib/manager/bazel/extract.js +++ b/lib/manager/bazel/extract.js @@ -128,7 +128,7 @@ function extractPackageFile(content) { dep.depName = depName; dep.repo = parsedUrl.repo; dep.currentValue = parsedUrl.currentValue; - dep.purl = 'pkg:github/' + dep.repo + '?lookupType=release'; + dep.purl = 'pkg:github/' + dep.repo + '?lookupType=releases'; deps.push(dep); } else { logger.info( diff --git a/lib/util/purl.js b/lib/util/purl.js index aa1ff81d31..10c16376a1 100644 --- a/lib/util/purl.js +++ b/lib/util/purl.js @@ -41,6 +41,10 @@ function parse(input) { const [key, val] = qualifier.split('='); res.qualifiers[key] = val; }); + if (res.qualifiers.lookupType) { + res.lookupType = res.qualifiers.lookupType; + delete res.qualifiers.lookupType; + } } else { res.qualifiers = {}; } diff --git a/test/datasource/github.spec.js b/test/datasource/github.spec.js index c83d423064..e17111ba73 100644 --- a/test/datasource/github.spec.js +++ b/test/datasource/github.spec.js @@ -88,7 +88,7 @@ describe('datasource/github', () => { ]; ghGot.mockReturnValueOnce({ headers: {}, body }); const res = await datasource.getPkgReleases({ - purl: 'pkg:github/some/dep?lookupType=release', + purl: 'pkg:github/some/dep?lookupType=releases', }); expect(res).toMatchSnapshot(); expect(res.releases).toHaveLength(2); diff --git a/test/manager/bazel/__snapshots__/extract.spec.js.snap b/test/manager/bazel/__snapshots__/extract.spec.js.snap index ef1f04fb60..34f208315e 100644 --- a/test/manager/bazel/__snapshots__/extract.spec.js.snap +++ b/test/manager/bazel/__snapshots__/extract.spec.js.snap @@ -90,7 +90,7 @@ Array [ ", "depName": "io_bazel_rules_go", "depType": "http_archive", - "purl": "pkg:github/bazelbuild/rules_go?lookupType=release", + "purl": "pkg:github/bazelbuild/rules_go?lookupType=releases", "repo": "bazelbuild/rules_go", }, Object { @@ -107,7 +107,7 @@ Array [ ", "depName": "bazel_skylib", "depType": "http_archive", - "purl": "pkg:github/bazelbuild/bazel-skylib?lookupType=release", + "purl": "pkg:github/bazelbuild/bazel-skylib?lookupType=releases", "repo": "bazelbuild/bazel-skylib", }, ] diff --git a/test/util/__snapshots__/purl.spec.js.snap b/test/util/__snapshots__/purl.spec.js.snap index 81f9876f11..b6c0af7e7f 100644 --- a/test/util/__snapshots__/purl.spec.js.snap +++ b/test/util/__snapshots__/purl.spec.js.snap @@ -1,5 +1,14 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`util/purl parse() parses github with lookupType 1`] = ` +Object { + "datasource": "github", + "lookupName": "abc/def", + "lookupType": "releases", + "qualifiers": Object {}, +} +`; + exports[`util/purl parse() parses namespaced npm 1`] = ` Object { "datasource": "npm", diff --git a/test/util/purl.spec.js b/test/util/purl.spec.js index ec0761b235..c0b1d13e94 100644 --- a/test/util/purl.spec.js +++ b/test/util/purl.spec.js @@ -26,5 +26,8 @@ describe('util/purl', () => { it('parses npm with version and 2 qualifiers and subpath', () => { expect(parse('pkg:npm/foo@1.0.0?a=b&c=d#stop')).toMatchSnapshot(); }); + it('parses github with lookupType', () => { + expect(parse('pkg:github/abc/def?lookupType=releases')).toMatchSnapshot(); + }); }); }); -- GitLab