From 05260a5b16fcc4fc102a49342682872711488f15 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Tue, 5 Jun 2018 08:15:11 +0200 Subject: [PATCH] refactor: remove semver dependency from github datasource Instead, perform isVersion filter in lookup --- lib/datasource/github.js | 5 +---- lib/workers/repository/process/lookup/index.js | 6 +++++- test/datasource/__snapshots__/github.spec.js.snap | 4 ++++ test/datasource/github.spec.js | 8 ++++---- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/lib/datasource/github.js b/lib/datasource/github.js index 5639805e79..3b39c6513e 100644 --- a/lib/datasource/github.js +++ b/lib/datasource/github.js @@ -1,5 +1,4 @@ const ghGot = require('../platform/github/gh-got-wrapper'); -const versioning = require('../versioning'); module.exports = { getDependency, @@ -48,10 +47,8 @@ async function getDependency(repo, options = {}) { return null; } // Filter by semver if no versionScheme provided - const { isVersion } = versioning(options.versionScheme || 'semver'); - versions = versions.filter(version => isVersion(version)); if (options.clean === 'true') { - versions = versions.map(version => version.replace(/^v/, '')); + versions = versions.map(version => version.replace(/^v(\d)/, '$1')); } const dependency = { repositoryUrl: 'https://github.com/' + repo, diff --git a/lib/workers/repository/process/lookup/index.js b/lib/workers/repository/process/lookup/index.js index a6cacd96d8..8ca9c398ab 100644 --- a/lib/workers/repository/process/lookup/index.js +++ b/lib/workers/repository/process/lookup/index.js @@ -19,6 +19,7 @@ async function lookupUpdates(config) { getMinor, isGreaterThan, isRange, + isVersion, matches, getNewValue, } = versioning(config.versionScheme); @@ -54,7 +55,10 @@ async function lookupUpdates(config) { // TODO: return an object return [result]; } - const allVersions = Object.keys(dependency.versions); + // Filter out any results from datasource that don't comply with our versioning scheme + const allVersions = Object.keys(dependency.versions).filter(v => + isVersion(v) + ); // istanbul ignore if if (allVersions.length === 0) { const message = `No versions returned from registry for this package`; diff --git a/test/datasource/__snapshots__/github.spec.js.snap b/test/datasource/__snapshots__/github.spec.js.snap index ecd57d7b77..a314db87c2 100644 --- a/test/datasource/__snapshots__/github.spec.js.snap +++ b/test/datasource/__snapshots__/github.spec.js.snap @@ -6,6 +6,8 @@ Object { "versions": Object { "1.0.0": Object {}, "1.1.0": Object {}, + "a": Object {}, + "v": Object {}, }, } `; @@ -15,6 +17,8 @@ Object { "repositoryUrl": "https://github.com/some/dep", "versions": Object { "1.0.0": Object {}, + "a": Object {}, + "v": Object {}, "v1.1.0": Object {}, }, } diff --git a/test/datasource/github.spec.js b/test/datasource/github.spec.js index 45e57d032f..09b248082b 100644 --- a/test/datasource/github.spec.js +++ b/test/datasource/github.spec.js @@ -9,27 +9,27 @@ describe('datasource/github', () => { it('returns cleaned tags', async () => { const body = [ { ref: 'refs/tags/a' }, - { ref: 'refs/tags/b' }, + { ref: 'refs/tags/v' }, { ref: 'refs/tags/1.0.0' }, { ref: 'refs/tags/v1.1.0' }, ]; ghGot.mockReturnValueOnce({ headers: {}, body }); const res = await github.getDependency('some/dep', { clean: 'true' }); expect(res).toMatchSnapshot(); - expect(Object.keys(res.versions)).toHaveLength(2); + expect(Object.keys(res.versions)).toHaveLength(4); expect(res.versions['1.1.0']).toBeDefined(); }); it('returns releases', async () => { const body = [ { tag_name: 'a' }, - { tag_name: 'b' }, + { tag_name: 'v' }, { tag_name: '1.0.0' }, { tag_name: 'v1.1.0' }, ]; ghGot.mockReturnValueOnce({ headers: {}, body }); const res = await github.getDependency('some/dep', { ref: 'release' }); expect(res).toMatchSnapshot(); - expect(Object.keys(res.versions)).toHaveLength(2); + expect(Object.keys(res.versions)).toHaveLength(4); expect(res.versions['v1.1.0']).toBeDefined(); }); it('returns null for invalid ref', async () => { -- GitLab