diff --git a/lib/datasource/docker/index.spec.ts b/lib/datasource/docker/index.spec.ts index ebf61ddf0dc01dd1aef093810b256ad2a069ec51..50cc264f7dcbd7bc72af631ff8c93e6251d61f69 100644 --- a/lib/datasource/docker/index.spec.ts +++ b/lib/datasource/docker/index.spec.ts @@ -496,8 +496,9 @@ describe('api/docker', () => { .reply(200, null) .get('/my/node/tags/list?n=10000') .replyWithError('error'); - const res = await docker.getReleases({ - lookupName: 'my/node', + const res = await getPkgReleases({ + datasource: docker.id, + depName: 'my/node', }); expect(res).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); diff --git a/lib/datasource/git-refs/index.spec.ts b/lib/datasource/git-refs/index.spec.ts index 73736961dc3744c83fbaa4501476c9fe0feb2dd7..be43285cccbb85c8700c3b52358cf7f3794b4dd4 100644 --- a/lib/datasource/git-refs/index.spec.ts +++ b/lib/datasource/git-refs/index.spec.ts @@ -1,11 +1,12 @@ import fs from 'fs-extra'; import _simpleGit from 'simple-git/promise'; -import { getDigest, getReleases } from '.'; +import { getPkgReleases } from '..'; +import { id as datasource, getDigest } from '.'; jest.mock('simple-git/promise'); const simpleGit: any = _simpleGit; -const lookupName = 'https://github.com/example/example.git'; +const depName = 'https://github.com/example/example.git'; const lsRemote1 = fs.readFileSync( 'lib/datasource/git-refs/__fixtures__/ls-remote-1.txt', @@ -20,7 +21,10 @@ describe('datasource/git-refs', () => { return Promise.resolve(null); }, }); - const versions = await getReleases({ lookupName }); + const versions = await getPkgReleases({ + datasource, + depName, + }); expect(versions).toBeNull(); }); it('returns nil if remote call throws exception', async () => { @@ -29,7 +33,10 @@ describe('datasource/git-refs', () => { throw new Error(); }, }); - const versions = await getReleases({ lookupName }); + const versions = await getPkgReleases({ + datasource, + depName, + }); expect(versions).toBeNull(); }); it('returns versions filtered from tags', async () => { @@ -39,8 +46,9 @@ describe('datasource/git-refs', () => { }, }); - const versions = await getReleases({ - lookupName, + const versions = await getPkgReleases({ + datasource, + depName, }); expect(versions).toMatchSnapshot(); const result = versions.releases.map((x) => x.version).sort(); diff --git a/lib/datasource/git-submodules/index.spec.ts b/lib/datasource/git-submodules/index.spec.ts index a959c31b2c53437e113cff405618e5944b07d235..5d59836228dfac9ef9b699d62d190196e6cd2579 100644 --- a/lib/datasource/git-submodules/index.spec.ts +++ b/lib/datasource/git-submodules/index.spec.ts @@ -1,11 +1,13 @@ import _simpleGit from 'simple-git/promise'; -import { getDigest, getReleases } from '.'; +import { getPkgReleases } from '..'; +import { id as versioning } from '../../versioning/git'; +import { id as datasource, getDigest } from '.'; jest.mock('simple-git/promise'); const simpleGit: any = _simpleGit; -const lookupName = 'https://github.com/example/example.git'; -const registryUrls = [lookupName, 'master']; +const depName = 'https://github.com/example/example.git'; +const registryUrls = [depName, 'master']; describe('datasource/git-submoduless', () => { describe('getReleases', () => { @@ -15,7 +17,12 @@ describe('datasource/git-submoduless', () => { return Promise.resolve(null); }, }); - const versions = await getReleases({ lookupName, registryUrls }); + const versions = await getPkgReleases({ + datasource, + versioning, + depName, + registryUrls, + }); expect(versions).toBeNull(); }); it('returns null if remote call throws exception', async () => { @@ -24,7 +31,12 @@ describe('datasource/git-submoduless', () => { throw new Error(); }, }); - const versions = await getReleases({ lookupName, registryUrls }); + const versions = await getPkgReleases({ + datasource, + versioning, + depName, + registryUrls, + }); expect(versions).toBeNull(); }); it('returns versions filtered from tags', async () => { @@ -34,8 +46,10 @@ describe('datasource/git-submoduless', () => { }, }); - const versions = await getReleases({ - lookupName, + const versions = await getPkgReleases({ + datasource, + versioning, + depName, registryUrls, }); const result = versions.releases.map((x) => x.version).sort(); diff --git a/lib/datasource/git-tags/index.spec.ts b/lib/datasource/git-tags/index.spec.ts index 172d19f82f870a9dd263198bd66d0f81d45b39bc..7cb76782b65dd2df9986255c7aa604307c013e62 100644 --- a/lib/datasource/git-tags/index.spec.ts +++ b/lib/datasource/git-tags/index.spec.ts @@ -1,11 +1,12 @@ import fs from 'fs-extra'; import _simpleGit from 'simple-git/promise'; -import { getDigest, getReleases } from '.'; +import { getPkgReleases } from '..'; +import { id as datasource, getDigest } from '.'; jest.mock('simple-git/promise'); const simpleGit: any = _simpleGit; -const lookupName = 'https://github.com/example/example.git'; +const depName = 'https://github.com/example/example.git'; const lsRemote1 = fs.readFileSync( 'lib/datasource/git-refs/__fixtures__/ls-remote-1.txt', @@ -20,7 +21,7 @@ describe('datasource/git-tags', () => { return Promise.resolve(null); }, }); - const versions = await getReleases({ lookupName }); + const versions = await getPkgReleases({ datasource, depName }); expect(versions).toBeNull(); }); it('returns nil if remote call throws exception', async () => { @@ -29,7 +30,7 @@ describe('datasource/git-tags', () => { throw new Error(); }, }); - const versions = await getReleases({ lookupName }); + const versions = await getPkgReleases({ datasource, depName }); expect(versions).toBeNull(); }); it('returns versions filtered from tags', async () => { @@ -39,8 +40,9 @@ describe('datasource/git-tags', () => { }, }); - const versions = await getReleases({ - lookupName, + const versions = await getPkgReleases({ + datasource, + depName, }); expect(versions).toMatchSnapshot(); }); @@ -53,7 +55,7 @@ describe('datasource/git-tags', () => { }, }); const digest = await getDigest( - { lookupName: 'a tag to look up' }, + { datasource, depName: 'a tag to look up' }, 'notfound' ); expect(digest).toBeNull(); @@ -65,7 +67,7 @@ describe('datasource/git-tags', () => { }, }); const digest = await getDigest( - { lookupName: 'a tag to look up' }, + { datasource, depName: 'a tag to look up' }, 'v1.0.2' ); expect(digest).toMatchSnapshot(); @@ -77,7 +79,7 @@ describe('datasource/git-tags', () => { }, }); const digest = await getDigest( - { lookupName: 'another tag to look up' }, + { datasource, depName: 'another tag to look up' }, undefined ); expect(digest).toMatchSnapshot(); diff --git a/lib/datasource/github-releases/__snapshots__/index.spec.ts.snap b/lib/datasource/github-releases/__snapshots__/index.spec.ts.snap index 1ddafae4351bbdcbbed436c7c3479a5c8a3b8980..ed04de002e9f2f83bc4551439aacb1c1eb08b87f 100644 --- a/lib/datasource/github-releases/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/github-releases/__snapshots__/index.spec.ts.snap @@ -3,16 +3,6 @@ exports[`datasource/github-releases getReleases returns releases 1`] = ` Object { "releases": Array [ - Object { - "gitRef": "a", - "releaseTimestamp": "2020-03-09T13:00:00Z", - "version": "a", - }, - Object { - "gitRef": "v", - "releaseTimestamp": "2020-03-09T12:00:00Z", - "version": "v", - }, Object { "gitRef": "1.0.0", "releaseTimestamp": "2020-03-09T11:00:00Z", diff --git a/lib/datasource/github-releases/index.spec.ts b/lib/datasource/github-releases/index.spec.ts index 23555f8ae05fb567ec84fb7e5b61d7e5f2b9caaa..dd5b23070670c79e8b9c69420c329c35b1e4ef89 100644 --- a/lib/datasource/github-releases/index.spec.ts +++ b/lib/datasource/github-releases/index.spec.ts @@ -1,6 +1,7 @@ +import { getPkgReleases } from '..'; import * as httpMock from '../../../test/httpMock'; import * as _hostRules from '../../util/host-rules'; -import * as github from '.'; +import { id as datasource } from '.'; jest.mock('../../util/host-rules'); const hostRules: any = _hostRules; @@ -32,11 +33,12 @@ describe('datasource/github-releases', () => { { tag_name: 'v1.1.0', published_at: '2020-03-09T10:00:00Z' }, ]); - const res = await github.getReleases({ - lookupName: 'some/dep', + const res = await getPkgReleases({ + datasource, + depName: 'some/dep', }); expect(res).toMatchSnapshot(); - expect(res.releases).toHaveLength(4); + expect(res.releases).toHaveLength(2); expect( res.releases.find((release) => release.version === 'v1.1.0') ).toBeDefined(); diff --git a/lib/datasource/github-tags/index.spec.ts b/lib/datasource/github-tags/index.spec.ts index 2fee2080d43e55e3f6d16e1cac7ed9772c85bb5e..672126c8bcc8936c8b8544e9fdf6334109520830 100644 --- a/lib/datasource/github-tags/index.spec.ts +++ b/lib/datasource/github-tags/index.spec.ts @@ -1,3 +1,4 @@ +import { getPkgReleases } from '..'; import * as httpMock from '../../../test/httpMock'; import * as _hostRules from '../../util/host-rules'; import * as github from '.'; @@ -88,15 +89,15 @@ describe('datasource/github-tags', () => { }); }); describe('getReleases', () => { - const lookupName = 'some/dep2'; + const depName = 'some/dep2'; it('returns tags', async () => { const body = [{ name: 'v1.0.0' }, { name: 'v1.1.0' }]; httpMock .scope(githubApiHost) - .get(`/repos/${lookupName}/tags?per_page=100`) + .get(`/repos/${depName}/tags?per_page=100`) .reply(200, body); - const res = await github.getReleases({ lookupName }); + const res = await getPkgReleases({ datasource: github.id, depName }); expect(res).toMatchSnapshot(); expect(res.releases).toHaveLength(2); expect(httpMock.getTrace()).toMatchSnapshot(); diff --git a/lib/datasource/gitlab-tags/__snapshots__/index.spec.ts.snap b/lib/datasource/gitlab-tags/__snapshots__/index.spec.ts.snap index 6a8e9aa049b9f4bb140bf6d33a46770368526274..c7a78215e4fc9c824136dfa5b263c6b2369e99cd 100644 --- a/lib/datasource/gitlab-tags/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/gitlab-tags/__snapshots__/index.spec.ts.snap @@ -10,12 +10,10 @@ Object { }, Object { "gitRef": "v1.1.0", - "releaseTimestamp": undefined, "version": "v1.1.0", }, Object { "gitRef": "v1.1.1", - "releaseTimestamp": undefined, "version": "v1.1.1", }, ], @@ -43,12 +41,10 @@ Object { "releases": Array [ Object { "gitRef": "v1.0.0", - "releaseTimestamp": undefined, "version": "v1.0.0", }, Object { "gitRef": "v1.1.0", - "releaseTimestamp": undefined, "version": "v1.1.0", }, ], diff --git a/lib/datasource/gitlab-tags/index.spec.ts b/lib/datasource/gitlab-tags/index.spec.ts index 17f10660dfb77e572323fa39c2bef02c44b2eb1b..5b049589a1954d8f2bab9f87bc3a29ba9bbc57f6 100644 --- a/lib/datasource/gitlab-tags/index.spec.ts +++ b/lib/datasource/gitlab-tags/index.spec.ts @@ -1,5 +1,6 @@ +import { getPkgReleases } from '..'; import * as httpMock from '../../../test/httpMock'; -import * as gitlab from '.'; +import { id as datasource } from '.'; describe('datasource/gitlab-tags', () => { beforeEach(() => { @@ -27,9 +28,10 @@ describe('datasource/gitlab-tags', () => { .scope('https://gitlab.company.com') .get('/api/v4/api/v4/projects/some%2Fdep2/repository/tags?per_page=100') .reply(200, body); - const res = await gitlab.getReleases({ + const res = await getPkgReleases({ + datasource, registryUrls: ['https://gitlab.company.com/api/v4/'], - lookupName: 'some/dep2', + depName: 'some/dep2', }); expect(res).toMatchSnapshot(); expect(res.releases).toHaveLength(3); @@ -42,8 +44,9 @@ describe('datasource/gitlab-tags', () => { .scope('https://gitlab.com') .get('/api/v4/projects/some%2Fdep2/repository/tags?per_page=100') .reply(200, body); - const res = await gitlab.getReleases({ - lookupName: 'some/dep2', + const res = await getPkgReleases({ + datasource, + depName: 'some/dep2', }); expect(res).toMatchSnapshot(); expect(res.releases).toHaveLength(2); diff --git a/lib/datasource/go/index.spec.ts b/lib/datasource/go/index.spec.ts index 0dc24554ef7e4ca028fde78f1e2a7d658d7bb535..7fb37a0b74c345213e26d9e6f1a3c0fe35c4dbc3 100644 --- a/lib/datasource/go/index.spec.ts +++ b/lib/datasource/go/index.spec.ts @@ -1,8 +1,8 @@ -import { ReleaseResult } from '..'; +import { ReleaseResult, getPkgReleases } from '..'; import * as httpMock from '../../../test/httpMock'; import { mocked, partial } from '../../../test/util'; import * as _github from '../github-tags'; -import * as go from '.'; +import { id as datasource, getDigest } from '.'; jest.mock('../github-tags'); @@ -37,7 +37,7 @@ describe('datasource/go', () => { .get('/y/text?go-get=1') .reply(200, res1); github.getDigest.mockResolvedValueOnce('abcdefabcdefabcdefabcdef'); - const res = await go.getDigest({ lookupName: 'golang.org/y/text' }, null); + const res = await getDigest({ lookupName: 'golang.org/y/text' }, null); expect(res).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); }); @@ -47,7 +47,7 @@ describe('datasource/go', () => { .get('/x/text?go-get=1') .reply(200, res1); github.getDigest.mockResolvedValueOnce('abcdefabcdefabcdefabcdef'); - const res = await go.getDigest({ lookupName: 'golang.org/x/text' }, null); + const res = await getDigest({ lookupName: 'golang.org/x/text' }, null); expect(res).toBe('abcdefabcdefabcdefabcdef'); expect(httpMock.getTrace()).toMatchSnapshot(); }); @@ -59,8 +59,9 @@ describe('datasource/go', () => { .get('/foo/something?go-get=1') .reply(200, res1); expect( - await go.getReleases({ - lookupName: 'golang.org/foo/something', + await getPkgReleases({ + datasource, + depName: 'golang.org/foo/something', }) ).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -71,8 +72,9 @@ describe('datasource/go', () => { .get('/foo/something?go-get=1') .reply(404); expect( - await go.getReleases({ - lookupName: 'golang.org/foo/something', + await getPkgReleases({ + datasource, + depName: 'golang.org/foo/something', }) ).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -83,8 +85,9 @@ describe('datasource/go', () => { .get('/foo/something?go-get=1') .replyWithError('error'); expect( - await go.getReleases({ - lookupName: 'golang.org/foo/something', + await getPkgReleases({ + datasource, + depName: 'golang.org/foo/something', }) ).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -97,8 +100,9 @@ describe('datasource/go', () => { github.getReleases.mockResolvedValueOnce({ releases: [{ version: 'v1.0.0' }, { version: 'v2.0.0' }], }); - const res = await go.getReleases({ - lookupName: 'golang.org/x/text', + const res = await getPkgReleases({ + datasource, + depName: 'golang.org/x/text', }); expect(res).toMatchSnapshot(); expect(res).not.toBeNull(); @@ -110,8 +114,9 @@ describe('datasource/go', () => { .scope('https://golang.org/') .get('/x/sys?go-get=1') .reply(200, res1); - const res = await go.getReleases({ - lookupName: 'golang.org/x/sys', + const res = await getPkgReleases({ + datasource, + depName: 'golang.org/x/sys', }); expect(res).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -127,8 +132,9 @@ describe('datasource/go', () => { 'https://google.com/golang/text/' ) ); - const res = await go.getReleases({ - lookupName: 'golang.org/x/text', + const res = await getPkgReleases({ + datasource, + depName: 'golang.org/x/text', }); expect(res).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -136,32 +142,32 @@ describe('datasource/go', () => { it('works for known servers', async () => { github.getReleases.mockClear(); const packages = [ - { lookupName: 'github.com/x/text' }, - { lookupName: 'gopkg.in/x/text' }, - { lookupName: 'gopkg.in/x' }, + { datasource, depName: 'github.com/x/text' }, + { datasource, depName: 'gopkg.in/x/text' }, + { datasource, depName: 'gopkg.in/x' }, ]; const githubRes = { releases: [1, 2] } as any; for (const pkg of packages) { github.getReleases.mockResolvedValueOnce( partial<ReleaseResult>(githubRes) ); - expect(await go.getReleases(pkg)).toEqual(githubRes); + expect(await getPkgReleases(pkg)).toEqual(githubRes); } expect(github.getReleases.mock.calls).toMatchSnapshot(); }); it('works for nested modules on github', async () => { github.getReleases.mockClear(); const packages = [ - { lookupName: 'github.com/x/text/a' }, - { lookupName: 'github.com/x/text/b' }, + { datasource, depName: 'github.com/x/text/a' }, + { datasource, depName: 'github.com/x/text/b' }, ]; for (const pkg of packages) { github.getReleases.mockResolvedValueOnce({ releases: [{ version: 'a/v1.0.0' }, { version: 'b/v2.0.0' }], }); - const prefix = pkg.lookupName.split('/')[3]; - const result = await go.getReleases(pkg); + const prefix = pkg.depName.split('/')[3]; + const result = await getPkgReleases(pkg); expect(result.releases).toHaveLength(1); expect(result.releases[0].version.startsWith(prefix)).toBeFalse(); } @@ -170,8 +176,8 @@ describe('datasource/go', () => { it('falls back to old behaviour', async () => { github.getReleases.mockClear(); const packages = [ - { lookupName: 'github.com/x/text/a' }, - { lookupName: 'github.com/x/text/b' }, + { datasource, depName: 'github.com/x/text/a' }, + { datasource, depName: 'github.com/x/text/b' }, ]; const releases = { @@ -179,7 +185,7 @@ describe('datasource/go', () => { }; for (const pkg of packages) { github.getReleases.mockResolvedValueOnce(releases); - expect(await go.getReleases(pkg)).toBe(releases); + expect(await getPkgReleases(pkg)).toStrictEqual(releases); } }); }); diff --git a/lib/datasource/gradle-version/__snapshots__/index.spec.ts.snap b/lib/datasource/gradle-version/__snapshots__/index.spec.ts.snap index 2b98af0ca7e1c44f6100106a791987b219f0b561..f2dc398b8076f7ce4f017036597e4aaeed79a702 100644 --- a/lib/datasource/gradle-version/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/gradle-version/__snapshots__/index.spec.ts.snap @@ -5,352 +5,352 @@ Object { "homepage": "https://gradle.org", "releases": Array [ Object { - "releaseTimestamp": null, - "version": "4.10.3", - }, - Object { - "releaseTimestamp": null, - "version": "5.0", + "releaseTimestamp": "2009-07-20T08:50:13+0200", + "version": "0.7", }, Object { - "releaseTimestamp": "2018-09-19T18:10:15+0000", - "version": "4.10.2", + "releaseTimestamp": "2009-07-20T08:50:13+0200", + "version": "0.7", }, Object { - "releaseTimestamp": "2018-09-12T11:33:27+0000", - "version": "4.10.1", + "releaseTimestamp": "2009-09-28T14:01:59+0200", + "version": "0.8", }, Object { - "releaseTimestamp": "2018-08-27T18:35:06+0000", - "version": "4.10", + "releaseTimestamp": "2009-09-28T14:01:59+0200", + "version": "0.8", }, Object { - "releaseTimestamp": "2018-07-16T08:14:03+0000", - "version": "4.9", + "releaseTimestamp": "2010-12-19T12:50:06+1100", + "version": "0.9", }, Object { - "releaseTimestamp": "2018-06-21T07:53:06+0000", - "version": "4.8.1", + "releaseTimestamp": "2010-12-19T12:50:06+1100", + "version": "0.9", }, Object { - "releaseTimestamp": "2018-06-04T10:39:58+0000", - "version": "4.8", + "releaseTimestamp": "2011-01-02T11:40:57+1100", + "version": "0.9.1", }, Object { - "releaseTimestamp": "2018-04-18T09:09:12+0000", - "version": "4.7", + "releaseTimestamp": "2011-01-02T11:40:57+1100", + "version": "0.9.1", }, Object { - "releaseTimestamp": "2018-02-28T13:36:36+0000", - "version": "4.6", + "releaseTimestamp": "2011-01-23T13:34:21+1100", + "version": "0.9.2", }, Object { - "releaseTimestamp": "2018-02-05T13:22:49+0000", - "version": "4.5.1", + "releaseTimestamp": "2011-01-23T13:34:21+1100", + "version": "0.9.2", }, Object { - "releaseTimestamp": "2018-01-24T17:04:52+0000", - "version": "4.5", + "releaseTimestamp": "2012-06-12T02:56:21+0200", + "version": "1.0", }, Object { - "releaseTimestamp": "2017-12-20T15:45:23+0000", - "version": "4.4.1", + "releaseTimestamp": "2012-06-12T02:56:21+0200", + "version": "1.0", }, Object { - "releaseTimestamp": "2017-12-06T09:05:06+0000", - "version": "4.4", + "releaseTimestamp": "2012-07-31T13:24:32+0000", + "version": "1.1", }, Object { - "releaseTimestamp": "2017-11-08T08:59:45+0000", - "version": "4.3.1", + "releaseTimestamp": "2012-07-31T13:24:32+0000", + "version": "1.1", }, Object { - "releaseTimestamp": "2017-10-30T15:43:29+0000", - "version": "4.3", + "releaseTimestamp": "2012-09-12T10:46:02+0000", + "version": "1.2", }, Object { - "releaseTimestamp": "2017-10-02T15:36:21+0000", - "version": "4.2.1", + "releaseTimestamp": "2012-09-12T10:46:02+0000", + "version": "1.2", }, Object { - "releaseTimestamp": "2017-09-20T14:48:23+0000", - "version": "4.2", + "releaseTimestamp": "2012-11-20T11:37:38+0000", + "version": "1.3", }, Object { - "releaseTimestamp": "2017-08-07T14:38:48+0000", - "version": "4.1", + "releaseTimestamp": "2012-11-20T11:37:38+0000", + "version": "1.3", }, Object { - "releaseTimestamp": "2017-07-26T16:19:18+0000", - "version": "4.0.2", + "releaseTimestamp": "2013-01-28T03:42:46+0000", + "version": "1.4", }, Object { - "releaseTimestamp": "2017-07-07T14:02:41+0000", - "version": "4.0.1", + "releaseTimestamp": "2013-01-28T03:42:46+0000", + "version": "1.4", }, Object { - "releaseTimestamp": "2017-06-16T14:36:27+0000", - "version": "3.5.1", + "releaseTimestamp": "2013-03-27T14:09:35+0000", + "version": "1.5", }, Object { - "releaseTimestamp": "2017-06-14T15:11:08+0000", - "version": "4.0", + "releaseTimestamp": "2013-03-27T14:09:35+0000", + "version": "1.5", }, Object { - "releaseTimestamp": "2017-04-10T13:37:25+0000", - "version": "3.5", + "releaseTimestamp": "2013-05-07T09:12:14+0000", + "version": "1.6", }, Object { - "releaseTimestamp": "2017-03-03T19:45:41+0000", - "version": "3.4.1", + "releaseTimestamp": "2013-05-07T09:12:14+0000", + "version": "1.6", }, Object { - "releaseTimestamp": "2017-02-20T14:49:26+0000", - "version": "3.4", + "releaseTimestamp": "2013-08-06T11:19:56+0000", + "version": "1.7", }, Object { - "releaseTimestamp": "2017-01-03T15:31:04+0000", - "version": "3.3", + "releaseTimestamp": "2013-08-06T11:19:56+0000", + "version": "1.7", }, Object { - "releaseTimestamp": "2016-11-22T15:19:54+0000", - "version": "3.2.1", + "releaseTimestamp": "2013-09-24T07:32:33+0000", + "version": "1.8", }, Object { - "releaseTimestamp": "2016-11-14T12:32:59+0000", - "version": "3.2", + "releaseTimestamp": "2013-09-24T07:32:33+0000", + "version": "1.8", }, Object { - "releaseTimestamp": "2016-09-19T10:53:53+0000", - "version": "3.1", + "releaseTimestamp": "2013-11-19T08:20:02+0000", + "version": "1.9", }, Object { - "releaseTimestamp": "2016-08-15T13:15:01+0000", - "version": "3.0", + "releaseTimestamp": "2013-11-19T08:20:02+0000", + "version": "1.9", }, Object { - "releaseTimestamp": "2016-07-18T06:38:37+0000", - "version": "2.14.1", + "releaseTimestamp": "2013-12-17T09:28:15+0000", + "version": "1.10", }, Object { - "releaseTimestamp": "2016-06-14T07:16:37+0000", - "version": "2.14", + "releaseTimestamp": "2013-12-17T09:28:15+0000", + "version": "1.10", }, Object { - "releaseTimestamp": "2016-04-25T04:10:10+0000", - "version": "2.13", + "releaseTimestamp": "2014-02-11T11:34:39+0000", + "version": "1.11", }, Object { - "releaseTimestamp": "2016-03-14T08:32:03+0000", - "version": "2.12", + "releaseTimestamp": "2014-02-11T11:34:39+0000", + "version": "1.11", }, Object { - "releaseTimestamp": "2016-02-08T07:59:16+0000", - "version": "2.11", + "releaseTimestamp": "2014-04-29T09:24:31+0000", + "version": "1.12", }, Object { - "releaseTimestamp": "2015-12-21T21:15:04+0000", - "version": "2.10", + "releaseTimestamp": "2014-04-29T09:24:31+0000", + "version": "1.12", }, Object { - "releaseTimestamp": "2015-11-17T07:02:17+0000", - "version": "2.9", + "releaseTimestamp": "2014-07-01T07:45:34+0000", + "version": "2.0", }, Object { - "releaseTimestamp": "2015-10-20T03:46:36+0000", - "version": "2.8", + "releaseTimestamp": "2014-07-01T07:45:34+0000", + "version": "2.0", }, Object { - "releaseTimestamp": "2015-09-14T07:26:16+0000", - "version": "2.7", + "releaseTimestamp": "2014-09-08T10:40:39+0000", + "version": "2.1", }, Object { - "releaseTimestamp": "2015-08-10T13:15:06+0000", - "version": "2.6", + "releaseTimestamp": "2014-09-08T10:40:39+0000", + "version": "2.1", }, Object { - "releaseTimestamp": "2015-07-08T07:38:37+0000", - "version": "2.5", + "releaseTimestamp": "2014-11-10T13:31:44+0000", + "version": "2.2", }, Object { - "releaseTimestamp": "2015-05-05T08:09:24+0000", - "version": "2.4", + "releaseTimestamp": "2014-11-10T13:31:44+0000", + "version": "2.2", }, Object { - "releaseTimestamp": "2015-02-16T05:09:33+0000", - "version": "2.3", + "releaseTimestamp": "2014-11-24T09:45:35+0000", + "version": "2.2.1", }, Object { "releaseTimestamp": "2014-11-24T09:45:35+0000", "version": "2.2.1", }, Object { - "releaseTimestamp": "2014-11-10T13:31:44+0000", - "version": "2.2", + "releaseTimestamp": "2015-02-16T05:09:33+0000", + "version": "2.3", }, Object { - "releaseTimestamp": "2014-09-08T10:40:39+0000", - "version": "2.1", + "releaseTimestamp": "2015-02-16T05:09:33+0000", + "version": "2.3", }, Object { - "releaseTimestamp": "2014-07-01T07:45:34+0000", - "version": "2.0", + "releaseTimestamp": "2015-05-05T08:09:24+0000", + "version": "2.4", }, Object { - "releaseTimestamp": "2014-04-29T09:24:31+0000", - "version": "1.12", + "releaseTimestamp": "2015-05-05T08:09:24+0000", + "version": "2.4", }, Object { - "releaseTimestamp": "2014-02-11T11:34:39+0000", - "version": "1.11", + "releaseTimestamp": "2015-07-08T07:38:37+0000", + "version": "2.5", }, Object { - "releaseTimestamp": "2013-12-17T09:28:15+0000", - "version": "1.10", + "releaseTimestamp": "2015-07-08T07:38:37+0000", + "version": "2.5", }, Object { - "releaseTimestamp": "2013-11-19T08:20:02+0000", - "version": "1.9", + "releaseTimestamp": "2015-08-10T13:15:06+0000", + "version": "2.6", }, Object { - "releaseTimestamp": "2013-09-24T07:32:33+0000", - "version": "1.8", + "releaseTimestamp": "2015-08-10T13:15:06+0000", + "version": "2.6", }, Object { - "releaseTimestamp": "2013-08-06T11:19:56+0000", - "version": "1.7", + "releaseTimestamp": "2015-09-14T07:26:16+0000", + "version": "2.7", }, Object { - "releaseTimestamp": "2013-05-07T09:12:14+0000", - "version": "1.6", + "releaseTimestamp": "2015-09-14T07:26:16+0000", + "version": "2.7", }, Object { - "releaseTimestamp": "2013-03-27T14:09:35+0000", - "version": "1.5", + "releaseTimestamp": "2015-10-20T03:46:36+0000", + "version": "2.8", }, Object { - "releaseTimestamp": "2013-01-28T03:42:46+0000", - "version": "1.4", + "releaseTimestamp": "2015-10-20T03:46:36+0000", + "version": "2.8", }, Object { - "releaseTimestamp": "2012-11-20T11:37:38+0000", - "version": "1.3", + "releaseTimestamp": "2015-11-17T07:02:17+0000", + "version": "2.9", }, Object { - "releaseTimestamp": "2012-09-12T10:46:02+0000", - "version": "1.2", + "releaseTimestamp": "2015-11-17T07:02:17+0000", + "version": "2.9", }, Object { - "releaseTimestamp": "2012-07-31T13:24:32+0000", - "version": "1.1", + "releaseTimestamp": "2015-12-21T21:15:04+0000", + "version": "2.10", }, Object { - "releaseTimestamp": "2012-06-12T02:56:21+0200", - "version": "1.0", + "releaseTimestamp": "2015-12-21T21:15:04+0000", + "version": "2.10", }, Object { - "releaseTimestamp": "2011-01-23T13:34:21+1100", - "version": "0.9.2", + "releaseTimestamp": "2016-02-08T07:59:16+0000", + "version": "2.11", }, Object { - "releaseTimestamp": "2011-01-02T11:40:57+1100", - "version": "0.9.1", + "releaseTimestamp": "2016-02-08T07:59:16+0000", + "version": "2.11", }, Object { - "releaseTimestamp": "2010-12-19T12:50:06+1100", - "version": "0.9", + "releaseTimestamp": "2016-03-14T08:32:03+0000", + "version": "2.12", }, Object { - "releaseTimestamp": "2009-09-28T14:01:59+0200", - "version": "0.8", + "releaseTimestamp": "2016-03-14T08:32:03+0000", + "version": "2.12", }, Object { - "releaseTimestamp": "2009-07-20T08:50:13+0200", - "version": "0.7", + "releaseTimestamp": "2016-04-25T04:10:10+0000", + "version": "2.13", }, Object { - "releaseTimestamp": null, - "version": "4.10.3", + "releaseTimestamp": "2016-04-25T04:10:10+0000", + "version": "2.13", }, Object { - "releaseTimestamp": null, - "version": "5.0", + "releaseTimestamp": "2016-06-14T07:16:37+0000", + "version": "2.14", + }, + Object { + "releaseTimestamp": "2016-06-14T07:16:37+0000", + "version": "2.14", }, Object { - "releaseTimestamp": "2018-09-19T18:10:15+0000", - "version": "4.10.2", + "releaseTimestamp": "2016-07-18T06:38:37+0000", + "version": "2.14.1", }, Object { - "releaseTimestamp": "2018-09-12T11:33:27+0000", - "version": "4.10.1", + "releaseTimestamp": "2016-07-18T06:38:37+0000", + "version": "2.14.1", }, Object { - "releaseTimestamp": "2018-08-27T18:35:06+0000", - "version": "4.10", + "releaseTimestamp": "2016-08-15T13:15:01+0000", + "version": "3.0", }, Object { - "releaseTimestamp": "2018-07-16T08:14:03+0000", - "version": "4.9", + "releaseTimestamp": "2016-08-15T13:15:01+0000", + "version": "3.0", }, Object { - "releaseTimestamp": "2018-06-21T07:53:06+0000", - "version": "4.8.1", + "releaseTimestamp": "2016-09-19T10:53:53+0000", + "version": "3.1", }, Object { - "releaseTimestamp": "2018-06-04T10:39:58+0000", - "version": "4.8", + "releaseTimestamp": "2016-09-19T10:53:53+0000", + "version": "3.1", }, Object { - "releaseTimestamp": "2018-04-18T09:09:12+0000", - "version": "4.7", + "releaseTimestamp": "2016-11-14T12:32:59+0000", + "version": "3.2", }, Object { - "releaseTimestamp": "2018-02-28T13:36:36+0000", - "version": "4.6", + "releaseTimestamp": "2016-11-14T12:32:59+0000", + "version": "3.2", }, Object { - "releaseTimestamp": "2018-02-05T13:22:49+0000", - "version": "4.5.1", + "releaseTimestamp": "2016-11-22T15:19:54+0000", + "version": "3.2.1", }, Object { - "releaseTimestamp": "2018-01-24T17:04:52+0000", - "version": "4.5", + "releaseTimestamp": "2016-11-22T15:19:54+0000", + "version": "3.2.1", }, Object { - "releaseTimestamp": "2017-12-20T15:45:23+0000", - "version": "4.4.1", + "releaseTimestamp": "2017-01-03T15:31:04+0000", + "version": "3.3", }, Object { - "releaseTimestamp": "2017-12-06T09:05:06+0000", - "version": "4.4", + "releaseTimestamp": "2017-01-03T15:31:04+0000", + "version": "3.3", }, Object { - "releaseTimestamp": "2017-11-08T08:59:45+0000", - "version": "4.3.1", + "releaseTimestamp": "2017-02-20T14:49:26+0000", + "version": "3.4", }, Object { - "releaseTimestamp": "2017-10-30T15:43:29+0000", - "version": "4.3", + "releaseTimestamp": "2017-02-20T14:49:26+0000", + "version": "3.4", }, Object { - "releaseTimestamp": "2017-10-02T15:36:21+0000", - "version": "4.2.1", + "releaseTimestamp": "2017-03-03T19:45:41+0000", + "version": "3.4.1", }, Object { - "releaseTimestamp": "2017-09-20T14:48:23+0000", - "version": "4.2", + "releaseTimestamp": "2017-03-03T19:45:41+0000", + "version": "3.4.1", }, Object { - "releaseTimestamp": "2017-08-07T14:38:48+0000", - "version": "4.1", + "releaseTimestamp": "2017-04-10T13:37:25+0000", + "version": "3.5", }, Object { - "releaseTimestamp": "2017-07-26T16:19:18+0000", - "version": "4.0.2", + "releaseTimestamp": "2017-04-10T13:37:25+0000", + "version": "3.5", }, Object { - "releaseTimestamp": "2017-07-07T14:02:41+0000", - "version": "4.0.1", + "releaseTimestamp": "2017-06-16T14:36:27+0000", + "version": "3.5.1", }, Object { "releaseTimestamp": "2017-06-16T14:36:27+0000", @@ -361,176 +361,176 @@ Object { "version": "4.0", }, Object { - "releaseTimestamp": "2017-04-10T13:37:25+0000", - "version": "3.5", + "releaseTimestamp": "2017-06-14T15:11:08+0000", + "version": "4.0", }, Object { - "releaseTimestamp": "2017-03-03T19:45:41+0000", - "version": "3.4.1", + "releaseTimestamp": "2017-07-07T14:02:41+0000", + "version": "4.0.1", }, Object { - "releaseTimestamp": "2017-02-20T14:49:26+0000", - "version": "3.4", + "releaseTimestamp": "2017-07-07T14:02:41+0000", + "version": "4.0.1", }, Object { - "releaseTimestamp": "2017-01-03T15:31:04+0000", - "version": "3.3", + "releaseTimestamp": "2017-07-26T16:19:18+0000", + "version": "4.0.2", }, Object { - "releaseTimestamp": "2016-11-22T15:19:54+0000", - "version": "3.2.1", + "releaseTimestamp": "2017-07-26T16:19:18+0000", + "version": "4.0.2", }, Object { - "releaseTimestamp": "2016-11-14T12:32:59+0000", - "version": "3.2", + "releaseTimestamp": "2017-08-07T14:38:48+0000", + "version": "4.1", }, Object { - "releaseTimestamp": "2016-09-19T10:53:53+0000", - "version": "3.1", + "releaseTimestamp": "2017-08-07T14:38:48+0000", + "version": "4.1", }, Object { - "releaseTimestamp": "2016-08-15T13:15:01+0000", - "version": "3.0", + "releaseTimestamp": "2017-09-20T14:48:23+0000", + "version": "4.2", }, Object { - "releaseTimestamp": "2016-07-18T06:38:37+0000", - "version": "2.14.1", + "releaseTimestamp": "2017-09-20T14:48:23+0000", + "version": "4.2", }, Object { - "releaseTimestamp": "2016-06-14T07:16:37+0000", - "version": "2.14", + "releaseTimestamp": "2017-10-02T15:36:21+0000", + "version": "4.2.1", }, Object { - "releaseTimestamp": "2016-04-25T04:10:10+0000", - "version": "2.13", + "releaseTimestamp": "2017-10-02T15:36:21+0000", + "version": "4.2.1", }, Object { - "releaseTimestamp": "2016-03-14T08:32:03+0000", - "version": "2.12", + "releaseTimestamp": "2017-10-30T15:43:29+0000", + "version": "4.3", }, Object { - "releaseTimestamp": "2016-02-08T07:59:16+0000", - "version": "2.11", + "releaseTimestamp": "2017-10-30T15:43:29+0000", + "version": "4.3", }, Object { - "releaseTimestamp": "2015-12-21T21:15:04+0000", - "version": "2.10", + "releaseTimestamp": "2017-11-08T08:59:45+0000", + "version": "4.3.1", }, Object { - "releaseTimestamp": "2015-11-17T07:02:17+0000", - "version": "2.9", + "releaseTimestamp": "2017-11-08T08:59:45+0000", + "version": "4.3.1", }, Object { - "releaseTimestamp": "2015-10-20T03:46:36+0000", - "version": "2.8", + "releaseTimestamp": "2017-12-06T09:05:06+0000", + "version": "4.4", }, Object { - "releaseTimestamp": "2015-09-14T07:26:16+0000", - "version": "2.7", + "releaseTimestamp": "2017-12-06T09:05:06+0000", + "version": "4.4", }, Object { - "releaseTimestamp": "2015-08-10T13:15:06+0000", - "version": "2.6", + "releaseTimestamp": "2017-12-20T15:45:23+0000", + "version": "4.4.1", }, Object { - "releaseTimestamp": "2015-07-08T07:38:37+0000", - "version": "2.5", + "releaseTimestamp": "2017-12-20T15:45:23+0000", + "version": "4.4.1", }, Object { - "releaseTimestamp": "2015-05-05T08:09:24+0000", - "version": "2.4", + "releaseTimestamp": "2018-01-24T17:04:52+0000", + "version": "4.5", }, Object { - "releaseTimestamp": "2015-02-16T05:09:33+0000", - "version": "2.3", + "releaseTimestamp": "2018-01-24T17:04:52+0000", + "version": "4.5", }, Object { - "releaseTimestamp": "2014-11-24T09:45:35+0000", - "version": "2.2.1", + "releaseTimestamp": "2018-02-05T13:22:49+0000", + "version": "4.5.1", }, Object { - "releaseTimestamp": "2014-11-10T13:31:44+0000", - "version": "2.2", + "releaseTimestamp": "2018-02-05T13:22:49+0000", + "version": "4.5.1", }, Object { - "releaseTimestamp": "2014-09-08T10:40:39+0000", - "version": "2.1", + "releaseTimestamp": "2018-02-28T13:36:36+0000", + "version": "4.6", }, Object { - "releaseTimestamp": "2014-07-01T07:45:34+0000", - "version": "2.0", + "releaseTimestamp": "2018-02-28T13:36:36+0000", + "version": "4.6", }, Object { - "releaseTimestamp": "2014-04-29T09:24:31+0000", - "version": "1.12", + "releaseTimestamp": "2018-04-18T09:09:12+0000", + "version": "4.7", }, Object { - "releaseTimestamp": "2014-02-11T11:34:39+0000", - "version": "1.11", + "releaseTimestamp": "2018-04-18T09:09:12+0000", + "version": "4.7", }, Object { - "releaseTimestamp": "2013-12-17T09:28:15+0000", - "version": "1.10", + "releaseTimestamp": "2018-06-04T10:39:58+0000", + "version": "4.8", }, Object { - "releaseTimestamp": "2013-11-19T08:20:02+0000", - "version": "1.9", + "releaseTimestamp": "2018-06-04T10:39:58+0000", + "version": "4.8", }, Object { - "releaseTimestamp": "2013-09-24T07:32:33+0000", - "version": "1.8", + "releaseTimestamp": "2018-06-21T07:53:06+0000", + "version": "4.8.1", }, Object { - "releaseTimestamp": "2013-08-06T11:19:56+0000", - "version": "1.7", + "releaseTimestamp": "2018-06-21T07:53:06+0000", + "version": "4.8.1", }, Object { - "releaseTimestamp": "2013-05-07T09:12:14+0000", - "version": "1.6", + "releaseTimestamp": "2018-07-16T08:14:03+0000", + "version": "4.9", }, Object { - "releaseTimestamp": "2013-03-27T14:09:35+0000", - "version": "1.5", + "releaseTimestamp": "2018-07-16T08:14:03+0000", + "version": "4.9", }, Object { - "releaseTimestamp": "2013-01-28T03:42:46+0000", - "version": "1.4", + "releaseTimestamp": "2018-08-27T18:35:06+0000", + "version": "4.10", }, Object { - "releaseTimestamp": "2012-11-20T11:37:38+0000", - "version": "1.3", + "releaseTimestamp": "2018-08-27T18:35:06+0000", + "version": "4.10", }, Object { - "releaseTimestamp": "2012-09-12T10:46:02+0000", - "version": "1.2", + "releaseTimestamp": "2018-09-12T11:33:27+0000", + "version": "4.10.1", }, Object { - "releaseTimestamp": "2012-07-31T13:24:32+0000", - "version": "1.1", + "releaseTimestamp": "2018-09-12T11:33:27+0000", + "version": "4.10.1", }, Object { - "releaseTimestamp": "2012-06-12T02:56:21+0200", - "version": "1.0", + "releaseTimestamp": "2018-09-19T18:10:15+0000", + "version": "4.10.2", }, Object { - "releaseTimestamp": "2011-01-23T13:34:21+1100", - "version": "0.9.2", + "releaseTimestamp": "2018-09-19T18:10:15+0000", + "version": "4.10.2", }, Object { - "releaseTimestamp": "2011-01-02T11:40:57+1100", - "version": "0.9.1", + "releaseTimestamp": null, + "version": "4.10.3", }, Object { - "releaseTimestamp": "2010-12-19T12:50:06+1100", - "version": "0.9", + "releaseTimestamp": null, + "version": "4.10.3", }, Object { - "releaseTimestamp": "2009-09-28T14:01:59+0200", - "version": "0.8", + "releaseTimestamp": null, + "version": "5.0", }, Object { - "releaseTimestamp": "2009-07-20T08:50:13+0200", - "version": "0.7", + "releaseTimestamp": null, + "version": "5.0", }, ], "sourceUrl": "https://github.com/gradle/gradle", @@ -567,268 +567,268 @@ Object { "homepage": "https://gradle.org", "releases": Array [ Object { - "releaseTimestamp": null, - "version": "4.10.3", - }, - Object { - "releaseTimestamp": null, - "version": "5.0", + "releaseTimestamp": "2009-07-20T08:50:13+0200", + "version": "0.7", }, Object { - "releaseTimestamp": "2018-09-19T18:10:15+0000", - "version": "4.10.2", + "releaseTimestamp": "2009-09-28T14:01:59+0200", + "version": "0.8", }, Object { - "releaseTimestamp": "2018-09-12T11:33:27+0000", - "version": "4.10.1", + "releaseTimestamp": "2010-12-19T12:50:06+1100", + "version": "0.9", }, Object { - "releaseTimestamp": "2018-08-27T18:35:06+0000", - "version": "4.10", + "releaseTimestamp": "2011-01-02T11:40:57+1100", + "version": "0.9.1", }, Object { - "releaseTimestamp": "2018-07-16T08:14:03+0000", - "version": "4.9", + "releaseTimestamp": "2011-01-23T13:34:21+1100", + "version": "0.9.2", }, Object { - "releaseTimestamp": "2018-06-21T07:53:06+0000", - "version": "4.8.1", + "releaseTimestamp": "2012-06-12T02:56:21+0200", + "version": "1.0", }, Object { - "releaseTimestamp": "2018-06-04T10:39:58+0000", - "version": "4.8", + "releaseTimestamp": "2012-07-31T13:24:32+0000", + "version": "1.1", }, Object { - "releaseTimestamp": "2018-04-18T09:09:12+0000", - "version": "4.7", + "releaseTimestamp": "2012-09-12T10:46:02+0000", + "version": "1.2", }, Object { - "releaseTimestamp": "2018-02-28T13:36:36+0000", - "version": "4.6", + "releaseTimestamp": "2012-11-20T11:37:38+0000", + "version": "1.3", }, Object { - "releaseTimestamp": "2018-02-05T13:22:49+0000", - "version": "4.5.1", + "releaseTimestamp": "2013-01-28T03:42:46+0000", + "version": "1.4", }, Object { - "releaseTimestamp": "2018-01-24T17:04:52+0000", - "version": "4.5", + "releaseTimestamp": "2013-03-27T14:09:35+0000", + "version": "1.5", }, Object { - "releaseTimestamp": "2017-12-20T15:45:23+0000", - "version": "4.4.1", + "releaseTimestamp": "2013-05-07T09:12:14+0000", + "version": "1.6", }, Object { - "releaseTimestamp": "2017-12-06T09:05:06+0000", - "version": "4.4", + "releaseTimestamp": "2013-08-06T11:19:56+0000", + "version": "1.7", }, Object { - "releaseTimestamp": "2017-11-08T08:59:45+0000", - "version": "4.3.1", + "releaseTimestamp": "2013-09-24T07:32:33+0000", + "version": "1.8", }, Object { - "releaseTimestamp": "2017-10-30T15:43:29+0000", - "version": "4.3", + "releaseTimestamp": "2013-11-19T08:20:02+0000", + "version": "1.9", }, Object { - "releaseTimestamp": "2017-10-02T15:36:21+0000", - "version": "4.2.1", + "releaseTimestamp": "2013-12-17T09:28:15+0000", + "version": "1.10", }, Object { - "releaseTimestamp": "2017-09-20T14:48:23+0000", - "version": "4.2", + "releaseTimestamp": "2014-02-11T11:34:39+0000", + "version": "1.11", }, Object { - "releaseTimestamp": "2017-08-07T14:38:48+0000", - "version": "4.1", + "releaseTimestamp": "2014-04-29T09:24:31+0000", + "version": "1.12", }, Object { - "releaseTimestamp": "2017-07-26T16:19:18+0000", - "version": "4.0.2", + "releaseTimestamp": "2014-07-01T07:45:34+0000", + "version": "2.0", }, Object { - "releaseTimestamp": "2017-07-07T14:02:41+0000", - "version": "4.0.1", + "releaseTimestamp": "2014-09-08T10:40:39+0000", + "version": "2.1", }, Object { - "releaseTimestamp": "2017-06-16T14:36:27+0000", - "version": "3.5.1", + "releaseTimestamp": "2014-11-10T13:31:44+0000", + "version": "2.2", }, Object { - "releaseTimestamp": "2017-06-14T15:11:08+0000", - "version": "4.0", + "releaseTimestamp": "2014-11-24T09:45:35+0000", + "version": "2.2.1", }, Object { - "releaseTimestamp": "2017-04-10T13:37:25+0000", - "version": "3.5", + "releaseTimestamp": "2015-02-16T05:09:33+0000", + "version": "2.3", }, Object { - "releaseTimestamp": "2017-03-03T19:45:41+0000", - "version": "3.4.1", + "releaseTimestamp": "2015-05-05T08:09:24+0000", + "version": "2.4", }, Object { - "releaseTimestamp": "2017-02-20T14:49:26+0000", - "version": "3.4", + "releaseTimestamp": "2015-07-08T07:38:37+0000", + "version": "2.5", }, Object { - "releaseTimestamp": "2017-01-03T15:31:04+0000", - "version": "3.3", + "releaseTimestamp": "2015-08-10T13:15:06+0000", + "version": "2.6", }, Object { - "releaseTimestamp": "2016-11-22T15:19:54+0000", - "version": "3.2.1", + "releaseTimestamp": "2015-09-14T07:26:16+0000", + "version": "2.7", }, Object { - "releaseTimestamp": "2016-11-14T12:32:59+0000", - "version": "3.2", + "releaseTimestamp": "2015-10-20T03:46:36+0000", + "version": "2.8", }, Object { - "releaseTimestamp": "2016-09-19T10:53:53+0000", - "version": "3.1", + "releaseTimestamp": "2015-11-17T07:02:17+0000", + "version": "2.9", }, Object { - "releaseTimestamp": "2016-08-15T13:15:01+0000", - "version": "3.0", + "releaseTimestamp": "2015-12-21T21:15:04+0000", + "version": "2.10", }, Object { - "releaseTimestamp": "2016-07-18T06:38:37+0000", - "version": "2.14.1", + "releaseTimestamp": "2016-02-08T07:59:16+0000", + "version": "2.11", }, Object { - "releaseTimestamp": "2016-06-14T07:16:37+0000", - "version": "2.14", + "releaseTimestamp": "2016-03-14T08:32:03+0000", + "version": "2.12", }, Object { "releaseTimestamp": "2016-04-25T04:10:10+0000", "version": "2.13", }, Object { - "releaseTimestamp": "2016-03-14T08:32:03+0000", - "version": "2.12", + "releaseTimestamp": "2016-06-14T07:16:37+0000", + "version": "2.14", }, Object { - "releaseTimestamp": "2016-02-08T07:59:16+0000", - "version": "2.11", + "releaseTimestamp": "2016-07-18T06:38:37+0000", + "version": "2.14.1", }, Object { - "releaseTimestamp": "2015-12-21T21:15:04+0000", - "version": "2.10", + "releaseTimestamp": "2016-08-15T13:15:01+0000", + "version": "3.0", }, Object { - "releaseTimestamp": "2015-11-17T07:02:17+0000", - "version": "2.9", + "releaseTimestamp": "2016-09-19T10:53:53+0000", + "version": "3.1", }, Object { - "releaseTimestamp": "2015-10-20T03:46:36+0000", - "version": "2.8", + "releaseTimestamp": "2016-11-14T12:32:59+0000", + "version": "3.2", }, Object { - "releaseTimestamp": "2015-09-14T07:26:16+0000", - "version": "2.7", + "releaseTimestamp": "2016-11-22T15:19:54+0000", + "version": "3.2.1", }, Object { - "releaseTimestamp": "2015-08-10T13:15:06+0000", - "version": "2.6", + "releaseTimestamp": "2017-01-03T15:31:04+0000", + "version": "3.3", }, Object { - "releaseTimestamp": "2015-07-08T07:38:37+0000", - "version": "2.5", + "releaseTimestamp": "2017-02-20T14:49:26+0000", + "version": "3.4", }, Object { - "releaseTimestamp": "2015-05-05T08:09:24+0000", - "version": "2.4", + "releaseTimestamp": "2017-03-03T19:45:41+0000", + "version": "3.4.1", }, Object { - "releaseTimestamp": "2015-02-16T05:09:33+0000", - "version": "2.3", + "releaseTimestamp": "2017-04-10T13:37:25+0000", + "version": "3.5", }, Object { - "releaseTimestamp": "2014-11-24T09:45:35+0000", - "version": "2.2.1", + "releaseTimestamp": "2017-06-16T14:36:27+0000", + "version": "3.5.1", }, Object { - "releaseTimestamp": "2014-11-10T13:31:44+0000", - "version": "2.2", + "releaseTimestamp": "2017-06-14T15:11:08+0000", + "version": "4.0", }, Object { - "releaseTimestamp": "2014-09-08T10:40:39+0000", - "version": "2.1", + "releaseTimestamp": "2017-07-07T14:02:41+0000", + "version": "4.0.1", }, Object { - "releaseTimestamp": "2014-07-01T07:45:34+0000", - "version": "2.0", + "releaseTimestamp": "2017-07-26T16:19:18+0000", + "version": "4.0.2", }, Object { - "releaseTimestamp": "2014-04-29T09:24:31+0000", - "version": "1.12", + "releaseTimestamp": "2017-08-07T14:38:48+0000", + "version": "4.1", }, Object { - "releaseTimestamp": "2014-02-11T11:34:39+0000", - "version": "1.11", + "releaseTimestamp": "2017-09-20T14:48:23+0000", + "version": "4.2", }, Object { - "releaseTimestamp": "2013-12-17T09:28:15+0000", - "version": "1.10", + "releaseTimestamp": "2017-10-02T15:36:21+0000", + "version": "4.2.1", }, Object { - "releaseTimestamp": "2013-11-19T08:20:02+0000", - "version": "1.9", + "releaseTimestamp": "2017-10-30T15:43:29+0000", + "version": "4.3", }, Object { - "releaseTimestamp": "2013-09-24T07:32:33+0000", - "version": "1.8", + "releaseTimestamp": "2017-11-08T08:59:45+0000", + "version": "4.3.1", }, Object { - "releaseTimestamp": "2013-08-06T11:19:56+0000", - "version": "1.7", + "releaseTimestamp": "2017-12-06T09:05:06+0000", + "version": "4.4", }, Object { - "releaseTimestamp": "2013-05-07T09:12:14+0000", - "version": "1.6", + "releaseTimestamp": "2017-12-20T15:45:23+0000", + "version": "4.4.1", }, Object { - "releaseTimestamp": "2013-03-27T14:09:35+0000", - "version": "1.5", + "releaseTimestamp": "2018-01-24T17:04:52+0000", + "version": "4.5", }, Object { - "releaseTimestamp": "2013-01-28T03:42:46+0000", - "version": "1.4", + "releaseTimestamp": "2018-02-05T13:22:49+0000", + "version": "4.5.1", }, Object { - "releaseTimestamp": "2012-11-20T11:37:38+0000", - "version": "1.3", + "releaseTimestamp": "2018-02-28T13:36:36+0000", + "version": "4.6", }, Object { - "releaseTimestamp": "2012-09-12T10:46:02+0000", - "version": "1.2", + "releaseTimestamp": "2018-04-18T09:09:12+0000", + "version": "4.7", }, Object { - "releaseTimestamp": "2012-07-31T13:24:32+0000", - "version": "1.1", + "releaseTimestamp": "2018-06-04T10:39:58+0000", + "version": "4.8", }, Object { - "releaseTimestamp": "2012-06-12T02:56:21+0200", - "version": "1.0", + "releaseTimestamp": "2018-06-21T07:53:06+0000", + "version": "4.8.1", }, Object { - "releaseTimestamp": "2011-01-23T13:34:21+1100", - "version": "0.9.2", + "releaseTimestamp": "2018-07-16T08:14:03+0000", + "version": "4.9", }, Object { - "releaseTimestamp": "2011-01-02T11:40:57+1100", - "version": "0.9.1", + "releaseTimestamp": "2018-08-27T18:35:06+0000", + "version": "4.10", }, Object { - "releaseTimestamp": "2010-12-19T12:50:06+1100", - "version": "0.9", + "releaseTimestamp": "2018-09-12T11:33:27+0000", + "version": "4.10.1", }, Object { - "releaseTimestamp": "2009-09-28T14:01:59+0200", - "version": "0.8", + "releaseTimestamp": "2018-09-19T18:10:15+0000", + "version": "4.10.2", }, Object { - "releaseTimestamp": "2009-07-20T08:50:13+0200", - "version": "0.7", + "releaseTimestamp": null, + "version": "4.10.3", + }, + Object { + "releaseTimestamp": null, + "version": "5.0", }, ], "sourceUrl": "https://github.com/gradle/gradle", diff --git a/lib/datasource/gradle-version/index.spec.ts b/lib/datasource/gradle-version/index.spec.ts index 6f60d98f646c18ac3b9dc31cb814f9a1aee07e95..1c656f47195bf9c128cfdd0d4bcbf1457411b1b4 100644 --- a/lib/datasource/gradle-version/index.spec.ts +++ b/lib/datasource/gradle-version/index.spec.ts @@ -1,18 +1,22 @@ import fs from 'fs'; +import { GetPkgReleasesConfig, getPkgReleases } from '..'; import * as httpMock from '../../../test/httpMock'; -import * as gradleVersion from '.'; +import { id as versioning } from '../../versioning/gradle'; +import { id as datasource } from '.'; const allResponse: any = fs.readFileSync( 'lib/datasource/gradle-version/__fixtures__/all.json' ); -let config: any = {}; +let config: GetPkgReleasesConfig; describe('datasource/gradle-version', () => { describe('getReleases', () => { beforeEach(() => { config = { - lookupName: 'abc', + datasource, + versioning, + depName: 'abc', }; jest.clearAllMocks(); httpMock.setup(); @@ -27,7 +31,7 @@ describe('datasource/gradle-version', () => { .scope('https://services.gradle.org/') .get('/versions/all') .reply(200, JSON.parse(allResponse)); - const res = await gradleVersion.getReleases(config); + const res = await getPkgReleases(config); expect(res).toMatchSnapshot(); expect(res).not.toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -44,7 +48,7 @@ describe('datasource/gradle-version', () => { .get('/') .reply(200, JSON.parse(allResponse)); - const res = await gradleVersion.getReleases({ + const res = await getPkgReleases({ ...config, registryUrls: ['https://foo.bar', 'http://baz.qux'], }); diff --git a/lib/datasource/maven/index.spec.ts b/lib/datasource/maven/index.spec.ts index 0915058b7b57745a91631e3d7f5d4604adce526f..bbe3d11b6d0709499e72a31c9a2b4487af851a68 100644 --- a/lib/datasource/maven/index.spec.ts +++ b/lib/datasource/maven/index.spec.ts @@ -5,7 +5,7 @@ import { getPkgReleases } from '..'; import { DATASOURCE_FAILURE } from '../../constants/error-messages'; import * as hostRules from '../../util/host-rules'; import * as mavenVersioning from '../../versioning/maven'; -import * as maven from '.'; +import { id as datasource } from '.'; const MYSQL_VERSIONS = ['6.0.5', '6.0.6', '8.0.7', '8.0.8', '8.0.9']; @@ -27,13 +27,13 @@ const MYSQL_MAVEN_MYSQL_POM = fs.readFileSync( const config = { versioning: mavenVersioning.id, - datasource: maven.id, + datasource, }; describe('datasource/maven', () => { beforeEach(() => { hostRules.add({ - hostType: maven.id, + hostType: datasource, hostName: 'frontend_for_private_s3_repository', username: 'username', password: 'password', @@ -190,9 +190,9 @@ describe('datasource/maven', () => { expect.assertions(1); await expect( - maven.getReleases({ + getPkgReleases({ ...config, - lookupName: 'org:artifact', + depName: 'org:artifact', registryUrls: ['https://repo.maven.apache.org/maven2/'], }) ).rejects.toThrow(Error(DATASOURCE_FAILURE)); diff --git a/lib/datasource/npm/__snapshots__/index.spec.ts.snap b/lib/datasource/npm/__snapshots__/index.spec.ts.snap index 2affe2c4f2cb776b98772fc0ea5d974acb9e81ea..33bc541ee000198f2cc8871ae3760a6218f2c1fd 100644 --- a/lib/datasource/npm/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/npm/__snapshots__/index.spec.ts.snap @@ -2,25 +2,22 @@ exports[`datasource/npm/index should fetch package info from custom registry 1`] = ` Object { - "homepage": "https://github.com/renovateapp/dummy", "latestVersion": "0.0.1", "name": "foobar", "releases": Array [ Object { "canBeUnpublished": false, - "gitRef": undefined, "releaseTimestamp": "2018-05-06T07:21:53+02:00", "version": "0.0.1", }, Object { "canBeUnpublished": false, - "gitRef": undefined, "releaseTimestamp": "2018-05-07T07:21:53+02:00", "version": "0.0.2", }, ], "sourceDirectory": "src/a", - "sourceUrl": "git://github.com/renovateapp/dummy.git", + "sourceUrl": "https://github.com/renovateapp/dummy", "tags": Object { "latest": "0.0.1", }, @@ -30,25 +27,22 @@ Object { exports[`datasource/npm/index should fetch package info from npm 1`] = ` Object { - "homepage": "https://github.com/renovateapp/dummy", "latestVersion": "0.0.1", "name": "foobar", "releases": Array [ Object { "canBeUnpublished": false, - "gitRef": undefined, "releaseTimestamp": "2018-05-06T07:21:53+02:00", "version": "0.0.1", }, Object { "canBeUnpublished": false, - "gitRef": undefined, "releaseTimestamp": "2018-05-07T07:21:53+02:00", "version": "0.0.2", }, ], "sourceDirectory": "src/a", - "sourceUrl": "git://github.com/renovateapp/dummy.git", + "sourceUrl": "https://github.com/renovateapp/dummy", "tags": Object { "latest": "0.0.1", }, @@ -58,25 +52,22 @@ Object { exports[`datasource/npm/index should handle foobar 1`] = ` Object { - "homepage": "https://github.com/renovateapp/dummy", "latestVersion": "0.0.1", "name": "foobar", "releases": Array [ Object { "canBeUnpublished": false, - "gitRef": undefined, "releaseTimestamp": "2018-05-06T07:21:53+02:00", "version": "0.0.1", }, Object { "canBeUnpublished": false, - "gitRef": undefined, "releaseTimestamp": "2018-05-07T07:21:53+02:00", "version": "0.0.2", }, ], "sourceDirectory": "src/a", - "sourceUrl": "git://github.com/renovateapp/dummy.git", + "sourceUrl": "https://github.com/renovateapp/dummy", "tags": Object { "latest": "0.0.1", }, @@ -86,23 +77,20 @@ Object { exports[`datasource/npm/index should handle no time 1`] = ` Object { - "homepage": "https://github.com/renovateapp/dummy", "latestVersion": "0.0.1", "name": "foobar", "releases": Array [ Object { "canBeUnpublished": false, - "gitRef": undefined, "releaseTimestamp": "2018-05-06T07:21:53+02:00", "version": "0.0.1", }, Object { - "gitRef": undefined, "version": "0.0.2", }, ], "sourceDirectory": "src/a", - "sourceUrl": "git://github.com/renovateapp/dummy.git", + "sourceUrl": "https://github.com/renovateapp/dummy", "tags": Object { "latest": "0.0.1", }, @@ -112,18 +100,16 @@ Object { exports[`datasource/npm/index should parse repo url (string) 1`] = ` Object { - "homepage": undefined, "latestVersion": "0.0.1", "name": "foobar", "releases": Array [ Object { "canBeUnpublished": false, - "gitRef": undefined, "releaseTimestamp": "2018-05-06T07:21:53+02:00", "version": "0.0.1", }, ], - "sourceUrl": "git:github.com/renovateapp/dummy", + "sourceUrl": "https://github.com/renovateapp/dummy", "tags": Object { "latest": "0.0.1", }, @@ -133,18 +119,16 @@ Object { exports[`datasource/npm/index should parse repo url 1`] = ` Object { - "homepage": undefined, "latestVersion": "0.0.1", "name": "foobar", "releases": Array [ Object { "canBeUnpublished": false, - "gitRef": undefined, "releaseTimestamp": "2018-05-06T07:21:53+02:00", "version": "0.0.1", }, ], - "sourceUrl": "git:github.com/renovateapp/dummy", + "sourceUrl": "https://github.com/renovateapp/dummy", "tags": Object { "latest": "0.0.1", }, @@ -154,25 +138,22 @@ Object { exports[`datasource/npm/index should replace any environment variable in npmrc 1`] = ` Object { - "homepage": "https://github.com/renovateapp/dummy", "latestVersion": "0.0.1", "name": "foobar", "releases": Array [ Object { "canBeUnpublished": false, - "gitRef": undefined, "releaseTimestamp": "2018-05-06T07:21:53+02:00", "version": "0.0.1", }, Object { "canBeUnpublished": false, - "gitRef": undefined, "releaseTimestamp": "2018-05-07T07:21:53+02:00", "version": "0.0.2", }, ], "sourceDirectory": "src/a", - "sourceUrl": "git://github.com/renovateapp/dummy.git", + "sourceUrl": "https://github.com/renovateapp/dummy", "tags": Object { "latest": "0.0.1", }, @@ -188,25 +169,22 @@ Object { Marking the latest version of an npm package as deprecated results in the entire package being considered deprecated, so contact the package author you think this is a mistake.", "deprecationSource": "npm", - "homepage": undefined, "latestVersion": "0.0.2", "name": "foobar", "releases": Array [ Object { "canBeUnpublished": false, - "gitRef": undefined, "releaseTimestamp": "2018-05-06T07:21:53+02:00", "version": "0.0.1", }, Object { "canBeUnpublished": false, - "gitRef": undefined, "isDeprecated": true, "releaseTimestamp": "2018-05-07T07:21:53+02:00", "version": "0.0.2", }, ], - "sourceUrl": "git://github.com/renovateapp/dummy.git", + "sourceUrl": "https://github.com/renovateapp/dummy", "tags": Object { "latest": "0.0.2", }, @@ -224,25 +202,22 @@ Marking the latest version of an npm package as deprecated results in the entire exports[`datasource/npm/index should send an authorization header if provided 1`] = ` Object { - "homepage": "https://github.com/renovateapp/dummy", "latestVersion": "0.0.1", "name": "foobar", "releases": Array [ Object { "canBeUnpublished": false, - "gitRef": undefined, "releaseTimestamp": "2018-05-06T07:21:53+02:00", "version": "0.0.1", }, Object { "canBeUnpublished": false, - "gitRef": undefined, "releaseTimestamp": "2018-05-07T07:21:53+02:00", "version": "0.0.2", }, ], "sourceDirectory": "src/a", - "sourceUrl": "git://github.com/renovateapp/dummy.git", + "sourceUrl": "https://github.com/renovateapp/dummy", "tags": Object { "latest": "0.0.1", }, @@ -252,25 +227,22 @@ Object { exports[`datasource/npm/index should use NPM_TOKEN if provided 1`] = ` Object { - "homepage": "https://github.com/renovateapp/dummy", "latestVersion": "0.0.1", "name": "foobar", "releases": Array [ Object { "canBeUnpublished": false, - "gitRef": undefined, "releaseTimestamp": "2018-05-06T07:21:53+02:00", "version": "0.0.1", }, Object { "canBeUnpublished": false, - "gitRef": undefined, "releaseTimestamp": "2018-05-07T07:21:53+02:00", "version": "0.0.2", }, ], "sourceDirectory": "src/a", - "sourceUrl": "git://github.com/renovateapp/dummy.git", + "sourceUrl": "https://github.com/renovateapp/dummy", "tags": Object { "latest": "0.0.1", }, @@ -280,25 +252,22 @@ Object { exports[`datasource/npm/index should use default registry if missing from npmrc 1`] = ` Object { - "homepage": "https://github.com/renovateapp/dummy", "latestVersion": "0.0.1", "name": "foobar", "releases": Array [ Object { "canBeUnpublished": false, - "gitRef": undefined, "releaseTimestamp": "2018-05-06T07:21:53+02:00", "version": "0.0.1", }, Object { "canBeUnpublished": false, - "gitRef": undefined, "releaseTimestamp": "2018-05-07T07:21:53+02:00", "version": "0.0.2", }, ], "sourceDirectory": "src/a", - "sourceUrl": "git://github.com/renovateapp/dummy.git", + "sourceUrl": "https://github.com/renovateapp/dummy", "tags": Object { "latest": "0.0.1", }, @@ -308,25 +277,22 @@ Object { exports[`datasource/npm/index should use host rules by baseUrl if provided 1`] = ` Object { - "homepage": "https://github.com/renovateapp/dummy", "latestVersion": "0.0.1", "name": "foobar", "releases": Array [ Object { "canBeUnpublished": false, - "gitRef": undefined, "releaseTimestamp": "2018-05-06T07:21:53+02:00", "version": "0.0.1", }, Object { "canBeUnpublished": false, - "gitRef": undefined, "releaseTimestamp": "2018-05-07T07:21:53+02:00", "version": "0.0.2", }, ], "sourceDirectory": "src/a", - "sourceUrl": "git://github.com/renovateapp/dummy.git", + "sourceUrl": "https://github.com/renovateapp/dummy", "tags": Object { "latest": "0.0.1", }, @@ -336,25 +302,22 @@ Object { exports[`datasource/npm/index should use host rules by hostName if provided 1`] = ` Object { - "homepage": "https://github.com/renovateapp/dummy", "latestVersion": "0.0.1", "name": "foobar", "releases": Array [ Object { "canBeUnpublished": false, - "gitRef": undefined, "releaseTimestamp": "2018-05-06T07:21:53+02:00", "version": "0.0.1", }, Object { "canBeUnpublished": false, - "gitRef": undefined, "releaseTimestamp": "2018-05-07T07:21:53+02:00", "version": "0.0.2", }, ], "sourceDirectory": "src/a", - "sourceUrl": "git://github.com/renovateapp/dummy.git", + "sourceUrl": "https://github.com/renovateapp/dummy", "tags": Object { "latest": "0.0.1", }, diff --git a/lib/datasource/npm/index.spec.ts b/lib/datasource/npm/index.spec.ts index 21d0b94cab06a1f9233a280cf4d55a0141f792ae..f2106aacbc6c1eb59c142722cbb654e62e4d0a87 100644 --- a/lib/datasource/npm/index.spec.ts +++ b/lib/datasource/npm/index.spec.ts @@ -1,10 +1,11 @@ import moment from 'moment'; import nock from 'nock'; import _registryAuthToken from 'registry-auth-token'; +import { getPkgReleases } from '..'; import { getName } from '../../../test/util'; import { DATASOURCE_FAILURE } from '../../constants/error-messages'; import * as hostRules from '../../util/host-rules'; -import * as npm from '.'; +import { id as datasource, getNpmrc, resetCache, setNpmrc } from '.'; jest.mock('registry-auth-token'); jest.mock('delay'); @@ -26,8 +27,8 @@ describe(getName(__filename), () => { beforeEach(() => { jest.resetAllMocks(); global.trustLevel = 'low'; - npm.resetCache(); - npm.setNpmrc(); + resetCache(); + setNpmrc(); npmResponse = { name: 'foobar', versions: { @@ -63,12 +64,12 @@ describe(getName(__filename), () => { nock('https://registry.npmjs.org') .get('/foobar') .reply(200, missingVersions); - const res = await npm.getReleases({ lookupName: 'foobar' }); + const res = await getPkgReleases({ datasource, depName: 'foobar' }); expect(res).toBeNull(); }); it('should fetch package info from npm', async () => { nock('https://registry.npmjs.org').get('/foobar').reply(200, npmResponse); - const res = await npm.getReleases({ lookupName: 'foobar' }); + const res = await getPkgReleases({ datasource, depName: 'foobar' }); expect(res).toMatchSnapshot(); expect(getRelease(res, '0.0.1').canBeUnpublished).toBe(false); expect(getRelease(res, '0.0.2').canBeUnpublished).toBe(false); @@ -93,7 +94,7 @@ describe(getName(__filename), () => { }, }; nock('https://registry.npmjs.org').get('/foobar').reply(200, pkg); - const res = await npm.getReleases({ lookupName: 'foobar' }); + const res = await getPkgReleases({ datasource, depName: 'foobar' }); expect(res).toMatchSnapshot(); expect(res.sourceUrl).toBeDefined(); }); @@ -114,7 +115,7 @@ describe(getName(__filename), () => { }, }; nock('https://registry.npmjs.org').get('/foobar').reply(200, pkg); - const res = await npm.getReleases({ lookupName: 'foobar' }); + const res = await getPkgReleases({ datasource, depName: 'foobar' }); expect(res).toMatchSnapshot(); expect(res.sourceUrl).toBeDefined(); }); @@ -145,26 +146,26 @@ describe(getName(__filename), () => { nock('https://registry.npmjs.org') .get('/foobar') .reply(200, deprecatedPackage); - const res = await npm.getReleases({ lookupName: 'foobar' }); + const res = await getPkgReleases({ datasource, depName: 'foobar' }); expect(res).toMatchSnapshot(); expect(res.deprecationMessage).toMatchSnapshot(); }); it('should handle foobar', async () => { nock('https://registry.npmjs.org').get('/foobar').reply(200, npmResponse); - const res = await npm.getReleases({ lookupName: 'foobar' }); + const res = await getPkgReleases({ datasource, depName: 'foobar' }); expect(res).toMatchSnapshot(); }); it('should reject name mismatch', async () => { nock('https://registry.npmjs.org') .get('/different') .reply(200, npmResponse); - const res = await npm.getReleases({ lookupName: 'different' }); + const res = await getPkgReleases({ datasource, depName: 'different' }); expect(res).toBeNull(); }); it('should handle no time', async () => { delete npmResponse.time['0.0.2']; nock('https://registry.npmjs.org').get('/foobar').reply(200, npmResponse); - const res = await npm.getReleases({ lookupName: 'foobar' }); + const res = await getPkgReleases({ datasource, depName: 'foobar' }); expect(res).toMatchSnapshot(); expect(getRelease(res, '0.0.1').canBeUnpublished).toBe(false); expect(getRelease(res, '0.0.2').canBeUnpublished).toBeUndefined(); @@ -172,44 +173,50 @@ describe(getName(__filename), () => { it('should return canBeUnpublished=true', async () => { npmResponse.time['0.0.2'] = moment().subtract(6, 'hours').format(); nock('https://registry.npmjs.org').get('/foobar').reply(200, npmResponse); - const res = await npm.getReleases({ lookupName: 'foobar' }); + const res = await getPkgReleases({ datasource, depName: 'foobar' }); expect(getRelease(res, '0.0.1').canBeUnpublished).toBe(false); expect(getRelease(res, '0.0.2').canBeUnpublished).toBe(true); }); it('should return null if lookup fails 401', async () => { nock('https://registry.npmjs.org').get('/foobar').reply(401); - const res = await npm.getReleases({ lookupName: 'foobar' }); + const res = await getPkgReleases({ datasource, depName: 'foobar' }); expect(res).toBeNull(); }); it('should return null if lookup fails', async () => { nock('https://registry.npmjs.org').get('/foobar').reply(404); - const res = await npm.getReleases({ lookupName: 'foobar' }); + const res = await getPkgReleases({ datasource, depName: 'foobar' }); expect(res).toBeNull(); }); it('should throw error for unparseable', async () => { nock('https://registry.npmjs.org').get('/foobar').reply(200, 'oops'); - await expect(npm.getReleases({ lookupName: 'foobar' })).rejects.toThrow(); + await expect( + getPkgReleases({ datasource, depName: 'foobar' }) + ).rejects.toThrow(); }); it('should throw error for 429', async () => { nock('https://registry.npmjs.org').get('/foobar').reply(429); nock('https://registry.npmjs.org').get('/foobar').reply(429); - await expect(npm.getReleases({ lookupName: 'foobar' })).rejects.toThrow(); + await expect( + getPkgReleases({ datasource, depName: 'foobar' }) + ).rejects.toThrow(); }); it('should throw error for 5xx', async () => { nock('https://registry.npmjs.org').get('/foobar').reply(503); - await expect(npm.getReleases({ lookupName: 'foobar' })).rejects.toThrow( - Error(DATASOURCE_FAILURE) - ); + await expect( + getPkgReleases({ datasource, depName: 'foobar' }) + ).rejects.toThrow(Error(DATASOURCE_FAILURE)); }); it('should throw error for 408', async () => { nock('https://registry.npmjs.org').get('/foobar').reply(408); - await expect(npm.getReleases({ lookupName: 'foobar' })).rejects.toThrow( - Error(DATASOURCE_FAILURE) - ); + await expect( + getPkgReleases({ datasource, depName: 'foobar' }) + ).rejects.toThrow(Error(DATASOURCE_FAILURE)); }); it('should throw error for others', async () => { nock('https://registry.npmjs.org').get('/foobar').reply(451); - await expect(npm.getReleases({ lookupName: 'foobar' })).rejects.toThrow(); + await expect( + getPkgReleases({ datasource, depName: 'foobar' }) + ).rejects.toThrow(); }); it('should send an authorization header if provided', async () => { registryAuthToken.mockImplementation(() => ({ @@ -217,14 +224,14 @@ describe(getName(__filename), () => { token: '1234', })); nock('https://registry.npmjs.org').get('/foobar').reply(200, npmResponse); - const res = await npm.getReleases({ lookupName: 'foobar' }); + const res = await getPkgReleases({ datasource, depName: 'foobar' }); expect(res).toMatchSnapshot(); }); it('should use NPM_TOKEN if provided', async () => { nock('https://registry.npmjs.org').get('/foobar').reply(200, npmResponse); const oldToken = process.env.NPM_TOKEN; process.env.NPM_TOKEN = 'some-token'; - const res = await npm.getReleases({ lookupName: 'foobar' }); + const res = await getPkgReleases({ datasource, depName: 'foobar' }); process.env.NPM_TOKEN = oldToken; expect(res).toMatchSnapshot(); }); @@ -238,7 +245,7 @@ describe(getName(__filename), () => { .get('/foobar') .reply(200, npmResponse); const npmrc = 'registry=https://npm.mycustomregistry.com/'; - const res = await npm.getReleases({ lookupName: 'foobar', npmrc }); + const res = await getPkgReleases({ datasource, depName: 'foobar', npmrc }); expect(res).toMatchSnapshot(); }); it('should use host rules by baseUrl if provided', async () => { @@ -255,27 +262,27 @@ describe(getName(__filename), () => { .reply(200, npmResponse); const npmrc = 'registry=https://npm.mycustomregistry.com/_packaging/mycustomregistry/npm/registry/'; - const res = await npm.getReleases({ lookupName: 'foobar', npmrc }); + const res = await getPkgReleases({ datasource, depName: 'foobar', npmrc }); expect(res).toMatchSnapshot(); }); it('resets npmrc', () => { const npmrcContent = 'something=something'; - npm.setNpmrc(npmrcContent); - npm.setNpmrc(npmrcContent); - npm.setNpmrc(); - expect(npm.getNpmrc()).toBeNull(); + setNpmrc(npmrcContent); + setNpmrc(npmrcContent); + setNpmrc(); + expect(getNpmrc()).toBeNull(); }); it('should use default registry if missing from npmrc', async () => { nock('https://registry.npmjs.org').get('/foobar').reply(200, npmResponse); const npmrc = 'foo=bar'; - const res = await npm.getReleases({ lookupName: 'foobar', npmrc }); + const res = await getPkgReleases({ datasource, depName: 'foobar', npmrc }); expect(res).toMatchSnapshot(); }); it('should cache package info from npm', async () => { nock('https://registry.npmjs.org').get('/foobar').reply(200, npmResponse); const npmrc = '//registry.npmjs.org/:_authToken=abcdefghijklmnopqrstuvwxyz'; - const res1 = await npm.getReleases({ lookupName: 'foobar', npmrc }); - const res2 = await npm.getReleases({ lookupName: 'foobar', npmrc }); + const res1 = await getPkgReleases({ datasource, depName: 'foobar', npmrc }); + const res2 = await getPkgReleases({ datasource, depName: 'foobar', npmrc }); expect(res1).not.toBeNull(); expect(res1).toEqual(res2); }); @@ -286,7 +293,7 @@ describe(getName(__filename), () => { const npmrc = 'registry=https://npm.mycustomregistry.com/\n//npm.mycustomregistry.com/:_auth = ' + Buffer.from('abcdef').toString('base64'); - const res = await npm.getReleases({ lookupName: 'foobar', npmrc }); + const res = await getPkgReleases({ datasource, depName: 'foobar', npmrc }); expect(res).toMatchSnapshot(); }); it('should replace any environment variable in npmrc', async () => { @@ -298,13 +305,13 @@ describe(getName(__filename), () => { global.trustLevel = 'high'; // eslint-disable-next-line no-template-curly-in-string const npmrc = 'registry=${REGISTRY}'; - const res = await npm.getReleases({ lookupName: 'foobar', npmrc }); + const res = await getPkgReleases({ datasource, depName: 'foobar', npmrc }); expect(res).toMatchSnapshot(); }); it('should throw error if necessary env var is not present', () => { global.trustLevel = 'high'; // eslint-disable-next-line no-template-curly-in-string - expect(() => npm.setNpmrc('registry=${REGISTRY_MISSING}')).toThrow( + expect(() => setNpmrc('registry=${REGISTRY_MISSING}')).toThrow( Error('env-replace') ); }); diff --git a/lib/datasource/nuget/__snapshots__/index.spec.ts.snap b/lib/datasource/nuget/__snapshots__/index.spec.ts.snap index 730bf6e187ff088676a8dd2382b1d06b2e6863f0..7d4d8052d903c4615f54fe698de5cd5c97b9f89c 100644 --- a/lib/datasource/nuget/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/nuget/__snapshots__/index.spec.ts.snap @@ -107,133 +107,133 @@ Object { "pkgName": "nunit", "releases": Array [ Object { - "version": "3.11.0", + "version": "2.5.7.10213", }, Object { - "version": "2.7.0", + "version": "2.5.9.10348", }, Object { - "version": "2.6.7", + "version": "2.5.10.11092", }, Object { - "version": "2.6.6", + "version": "2.6.0.12051", }, Object { - "version": "2.6.5", + "version": "2.6.0.12054", }, Object { - "version": "3.10.1", + "version": "2.6.1", }, Object { - "version": "3.10.0", + "version": "2.6.2", }, Object { - "version": "3.9.0", + "version": "2.6.3", }, Object { - "version": "3.8.1", + "version": "2.6.4", }, Object { - "version": "3.8.0", + "version": "2.6.5", }, Object { - "version": "3.7.1", + "version": "2.6.6", }, Object { - "version": "3.7.0", + "version": "2.6.7", }, Object { - "version": "3.6.1", + "version": "2.7.0", }, Object { - "version": "3.6.0", + "version": "3.0.0-alpha", }, Object { - "version": "3.5.0", + "version": "3.0.0-alpha-2", }, Object { - "version": "3.4.1", + "version": "3.0.0-alpha-3", }, Object { - "version": "3.4.0", + "version": "3.0.0-alpha-4", }, Object { - "version": "3.2.1", + "version": "3.0.0-alpha-5", }, Object { - "version": "3.2.0", + "version": "3.0.0-beta-1", }, Object { - "version": "3.0.1", + "version": "3.0.0-beta-2", }, Object { - "version": "3.0.0", + "version": "3.0.0-beta-3", }, Object { - "version": "2.6.4", + "version": "3.0.0-beta-4", }, Object { - "version": "3.0.0-rc-3", + "version": "3.0.0-beta-5", }, Object { - "version": "3.0.0-rc-2", + "version": "3.0.0-rc", }, Object { - "version": "3.0.0-rc", + "version": "3.0.0-rc-2", }, Object { - "version": "3.0.0-beta-5", + "version": "3.0.0-rc-3", }, Object { - "version": "3.0.0-beta-4", + "version": "3.0.0", }, Object { - "version": "2.6.3", + "version": "3.0.1", }, Object { - "version": "2.6.2", + "version": "3.2.0", }, Object { - "version": "3.0.0-alpha", + "version": "3.2.1", }, Object { - "version": "2.6.0.12054", + "version": "3.4.0", }, Object { - "version": "2.6.1", + "version": "3.4.1", }, Object { - "version": "3.0.0-beta-2", + "version": "3.5.0", }, Object { - "version": "3.0.0-beta-3", + "version": "3.6.0", }, Object { - "version": "2.5.10.11092", + "version": "3.6.1", }, Object { - "version": "2.5.7.10213", + "version": "3.7.0", }, Object { - "version": "2.6.0.12051", + "version": "3.7.1", }, Object { - "version": "3.0.0-alpha-3", + "version": "3.8.0", }, Object { - "version": "3.0.0-beta-1", + "version": "3.8.1", }, Object { - "version": "3.0.0-alpha-4", + "version": "3.9.0", }, Object { - "version": "2.5.9.10348", + "version": "3.10.0", }, Object { - "version": "3.0.0-alpha-2", + "version": "3.10.1", }, Object { - "version": "3.0.0-alpha-5", + "version": "3.11.0", }, ], "sourceUrl": "https://github.com/nunit/nunit", @@ -612,133 +612,133 @@ Object { "pkgName": "nunit", "releases": Array [ Object { - "version": "3.11.0", + "version": "2.5.7.10213", }, Object { - "version": "2.7.0", + "version": "2.5.9.10348", }, Object { - "version": "2.6.7", + "version": "2.5.10.11092", }, Object { - "version": "2.6.6", + "version": "2.6.0.12051", }, Object { - "version": "2.6.5", + "version": "2.6.0.12054", }, Object { - "version": "3.10.1", + "version": "2.6.1", }, Object { - "version": "3.10.0", + "version": "2.6.2", }, Object { - "version": "3.9.0", + "version": "2.6.3", }, Object { - "version": "3.8.1", + "version": "2.6.4", }, Object { - "version": "3.8.0", + "version": "2.6.5", }, Object { - "version": "3.7.1", + "version": "2.6.6", }, Object { - "version": "3.7.0", + "version": "2.6.7", }, Object { - "version": "3.6.1", + "version": "2.7.0", }, Object { - "version": "3.6.0", + "version": "3.0.0-alpha", }, Object { - "version": "3.5.0", + "version": "3.0.0-alpha-2", }, Object { - "version": "3.4.1", + "version": "3.0.0-alpha-3", }, Object { - "version": "3.4.0", + "version": "3.0.0-alpha-4", }, Object { - "version": "3.2.1", + "version": "3.0.0-alpha-5", }, Object { - "version": "3.2.0", + "version": "3.0.0-beta-1", }, Object { - "version": "3.0.1", + "version": "3.0.0-beta-2", }, Object { - "version": "3.0.0", + "version": "3.0.0-beta-3", }, Object { - "version": "2.6.4", + "version": "3.0.0-beta-4", }, Object { - "version": "3.0.0-rc-3", + "version": "3.0.0-beta-5", }, Object { - "version": "3.0.0-rc-2", + "version": "3.0.0-rc", }, Object { - "version": "3.0.0-rc", + "version": "3.0.0-rc-2", }, Object { - "version": "3.0.0-beta-5", + "version": "3.0.0-rc-3", }, Object { - "version": "3.0.0-beta-4", + "version": "3.0.0", }, Object { - "version": "2.6.3", + "version": "3.0.1", }, Object { - "version": "2.6.2", + "version": "3.2.0", }, Object { - "version": "3.0.0-alpha", + "version": "3.2.1", }, Object { - "version": "2.6.0.12054", + "version": "3.4.0", }, Object { - "version": "2.6.1", + "version": "3.4.1", }, Object { - "version": "3.0.0-beta-2", + "version": "3.5.0", }, Object { - "version": "3.0.0-beta-3", + "version": "3.6.0", }, Object { - "version": "2.5.10.11092", + "version": "3.6.1", }, Object { - "version": "2.5.7.10213", + "version": "3.7.0", }, Object { - "version": "2.6.0.12051", + "version": "3.7.1", }, Object { - "version": "3.0.0-alpha-3", + "version": "3.8.0", }, Object { - "version": "3.0.0-beta-1", + "version": "3.8.1", }, Object { - "version": "3.0.0-alpha-4", + "version": "3.9.0", }, Object { - "version": "2.5.9.10348", + "version": "3.10.0", }, Object { - "version": "3.0.0-alpha-2", + "version": "3.10.1", }, Object { - "version": "3.0.0-alpha-5", + "version": "3.11.0", }, ], } diff --git a/lib/datasource/nuget/index.spec.ts b/lib/datasource/nuget/index.spec.ts index b39e391e20481baaa5f0229ba38eeabc16013317..fd27306f98570064f94a4358c3b21fa59998eac6 100644 --- a/lib/datasource/nuget/index.spec.ts +++ b/lib/datasource/nuget/index.spec.ts @@ -1,7 +1,9 @@ import fs from 'fs'; +import { getPkgReleases } from '..'; import * as httpMock from '../../../test/httpMock'; import * as _hostRules from '../../util/host-rules'; -import * as nuget from '.'; +import { id as versioning } from '../../versioning/nuget'; +import { id as datasource } from '.'; const hostRules: any = _hostRules; @@ -60,7 +62,9 @@ const nugetIndexV3 = fs.readFileSync( ); const configV3V2 = { - lookupName: 'nunit', + datasource, + versioning, + depName: 'nunit', registryUrls: [ 'https://api.nuget.org/v3/index.json', 'https://www.nuget.org/api/v2/', @@ -68,22 +72,30 @@ const configV3V2 = { }; const configV2 = { - lookupName: 'nunit', + datasource, + versioning, + depName: 'nunit', registryUrls: ['https://www.nuget.org/api/v2/'], }; const configV3 = { - lookupName: 'nunit', + datasource, + versioning, + depName: 'nunit', registryUrls: ['https://api.nuget.org/v3/index.json'], }; const configV3NotNugetOrg = { - lookupName: 'nunit', + datasource, + versioning, + depName: 'nunit', registryUrls: ['https://myprivatefeed/index.json'], }; const configV3Multiple = { - lookupName: 'nunit', + datasource, + versioning, + depName: 'nunit', registryUrls: [ 'https://api.nuget.org/v3/index.json', 'https://myprivatefeed/index.json', @@ -104,12 +116,14 @@ describe('datasource/nuget', () => { it(`can't detect nuget feed version`, async () => { const config = { - lookupName: 'nunit', + datasource, + versioning, + depName: 'nunit', registryUrls: ['#$#api.nuget.org/v3/index.xml'], }; expect( - await nuget.getReleases({ + await getPkgReleases({ ...config, }) ).toBeNull(); @@ -118,10 +132,12 @@ describe('datasource/nuget', () => { it('extracts feed version from registry URL hash', async () => { httpMock.scope('https://my-registry').get('/').reply(200); const config = { - lookupName: 'nunit', + datasource, + versioning, + depName: 'nunit', registryUrls: ['https://my-registry#protocolVersion=3'], }; - await nuget.getReleases({ + await getPkgReleases({ ...config, }); const trace = httpMock.getTrace(); @@ -139,7 +155,7 @@ describe('datasource/nuget', () => { .get('/query?q=PackageId:nunit&semVerLevel=2.0.0&prerelease=true') .reply(500); - const res = await nuget.getReleases({ + const res = await getPkgReleases({ ...configV3, }); @@ -156,7 +172,7 @@ describe('datasource/nuget', () => { .get('/query?q=PackageId:nunit&semVerLevel=2.0.0&prerelease=true') .reply(200, JSON.parse('{"totalHits": 0}')); - const res = await nuget.getReleases({ + const res = await getPkgReleases({ ...configV3, }); @@ -176,7 +192,7 @@ describe('datasource/nuget', () => { ) .reply(200, null); expect( - await nuget.getReleases({ + await getPkgReleases({ ...configV3V2, }) ).toBeNull(); @@ -190,7 +206,7 @@ describe('datasource/nuget', () => { ) .reply(200, {}); expect( - await nuget.getReleases({ + await getPkgReleases({ ...configV2, }) ).toBeNull(); @@ -201,7 +217,7 @@ describe('datasource/nuget', () => { .scope('https://api.nuget.org') .get('/v3/index.json') .reply(200, {}); - const res = await nuget.getReleases({ + const res = await getPkgReleases({ ...configV3, }); expect(res).toBeNull(); @@ -217,7 +233,7 @@ describe('datasource/nuget', () => { ) .reply(500); expect( - await nuget.getReleases({ + await getPkgReleases({ ...configV3V2, }) ).toBeNull(); @@ -226,7 +242,7 @@ describe('datasource/nuget', () => { it('returns null for non 200 (v3)', async () => { httpMock.scope('https://api.nuget.org').get('/v3/index.json').reply(500); expect( - await nuget.getReleases({ + await getPkgReleases({ ...configV3, }) ).toBeNull(); @@ -240,7 +256,7 @@ describe('datasource/nuget', () => { ) .reply(500); expect( - await nuget.getReleases({ + await getPkgReleases({ ...configV2, }) ).toBeNull(); @@ -259,7 +275,7 @@ describe('datasource/nuget', () => { ) .replyWithError(''); expect( - await nuget.getReleases({ + await getPkgReleases({ ...configV3V2, }) ).toBeNull(); @@ -283,7 +299,7 @@ describe('datasource/nuget', () => { .get('/index.json') .reply(200, JSON.parse(nugetIndexV3)); - const res = await nuget.getReleases({ + const res = await getPkgReleases({ ...configV3Multiple, }); expect(res).not.toBeNull(); @@ -297,7 +313,7 @@ describe('datasource/nuget', () => { .get('/v3/index.json') .replyWithError(''); expect( - await nuget.getReleases({ + await getPkgReleases({ ...configV3, }) ).toBeNull(); @@ -313,7 +329,7 @@ describe('datasource/nuget', () => { .get('/query?q=PackageId:nunit&semVerLevel=2.0.0&prerelease=true') .replyWithError(''); expect( - await nuget.getReleases({ + await getPkgReleases({ ...configV3, }) ).toBeNull(); @@ -327,7 +343,7 @@ describe('datasource/nuget', () => { ) .replyWithError(''); expect( - await nuget.getReleases({ + await getPkgReleases({ ...configV2, }) ).toBeNull(); @@ -344,7 +360,7 @@ describe('datasource/nuget', () => { .scope('https://api-v2v3search-0.nuget.org') .get('/query?q=PackageId:nunit&semVerLevel=2.0.0&prerelease=true') .reply(200, JSON.parse(pkgListV3)); - const res = await nuget.getReleases({ + const res = await getPkgReleases({ ...configV3, }); expect(res).not.toBeNull(); @@ -362,7 +378,7 @@ describe('datasource/nuget', () => { .get('/index.json') .reply(200, JSON.parse(nugetIndexV3)); - const res = await nuget.getReleases({ + const res = await getPkgReleases({ ...configV3NotNugetOrg, }); expect(res).not.toBeNull(); @@ -379,9 +395,11 @@ describe('datasource/nuget', () => { .scope('https://myprivatefeed') .get('/index.json') .reply(200, JSON.parse(nugetIndexV3)); - const res = await nuget.getReleases({ + const res = await getPkgReleases({ ...configV3NotNugetOrg, - lookupName: 'nun', + datasource, + versioning, + depName: 'nun', }); expect(res).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -395,7 +413,7 @@ describe('datasource/nuget', () => { .scope('https://myprivatefeed') .get('/index.json') .reply(200, JSON.parse(nugetIndexV3)); - const res = await nuget.getReleases({ + const res = await getPkgReleases({ ...configV3NotNugetOrg, }); expect(res).not.toBeNull(); @@ -412,7 +430,7 @@ describe('datasource/nuget', () => { .scope('https://myprivatefeed') .get('/index.json') .reply(200, JSON.parse(nugetIndexV3)); - const res = await nuget.getReleases({ + const res = await getPkgReleases({ ...configV3NotNugetOrg, }); expect(res).not.toBeNull(); @@ -426,7 +444,7 @@ describe('datasource/nuget', () => { '/api/v2//FindPackagesById()?id=%27nunit%27&$select=Version,IsLatestVersion,ProjectUrl' ) .reply(200, pkgListV2); - const res = await nuget.getReleases({ + const res = await getPkgReleases({ ...configV2, }); expect(res).not.toBeNull(); @@ -441,7 +459,7 @@ describe('datasource/nuget', () => { '/api/v2//FindPackagesById()?id=%27nunit%27&$select=Version,IsLatestVersion,ProjectUrl' ) .reply(200, pkgListV2NoRelease); - const res = await nuget.getReleases({ + const res = await getPkgReleases({ ...configV2, }); expect(res).toBeNull(); @@ -454,7 +472,7 @@ describe('datasource/nuget', () => { '/api/v2//FindPackagesById()?id=%27nunit%27&$select=Version,IsLatestVersion,ProjectUrl' ) .reply(200, pkgListV2WithoutProjectUrl); - const res = await nuget.getReleases({ + const res = await getPkgReleases({ ...configV2, }); expect(res).not.toBeNull(); @@ -469,7 +487,7 @@ describe('datasource/nuget', () => { '/api/v2//FindPackagesById()?id=%27nunit%27&$select=Version,IsLatestVersion,ProjectUrl' ) .reply(200, pkgListV2NoGitHubProjectUrl); - const res = await nuget.getReleases({ + const res = await getPkgReleases({ ...configV2, }); expect(res).not.toBeNull(); @@ -487,7 +505,7 @@ describe('datasource/nuget', () => { .scope('https://example.org') .get('/') .reply(200, pkgListV2Page2of2); - const res = await nuget.getReleases({ + const res = await getPkgReleases({ ...configV2, }); expect(res).not.toBeNull(); diff --git a/lib/datasource/orb/__snapshots__/index.spec.ts.snap b/lib/datasource/orb/__snapshots__/index.spec.ts.snap index fd44a5442d86385363d422612d136ac699264ef6..efeac7f74b2324bf7474a8baf64d5cc899643e02 100644 --- a/lib/datasource/orb/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/orb/__snapshots__/index.spec.ts.snap @@ -6,44 +6,44 @@ Object { "name": "hyper-expanse/library-release-workflows", "releases": Array [ Object { - "releaseTimestamp": "2018-12-13T23:19:09.356Z", - "version": "4.2.0", - }, - Object { - "releaseTimestamp": "2018-12-12T18:56:42.563Z", - "version": "4.1.6", + "releaseTimestamp": "2018-12-11T05:28:14.080Z", + "version": "3.0.0", }, Object { - "releaseTimestamp": "2018-12-12T17:13:31.542Z", - "version": "4.1.5", + "releaseTimestamp": "2018-12-11T17:41:26.595Z", + "version": "4.0.0", }, Object { - "releaseTimestamp": "2018-12-11T22:13:29.297Z", - "version": "4.1.4", + "releaseTimestamp": "2018-12-11T18:14:41.116Z", + "version": "4.1.0", }, Object { - "releaseTimestamp": "2018-12-11T21:40:44.870Z", - "version": "4.1.3", + "releaseTimestamp": "2018-12-11T18:24:13.119Z", + "version": "4.1.1", }, Object { "releaseTimestamp": "2018-12-11T21:28:37.846Z", "version": "4.1.2", }, Object { - "releaseTimestamp": "2018-12-11T18:24:13.119Z", - "version": "4.1.1", + "releaseTimestamp": "2018-12-11T21:40:44.870Z", + "version": "4.1.3", }, Object { - "releaseTimestamp": "2018-12-11T18:14:41.116Z", - "version": "4.1.0", + "releaseTimestamp": "2018-12-11T22:13:29.297Z", + "version": "4.1.4", }, Object { - "releaseTimestamp": "2018-12-11T17:41:26.595Z", - "version": "4.0.0", + "releaseTimestamp": "2018-12-12T17:13:31.542Z", + "version": "4.1.5", }, Object { - "releaseTimestamp": "2018-12-11T05:28:14.080Z", - "version": "3.0.0", + "releaseTimestamp": "2018-12-12T18:56:42.563Z", + "version": "4.1.6", + }, + Object { + "releaseTimestamp": "2018-12-13T23:19:09.356Z", + "version": "4.2.0", }, ], "versions": Object {}, @@ -88,44 +88,44 @@ Object { "name": "hyper-expanse/library-release-workflows", "releases": Array [ Object { - "releaseTimestamp": "2018-12-13T23:19:09.356Z", - "version": "4.2.0", - }, - Object { - "releaseTimestamp": "2018-12-12T18:56:42.563Z", - "version": "4.1.6", + "releaseTimestamp": "2018-12-11T05:28:14.080Z", + "version": "3.0.0", }, Object { - "releaseTimestamp": "2018-12-12T17:13:31.542Z", - "version": "4.1.5", + "releaseTimestamp": "2018-12-11T17:41:26.595Z", + "version": "4.0.0", }, Object { - "releaseTimestamp": "2018-12-11T22:13:29.297Z", - "version": "4.1.4", + "releaseTimestamp": "2018-12-11T18:14:41.116Z", + "version": "4.1.0", }, Object { - "releaseTimestamp": "2018-12-11T21:40:44.870Z", - "version": "4.1.3", + "releaseTimestamp": "2018-12-11T18:24:13.119Z", + "version": "4.1.1", }, Object { "releaseTimestamp": "2018-12-11T21:28:37.846Z", "version": "4.1.2", }, Object { - "releaseTimestamp": "2018-12-11T18:24:13.119Z", - "version": "4.1.1", + "releaseTimestamp": "2018-12-11T21:40:44.870Z", + "version": "4.1.3", }, Object { - "releaseTimestamp": "2018-12-11T18:14:41.116Z", - "version": "4.1.0", + "releaseTimestamp": "2018-12-11T22:13:29.297Z", + "version": "4.1.4", }, Object { - "releaseTimestamp": "2018-12-11T17:41:26.595Z", - "version": "4.0.0", + "releaseTimestamp": "2018-12-12T17:13:31.542Z", + "version": "4.1.5", }, Object { - "releaseTimestamp": "2018-12-11T05:28:14.080Z", - "version": "3.0.0", + "releaseTimestamp": "2018-12-12T18:56:42.563Z", + "version": "4.1.6", + }, + Object { + "releaseTimestamp": "2018-12-13T23:19:09.356Z", + "version": "4.2.0", }, ], "versions": Object {}, diff --git a/lib/datasource/orb/index.spec.ts b/lib/datasource/orb/index.spec.ts index 7e173785f1bbb8074ef3cfd0299482bcca5120ff..028a0d104fcaa155ea2e6c669e77210abc05d1ef 100644 --- a/lib/datasource/orb/index.spec.ts +++ b/lib/datasource/orb/index.spec.ts @@ -1,5 +1,6 @@ +import { getPkgReleases } from '..'; import * as httpMock from '../../../test/httpMock'; -import * as datasource from '.'; +import { id as datasource } from '.'; const orbData = { data: { @@ -38,8 +39,9 @@ describe('datasource/orb', () => { it('returns null for empty result', async () => { httpMock.scope(baseUrl).post('/graphql-unstable').reply(200, {}); expect( - await datasource.getReleases({ - lookupName: 'hyper-expanse/library-release-workflows', + await getPkgReleases({ + datasource, + depName: 'hyper-expanse/library-release-workflows', }) ).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -50,8 +52,9 @@ describe('datasource/orb', () => { .post('/graphql-unstable') .reply(200, { data: {} }); expect( - await datasource.getReleases({ - lookupName: 'hyper-expanse/library-release-wonkflows', + await getPkgReleases({ + datasource, + depName: 'hyper-expanse/library-release-wonkflows', }) ).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -59,8 +62,9 @@ describe('datasource/orb', () => { it('returns null for 404', async () => { httpMock.scope(baseUrl).post('/graphql-unstable').reply(404); expect( - await datasource.getReleases({ - lookupName: 'hyper-expanse/library-release-workflows', + await getPkgReleases({ + datasource, + depName: 'hyper-expanse/library-release-workflows', }) ).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -68,16 +72,18 @@ describe('datasource/orb', () => { it('returns null for unknown error', async () => { httpMock.scope(baseUrl).post('/graphql-unstable').replyWithError(''); expect( - await datasource.getReleases({ - lookupName: 'hyper-expanse/library-release-workflows', + await getPkgReleases({ + datasource, + depName: 'hyper-expanse/library-release-workflows', }) ).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); }); it('processes real data', async () => { httpMock.scope(baseUrl).post('/graphql-unstable').reply(200, orbData); - const res = await datasource.getReleases({ - lookupName: 'hyper-expanse/library-release-workflows', + const res = await getPkgReleases({ + datasource, + depName: 'hyper-expanse/library-release-workflows', }); expect(res).toMatchSnapshot(); expect(res).not.toBeNull(); @@ -86,8 +92,9 @@ describe('datasource/orb', () => { it('processes homeUrl', async () => { orbData.data.orb.homeUrl = 'https://google.com'; httpMock.scope(baseUrl).post('/graphql-unstable').reply(200, orbData); - const res = await datasource.getReleases({ - lookupName: 'hyper-expanse/library-release-workflows', + const res = await getPkgReleases({ + datasource, + depName: 'hyper-expanse/library-release-workflows', }); expect(res).toMatchSnapshot(); expect(res.homepage).toEqual('https://google.com'); diff --git a/lib/datasource/packagist/__snapshots__/index.spec.ts.snap b/lib/datasource/packagist/__snapshots__/index.spec.ts.snap index fd5e7a8af7b5f0874e87716867b336e136067c4b..04058857c4c499aa66c185da58dd6cad031e27d8 100644 --- a/lib/datasource/packagist/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/packagist/__snapshots__/index.spec.ts.snap @@ -2,24 +2,8 @@ exports[`datasource/packagist getReleases adds packagist source implicitly 1`] = ` Object { - "homepage": "https://github.com/drewm/mailchimp-api", "name": "drewm/mailchimp-api", "releases": Array [ - Object { - "gitRef": "dev-api-v2", - "releaseTimestamp": "2016-01-17T15:57:27+00:00", - "version": "dev-api-v2", - }, - Object { - "gitRef": "dev-api-v3", - "releaseTimestamp": "2016-01-17T15:59:26+00:00", - "version": "dev-api-v3", - }, - Object { - "gitRef": "dev-master", - "releaseTimestamp": "2018-02-23T09:45:38+00:00", - "version": "dev-master", - }, Object { "gitRef": "v1.0", "releaseTimestamp": "2014-05-30T16:51:39+00:00", @@ -96,7 +80,7 @@ Object { "version": "2.5", }, ], - "sourceUrl": "https://github.com/drewm/mailchimp-api.git", + "sourceUrl": "https://github.com/drewm/mailchimp-api", } `; @@ -252,24 +236,8 @@ Array [ exports[`datasource/packagist getReleases processes real versioned data 1`] = ` Object { - "homepage": "https://github.com/drewm/mailchimp-api", "name": "drewm/mailchimp-api", "releases": Array [ - Object { - "gitRef": "dev-api-v2", - "releaseTimestamp": "2016-01-17T15:57:27+00:00", - "version": "dev-api-v2", - }, - Object { - "gitRef": "dev-api-v3", - "releaseTimestamp": "2016-01-17T15:59:26+00:00", - "version": "dev-api-v3", - }, - Object { - "gitRef": "dev-master", - "releaseTimestamp": "2018-02-23T09:45:38+00:00", - "version": "dev-master", - }, Object { "gitRef": "v1.0", "releaseTimestamp": "2014-05-30T16:51:39+00:00", @@ -346,7 +314,7 @@ Object { "version": "2.5", }, ], - "sourceUrl": "https://github.com/drewm/mailchimp-api.git", + "sourceUrl": "https://github.com/drewm/mailchimp-api", } `; @@ -506,7 +474,7 @@ Object { "version": "3.8.1", }, ], - "sourceUrl": "https://github.com/guzzle/guzzle.git", + "sourceUrl": "https://github.com/guzzle/guzzle", } `; @@ -539,27 +507,18 @@ Array [ exports[`datasource/packagist getReleases supports plain packages 1`] = ` Object { - "homepage": undefined, "name": "vendor/package-name", "releases": Array [ Object { - "gitRef": "dev-master", - "releaseTimestamp": undefined, - "version": "dev-master", + "gitRef": "0.0.1", + "version": "0.0.1", }, Object { "gitRef": "1.0.x-dev", - "releaseTimestamp": undefined, "version": "1.0.x-dev", }, - Object { - "gitRef": "0.0.1", - "releaseTimestamp": undefined, - "version": "0.0.1", - }, Object { "gitRef": "1.0.0", - "releaseTimestamp": undefined, "version": "1.0.0", }, ], @@ -588,34 +547,24 @@ Object { "releases": Array [ Object { "gitRef": "1.0", - "releaseTimestamp": undefined, "version": "1.0", }, Object { "gitRef": "1.1", - "releaseTimestamp": undefined, "version": "1.1", }, Object { "gitRef": "1.4", - "releaseTimestamp": undefined, "version": "1.4", }, Object { "gitRef": "1.5", - "releaseTimestamp": undefined, "version": "1.5", }, Object { "gitRef": "1.5.1", - "releaseTimestamp": undefined, "version": "1.5.1", }, - Object { - "gitRef": "dev-trunk", - "releaseTimestamp": "2018-09-03 21:31:30", - "version": "dev-trunk", - }, ], "sourceUrl": "https://plugins.svn.wordpress.org/1beyt/", } @@ -663,34 +612,24 @@ Object { "releases": Array [ Object { "gitRef": "1.0", - "releaseTimestamp": undefined, "version": "1.0", }, Object { "gitRef": "1.1", - "releaseTimestamp": undefined, "version": "1.1", }, Object { "gitRef": "1.4", - "releaseTimestamp": undefined, "version": "1.4", }, Object { "gitRef": "1.5", - "releaseTimestamp": undefined, "version": "1.5", }, Object { "gitRef": "1.5.1", - "releaseTimestamp": undefined, "version": "1.5.1", }, - Object { - "gitRef": "dev-trunk", - "releaseTimestamp": "2018-09-03 21:31:30", - "version": "dev-trunk", - }, ], "sourceUrl": "https://plugins.svn.wordpress.org/1beyt/", } diff --git a/lib/datasource/packagist/index.spec.ts b/lib/datasource/packagist/index.spec.ts index a1cef7d2c1194f6de1032b51b51840080a56113b..96a931bf8c9e80562aa4a2f0d95f2cf98e841ee1 100644 --- a/lib/datasource/packagist/index.spec.ts +++ b/lib/datasource/packagist/index.spec.ts @@ -1,8 +1,10 @@ import fs from 'fs'; +import { getPkgReleases } from '..'; import * as httpMock from '../../../test/httpMock'; import * as _hostRules from '../../util/host-rules'; import * as composerVersioning from '../../versioning/composer'; -import * as packagist from '.'; +import { id as versioning } from '../../versioning/loose'; +import { id as datasource } from '.'; jest.mock('../../util/host-rules'); @@ -45,9 +47,11 @@ describe('datasource/packagist', () => { config = { registryUrls: ['https://composer.renovatebot.com'], }; - const res = await packagist.getReleases({ + const res = await getPkgReleases({ ...config, - lookupName: 'something/one', + datasource, + versioning, + depName: 'something/one', }); expect(res).toBeNull(); }); @@ -66,9 +70,11 @@ describe('datasource/packagist', () => { .scope('https://composer.renovatebot.com') .get('/packages.json') .reply(200, packagesOnly); - const res = await packagist.getReleases({ + const res = await getPkgReleases({ ...config, - lookupName: 'vendor/package-name', + datasource, + versioning, + depName: 'vendor/package-name', }); expect(res).toMatchSnapshot(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -79,9 +85,11 @@ describe('datasource/packagist', () => { .get('/packages.json') .replyWithError({ code: 'ETIMEDOUT' }); httpMock.scope(baseUrl).get('/p/vendor/package-name2.json').reply(200); - const res = await packagist.getReleases({ + const res = await getPkgReleases({ ...config, - lookupName: 'vendor/package-name2', + datasource, + versioning, + depName: 'vendor/package-name2', }); expect(res).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -92,9 +100,11 @@ describe('datasource/packagist', () => { .get('/packages.json') .reply(403); httpMock.scope(baseUrl).get('/p/vendor/package-name.json').reply(200); - const res = await packagist.getReleases({ + const res = await getPkgReleases({ ...config, - lookupName: 'vendor/package-name', + datasource, + versioning, + depName: 'vendor/package-name', }); expect(res).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -105,9 +115,11 @@ describe('datasource/packagist', () => { .get('/packages.json') .reply(404); httpMock.scope(baseUrl).get('/p/drewm/mailchip-api.json').reply(200); - const res = await packagist.getReleases({ + const res = await getPkgReleases({ ...config, - lookupName: 'drewm/mailchip-api', + datasource, + versioning, + depName: 'drewm/mailchip-api', }); expect(res).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -131,9 +143,11 @@ describe('datasource/packagist', () => { .reply(200, packagesJson) .get('/include/all$afbf74d51f31c7cbb5ff10304f9290bfb4f4e68b.json') .reply(200, JSON.parse(includesJson)); - const res = await packagist.getReleases({ + const res = await getPkgReleases({ ...config, - lookupName: 'guzzlehttp/guzzle', + datasource, + versioning, + depName: 'guzzlehttp/guzzle', }); expect(res).toMatchSnapshot(); expect(res).not.toBeNull(); @@ -174,9 +188,11 @@ describe('datasource/packagist', () => { '/p/wpackagist-plugin/1beyt$b574a802b5bf20a58c0f027e73aea2a75d23a6f654afc298a8dc467331be316a.json' ) .reply(200, JSON.parse(beytJson)); - const res = await packagist.getReleases({ + const res = await getPkgReleases({ ...config, - lookupName: 'wpackagist-plugin/1beyt', + datasource, + versioning, + depName: 'wpackagist-plugin/1beyt', }); expect(res).toMatchSnapshot(); expect(res).not.toBeNull(); @@ -217,9 +233,11 @@ describe('datasource/packagist', () => { .scope(baseUrl) .get('/p/some/other.json') .reply(200, JSON.parse(beytJson)); - const res = await packagist.getReleases({ + const res = await getPkgReleases({ ...config, - lookupName: 'some/other', + datasource, + versioning, + depName: 'some/other', }); expect(res).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -247,9 +265,11 @@ describe('datasource/packagist', () => { '/p/wpackagist-plugin/1beyt$b574a802b5bf20a58c0f027e73aea2a75d23a6f654afc298a8dc467331be316a.json' ) .reply(200, JSON.parse(beytJson)); - const res = await packagist.getReleases({ + const res = await getPkgReleases({ ...config, - lookupName: 'wpackagist-plugin/1beyt', + datasource, + versioning, + depName: 'wpackagist-plugin/1beyt', }); expect(res).toMatchSnapshot(); expect(res).not.toBeNull(); @@ -278,9 +298,11 @@ describe('datasource/packagist', () => { .scope(baseUrl) .get('/p/some/other.json') .reply(200, JSON.parse(beytJson)); - const res = await packagist.getReleases({ + const res = await getPkgReleases({ ...config, - lookupName: 'some/other', + datasource, + versioning, + depName: 'some/other', }); expect(res).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -292,9 +314,11 @@ describe('datasource/packagist', () => { .reply(200, JSON.parse(mailchimpJson)); config.registryUrls = ['https://packagist.org']; expect( - await packagist.getReleases({ + await getPkgReleases({ ...config, - lookupName: 'drewm/mailchimp-api', + datasource, + versioning, + depName: 'drewm/mailchimp-api', }) ).toMatchSnapshot(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -306,9 +330,11 @@ describe('datasource/packagist', () => { .reply(200, JSON.parse(mailchimpJson)); config.registryUrls = []; expect( - await packagist.getReleases({ + await getPkgReleases({ ...config, - lookupName: 'drewm/mailchimp-api', + datasource, + versioning, + depName: 'drewm/mailchimp-api', }) ).toMatchSnapshot(); expect(httpMock.getTrace()).toMatchSnapshot(); diff --git a/lib/datasource/pypi/__snapshots__/index.spec.ts.snap b/lib/datasource/pypi/__snapshots__/index.spec.ts.snap index 70ac7523c9dba623ab5116c871ed130f5979bc8f..9c8ea62c2cba72c10050fa4fea9d63177d16d490 100644 --- a/lib/datasource/pypi/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/pypi/__snapshots__/index.spec.ts.snap @@ -158,32 +158,11 @@ Array [ exports[`datasource/pypi getReleases processes real data 1`] = ` Object { - "homepage": "https://github.com/Azure/azure-cli", "releases": Array [ Object { "releaseTimestamp": "2017-04-03T16:55:14", "version": "0.0.1", }, - Object { - "releaseTimestamp": "2017-09-22T23:47:59", - "version": "0.0.10", - }, - Object { - "releaseTimestamp": "2017-10-24T02:14:07", - "version": "0.0.11", - }, - Object { - "releaseTimestamp": "2017-11-14T18:31:57", - "version": "0.0.12", - }, - Object { - "releaseTimestamp": "2017-12-05T18:57:54", - "version": "0.0.13", - }, - Object { - "releaseTimestamp": "2018-01-05T21:26:03", - "version": "0.0.14", - }, Object { "releaseTimestamp": "2017-04-17T20:32:30", "version": "0.0.2", @@ -216,6 +195,26 @@ Object { "releaseTimestamp": "2017-08-28T20:14:33", "version": "0.0.9", }, + Object { + "releaseTimestamp": "2017-09-22T23:47:59", + "version": "0.0.10", + }, + Object { + "releaseTimestamp": "2017-10-24T02:14:07", + "version": "0.0.11", + }, + Object { + "releaseTimestamp": "2017-11-14T18:31:57", + "version": "0.0.12", + }, + Object { + "releaseTimestamp": "2017-12-05T18:57:54", + "version": "0.0.13", + }, + Object { + "releaseTimestamp": "2018-01-05T21:26:03", + "version": "0.0.14", + }, Object { "releaseTimestamp": "2018-01-17T18:36:39", "version": "0.1.0", @@ -272,16 +271,13 @@ exports[`datasource/pypi getReleases respects compatibility 1`] = ` Object { "releases": Array [ Object { - "releaseTimestamp": undefined, - "version": "0.30.3", + "version": "0.4.0", }, Object { - "releaseTimestamp": undefined, - "version": "0.31.0", + "version": "0.30.3", }, Object { - "releaseTimestamp": undefined, - "version": "0.4.0", + "version": "0.31.0", }, ], } diff --git a/lib/datasource/pypi/index.spec.ts b/lib/datasource/pypi/index.spec.ts index 87638f5f872a8adf5d21dea8f035d24484260de3..98ae67e1d5b82bdc641c3938fde789a9073f479e 100644 --- a/lib/datasource/pypi/index.spec.ts +++ b/lib/datasource/pypi/index.spec.ts @@ -1,6 +1,7 @@ import fs from 'fs'; +import { getPkgReleases } from '..'; import * as httpMock from '../../../test/httpMock'; -import * as pypi from '.'; +import { id as datasource } from '.'; const res1: any = fs.readFileSync( 'lib/datasource/pypi/__fixtures__/azure-cli-monitor.json' @@ -36,8 +37,9 @@ describe('datasource/pypi', () => { it('returns null for empty result', async () => { httpMock.scope(baseUrl).get('/something/json').reply(200); expect( - await pypi.getReleases({ - lookupName: 'something', + await getPkgReleases({ + datasource, + depName: 'something', }) ).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -45,8 +47,9 @@ describe('datasource/pypi', () => { it('returns null for 404', async () => { httpMock.scope(baseUrl).get('/something/json').reply(404); expect( - await pypi.getReleases({ - lookupName: 'something', + await getPkgReleases({ + datasource, + depName: 'something', }) ).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -57,8 +60,9 @@ describe('datasource/pypi', () => { .get('/azure-cli-monitor/json') .reply(200, JSON.parse(res1)); expect( - await pypi.getReleases({ - lookupName: 'azure-cli-monitor', + await getPkgReleases({ + datasource, + depName: 'azure-cli-monitor', }) ).toMatchSnapshot(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -71,9 +75,10 @@ describe('datasource/pypi', () => { const config = { registryUrls: ['https://custom.pypi.net/foo'], }; - await pypi.getReleases({ + await getPkgReleases({ ...config, - lookupName: 'azure-cli-monitor', + datasource, + depName: 'azure-cli-monitor', }); expect(httpMock.getTrace()).toMatchSnapshot(); }); @@ -84,8 +89,9 @@ describe('datasource/pypi', () => { .reply(200, JSON.parse(res1)); const pipIndexUrl = process.env.PIP_INDEX_URL; process.env.PIP_INDEX_URL = 'https://my.pypi.python/pypi/'; - await pypi.getReleases({ - lookupName: 'azure-cli-monitor', + await getPkgReleases({ + datasource, + depName: 'azure-cli-monitor', }); expect(httpMock.getTrace()).toMatchSnapshot(); process.env.PIP_INDEX_URL = pipIndexUrl; @@ -106,9 +112,10 @@ describe('datasource/pypi', () => { 'https://third-index/foo', ], }; - await pypi.getReleases({ + await getPkgReleases({ ...config, - lookupName: 'azure-cli-monitor', + datasource, + depName: 'azure-cli-monitor', }); expect(httpMock.getTrace()).toMatchSnapshot(); }); @@ -123,8 +130,9 @@ describe('datasource/pypi', () => { }, }); expect( - await pypi.getReleases({ - lookupName: 'something', + await getPkgReleases({ + datasource, + depName: 'something', }) ).toMatchSnapshot(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -142,8 +150,9 @@ describe('datasource/pypi', () => { }, }; httpMock.scope(baseUrl).get('/flexget/json').reply(200, { info }); - const result = await pypi.getReleases({ - lookupName: 'flexget', + const result = await getPkgReleases({ + datasource, + depName: 'flexget', }); expect(result.sourceUrl).toBe(info.project_urls.Repository); expect(result.changelogUrl).toBe(info.project_urls.changelog); @@ -161,8 +170,9 @@ describe('datasource/pypi', () => { }, }); expect( - await pypi.getReleases({ - lookupName: 'something', + await getPkgReleases({ + datasource, + depName: 'something', }) ).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -187,9 +197,10 @@ describe('datasource/pypi', () => { }, }); expect( - await pypi.getReleases({ + await getPkgReleases({ + datasource, compatibility: { python: '2.7' }, - lookupName: 'doit', + depName: 'doit', }) ).toMatchSnapshot(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -203,10 +214,11 @@ describe('datasource/pypi', () => { registryUrls: ['https://pypi.org/simple/'], }; expect( - await pypi.getReleases({ + await getPkgReleases({ + datasource, ...config, compatibility: { python: '2.7' }, - lookupName: 'dj-database-url', + depName: 'dj-database-url', }) ).toMatchSnapshot(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -220,10 +232,11 @@ describe('datasource/pypi', () => { registryUrls: ['https://some.registry.org/+simple/'], }; expect( - await pypi.getReleases({ + await getPkgReleases({ + datasource, ...config, compatibility: { python: '2.7' }, - lookupName: 'dj-database-url', + depName: 'dj-database-url', }) ).toMatchSnapshot(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -237,10 +250,11 @@ describe('datasource/pypi', () => { registryUrls: ['https://pypi.org/simple/'], }; expect( - await pypi.getReleases({ + await getPkgReleases({ + datasource, ...config, compatibility: { python: '2.7' }, - lookupName: 'image-collector', + depName: 'image-collector', }) ).toMatchSnapshot(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -254,10 +268,11 @@ describe('datasource/pypi', () => { registryUrls: ['https://pypi.org/simple/'], }; expect( - await pypi.getReleases({ + await getPkgReleases({ + datasource, ...config, compatibility: { python: '2.7' }, - lookupName: 'dj-database-url', + depName: 'dj-database-url', }) ).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -271,10 +286,11 @@ describe('datasource/pypi', () => { registryUrls: ['https://pypi.org/simple/'], }; expect( - await pypi.getReleases({ + await getPkgReleases({ + datasource, ...config, compatibility: { python: '2.7' }, - lookupName: 'dj-database-url', + depName: 'dj-database-url', }) ).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -288,10 +304,11 @@ describe('datasource/pypi', () => { registryUrls: ['https://pypi.org/simple/'], }; expect( - await pypi.getReleases({ + await getPkgReleases({ + datasource, ...config, compatibility: { python: '2.7' }, - lookupName: 'dj-database-url', + depName: 'dj-database-url', }) ).toEqual({ releases: [] }); }); diff --git a/lib/datasource/repology/index.spec.ts b/lib/datasource/repology/index.spec.ts index e94ec4d9f6ef17ec1ea4d1f6371714f059fe246c..56b34cdcab70861aa23dc2c8c6c66ea00eb63781 100644 --- a/lib/datasource/repology/index.spec.ts +++ b/lib/datasource/repology/index.spec.ts @@ -1,9 +1,10 @@ import fs from 'fs'; +import { getPkgReleases } from '..'; import * as httpMock from '../../../test/httpMock'; import { getName } from '../../../test/util'; import { DATASOURCE_FAILURE } from '../../constants/error-messages'; -import * as ds from '.'; -import { RepologyPackage } from '.'; +import { id as versioning } from '../../versioning/loose'; +import { RepologyPackage, id as datasource } from '.'; const repologyApiHost = 'https://repology.org/'; @@ -72,7 +73,11 @@ describe(getName(__filename), () => { ); expect( - await ds.getReleases({ lookupName: 'debian_stable/nginx' }) + await getPkgReleases({ + datasource, + versioning, + depName: 'debian_stable/nginx', + }) ).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); }); @@ -86,7 +91,11 @@ describe(getName(__filename), () => { ); expect( - await ds.getReleases({ lookupName: 'this_should/never-exist' }) + await getPkgReleases({ + datasource, + versioning, + depName: 'this_should/never-exist', + }) ).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); }); @@ -100,7 +109,11 @@ describe(getName(__filename), () => { ); expect( - await ds.getReleases({ lookupName: 'unsupported_repo/nginx' }) + await getPkgReleases({ + datasource, + versioning, + depName: 'unsupported_repo/nginx', + }) ).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); }); @@ -109,7 +122,11 @@ describe(getName(__filename), () => { mockProjectBy('debian_stable', 'nginx', { status: 500 }, null); await expect( - ds.getReleases({ lookupName: 'debian_stable/nginx' }) + getPkgReleases({ + datasource, + versioning, + depName: 'debian_stable/nginx', + }) ).rejects.toThrow(DATASOURCE_FAILURE); expect(httpMock.getTrace()).toMatchSnapshot(); }); @@ -118,14 +135,22 @@ describe(getName(__filename), () => { mockProjectBy('debian_stable', 'nginx', { status: 404 }, { status: 500 }); await expect( - ds.getReleases({ lookupName: 'debian_stable/nginx' }) + getPkgReleases({ + datasource, + versioning, + depName: 'debian_stable/nginx', + }) ).rejects.toThrow(DATASOURCE_FAILURE); expect(httpMock.getTrace()).toMatchSnapshot(); }); it('throws without repository and package name', async () => { await expect( - ds.getReleases({ lookupName: 'invalid-lookup-name' }) + getPkgReleases({ + datasource, + versioning, + depName: 'invalid-lookup-name', + }) ).rejects.toThrow(DATASOURCE_FAILURE); expect(httpMock.getTrace()).toMatchSnapshot(); }); @@ -138,7 +163,11 @@ describe(getName(__filename), () => { null ); - const res = await ds.getReleases({ lookupName: 'debian_stable/nginx' }); + const res = await getPkgReleases({ + datasource, + versioning, + depName: 'debian_stable/nginx', + }); expect(res).toMatchSnapshot(); expect(res.releases).toHaveLength(1); expect(res.releases[0].version).toEqual('1.14.2-2+deb10u1'); @@ -153,8 +182,10 @@ describe(getName(__filename), () => { { status: 200, body: fixtureGccDefaults } ); - const res = await ds.getReleases({ - lookupName: 'debian_stable/gcc-defaults', + const res = await getPkgReleases({ + datasource, + versioning, + depName: 'debian_stable/gcc-defaults', }); expect(res).toMatchSnapshot(); expect(res.releases).toHaveLength(1); @@ -170,7 +201,11 @@ describe(getName(__filename), () => { null ); - const res = await ds.getReleases({ lookupName: 'alpine_3_12/gcc' }); + const res = await getPkgReleases({ + datasource, + versioning, + depName: 'alpine_3_12/gcc', + }); expect(res).toMatchSnapshot(); expect(res.releases).toHaveLength(1); expect(res.releases[0].version).toEqual('9.3.0-r2'); @@ -185,8 +220,10 @@ describe(getName(__filename), () => { null ); - const res = await ds.getReleases({ - lookupName: 'debian_stable/pulseaudio-utils', + const res = await getPkgReleases({ + datasource, + versioning, + depName: 'debian_stable/pulseaudio-utils', }); expect(res).toMatchSnapshot(); expect(res.releases).toHaveLength(1); @@ -208,7 +245,13 @@ describe(getName(__filename), () => { { status: 200, body: pkgsJSON } ); - expect(await ds.getReleases({ lookupName: 'dummy/example' })).toBeNull(); + expect( + await getPkgReleases({ + datasource, + versioning, + depName: 'dummy/example', + }) + ).toBeNull(); }); }); }); diff --git a/lib/datasource/terraform-module/index.spec.ts b/lib/datasource/terraform-module/index.spec.ts index 4d9b4db72d9a2a84c49835799efeada5d2c6bc69..df5e7c7b6c29fc68cabedbe1efef37d03cdfb64f 100644 --- a/lib/datasource/terraform-module/index.spec.ts +++ b/lib/datasource/terraform-module/index.spec.ts @@ -1,6 +1,7 @@ import fs from 'fs'; +import { getPkgReleases } from '..'; import * as httpMock from '../../../test/httpMock'; -import * as terraform from '.'; +import { id as datasource } from '.'; const consulData: any = fs.readFileSync( 'lib/datasource/terraform-module/__fixtures__/registry-consul.json' @@ -25,8 +26,9 @@ describe('datasource/terraform-module', () => { .get('/v1/modules/hashicorp/consul/aws') .reply(200, {}); expect( - await terraform.getReleases({ - lookupName: 'hashicorp/consul/aws', + await getPkgReleases({ + datasource, + depName: 'hashicorp/consul/aws', }) ).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -37,8 +39,9 @@ describe('datasource/terraform-module', () => { .get('/v1/modules/hashicorp/consul/aws') .reply(404, {}); expect( - await terraform.getReleases({ - lookupName: 'hashicorp/consul/aws', + await getPkgReleases({ + datasource, + depName: 'hashicorp/consul/aws', }) ).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -49,8 +52,9 @@ describe('datasource/terraform-module', () => { .get('/v1/modules/hashicorp/consul/aws') .replyWithError(''); expect( - await terraform.getReleases({ - lookupName: 'hashicorp/consul/aws', + await getPkgReleases({ + datasource, + depName: 'hashicorp/consul/aws', }) ).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -60,8 +64,9 @@ describe('datasource/terraform-module', () => { .scope(baseUrl) .get('/v1/modules/hashicorp/consul/aws') .reply(200, consulData); - const res = await terraform.getReleases({ - lookupName: 'hashicorp/consul/aws', + const res = await getPkgReleases({ + datasource, + depName: 'hashicorp/consul/aws', }); expect(res).toMatchSnapshot(); expect(res).not.toBeNull(); @@ -72,8 +77,9 @@ describe('datasource/terraform-module', () => { .scope(baseUrl) .get('/v1/modules/hashicorp/consul/aws') .reply(200, consulData); - const res = await terraform.getReleases({ - lookupName: 'registry.terraform.io/hashicorp/consul/aws', + const res = await getPkgReleases({ + datasource, + depName: 'registry.terraform.io/hashicorp/consul/aws', }); expect(res).toMatchSnapshot(); expect(res).not.toBeNull(); @@ -84,8 +90,9 @@ describe('datasource/terraform-module', () => { .scope('https://terraform.company.com') .get('/v1/modules/consul/foo') .reply(200, consulData); - const res = await terraform.getReleases({ - lookupName: 'consul/foo', + const res = await getPkgReleases({ + datasource, + depName: 'consul/foo', registryUrls: ['https://terraform.company.com'], }); expect(res).toBeNull(); diff --git a/lib/datasource/terraform-provider/index.spec.ts b/lib/datasource/terraform-provider/index.spec.ts index f730f0de25340bc79c2ee1fb0731a0cb7b521dde..4456859da2a7d8116a06698f56b21c29fd3791ce 100644 --- a/lib/datasource/terraform-provider/index.spec.ts +++ b/lib/datasource/terraform-provider/index.spec.ts @@ -1,6 +1,7 @@ import fs from 'fs'; +import { getPkgReleases } from '..'; import * as httpMock from '../../../test/httpMock'; -import * as terraformProvider from '.'; +import { id as datasource } from '.'; const consulData: any = fs.readFileSync( 'lib/datasource/terraform-provider/__fixtures__/azurerm-provider.json' @@ -25,8 +26,9 @@ describe('datasource/terraform', () => { .get('/v1/providers/hashicorp/azurerm') .reply(200, {}); expect( - await terraformProvider.getReleases({ - lookupName: 'azurerm', + await getPkgReleases({ + datasource, + depName: 'azurerm', }) ).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -34,8 +36,9 @@ describe('datasource/terraform', () => { it('returns null for 404', async () => { httpMock.scope(baseUrl).get('/v1/providers/hashicorp/azurerm').reply(404); expect( - await terraformProvider.getReleases({ - lookupName: 'azurerm', + await getPkgReleases({ + datasource, + depName: 'azurerm', }) ).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -46,8 +49,9 @@ describe('datasource/terraform', () => { .get('/v1/providers/hashicorp/azurerm') .replyWithError(''); expect( - await terraformProvider.getReleases({ - lookupName: 'azurerm', + await getPkgReleases({ + datasource, + depName: 'azurerm', }) ).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); @@ -57,8 +61,9 @@ describe('datasource/terraform', () => { .scope(baseUrl) .get('/v1/providers/hashicorp/azurerm') .reply(200, JSON.parse(consulData)); - const res = await terraformProvider.getReleases({ - lookupName: 'azurerm', + const res = await getPkgReleases({ + datasource, + depName: 'azurerm', }); expect(res).toMatchSnapshot(); expect(res).not.toBeNull();