From f9c8cb46e2445988c041f134244e2bef84cde372 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Sat, 4 Apr 2020 08:53:52 +0200 Subject: [PATCH] refactor(datasource): getPkgReleases -> getReleases (#5867) --- .../cdnjs/__snapshots__/index.spec.ts.snap | 4 +- lib/datasource/cdnjs/index.spec.ts | 40 ++++++------- lib/datasource/cdnjs/index.ts | 4 +- lib/datasource/common.ts | 34 +++++++---- .../crate/__snapshots__/index.spec.ts.snap | 6 +- lib/datasource/crate/index.spec.ts | 24 ++++---- lib/datasource/crate/index.ts | 2 +- .../dart/__snapshots__/index.spec.ts.snap | 4 +- lib/datasource/dart/index.spec.ts | 18 +++--- lib/datasource/dart/index.ts | 2 +- .../docker/__snapshots__/index.spec.ts.snap | 12 ++-- lib/datasource/docker/index.spec.ts | 4 +- lib/datasource/docker/index.ts | 4 +- .../galaxy/__snapshots__/index.spec.ts.snap | 4 +- lib/datasource/galaxy/index.spec.ts | 22 ++++---- lib/datasource/galaxy/index.ts | 2 +- lib/datasource/git-refs/index.spec.ts | 10 ++-- lib/datasource/git-refs/index.ts | 2 +- lib/datasource/git-submodules/index.spec.ts | 10 ++-- lib/datasource/git-submodules/index.ts | 2 +- lib/datasource/git-tags/index.spec.ts | 10 ++-- lib/datasource/git-tags/index.ts | 2 +- .../__snapshots__/index.spec.ts.snap | 2 +- lib/datasource/github-releases/index.spec.ts | 4 +- lib/datasource/github-releases/index.ts | 4 +- .../__snapshots__/index.spec.ts.snap | 2 +- lib/datasource/github-tags/index.spec.ts | 4 +- lib/datasource/github-tags/index.ts | 4 +- .../__snapshots__/index.spec.ts.snap | 4 +- lib/datasource/gitlab-tags/index.spec.ts | 6 +- lib/datasource/gitlab-tags/index.ts | 2 +- .../go/__snapshots__/index.spec.ts.snap | 6 +- lib/datasource/go/index.spec.ts | 38 ++++++------- lib/datasource/go/index.ts | 18 +++--- .../__snapshots__/index.spec.ts.snap | 4 +- lib/datasource/gradle-version/index.spec.ts | 6 +- lib/datasource/gradle-version/index.ts | 2 +- .../helm/__snapshots__/index.spec.ts.snap | 6 +- lib/datasource/helm/index.spec.ts | 28 +++++----- lib/datasource/helm/index.ts | 4 +- .../hex/__snapshots__/index.spec.ts.snap | 4 +- lib/datasource/hex/index.spec.ts | 26 ++++----- lib/datasource/hex/index.ts | 4 +- lib/datasource/index.spec.ts | 12 ++-- lib/datasource/index.ts | 26 +++++---- lib/datasource/maven/index.spec.ts | 32 +++++------ lib/datasource/maven/index.ts | 2 +- lib/datasource/npm/index.spec.ts | 56 +++++++++---------- lib/datasource/npm/index.ts | 2 +- lib/datasource/npm/releases.ts | 2 +- .../nuget/__snapshots__/index.spec.ts.snap | 16 +++--- lib/datasource/nuget/index.spec.ts | 54 +++++++++--------- lib/datasource/nuget/index.ts | 8 +-- lib/datasource/nuget/v2.ts | 2 +- lib/datasource/nuget/v3.ts | 2 +- .../orb/__snapshots__/index.spec.ts.snap | 4 +- lib/datasource/orb/index.spec.ts | 14 ++--- lib/datasource/orb/index.ts | 6 +- .../__snapshots__/index.spec.ts.snap | 10 ++-- lib/datasource/packagist/index.spec.ts | 22 ++++---- lib/datasource/packagist/index.ts | 4 +- lib/datasource/pod/index.spec.ts | 26 ++++----- lib/datasource/pod/index.ts | 2 +- .../pypi/__snapshots__/index.spec.ts.snap | 18 +++--- lib/datasource/pypi/index.spec.ts | 32 +++++------ lib/datasource/pypi/index.ts | 2 +- lib/datasource/readme.md | 8 +-- .../__snapshots__/index.spec.ts.snap | 2 +- lib/datasource/ruby-version/index.spec.ts | 10 ++-- lib/datasource/ruby-version/index.ts | 2 +- .../rubygems/__snapshots__/index.spec.ts.snap | 8 +-- lib/datasource/rubygems/index.spec.ts | 18 +++--- lib/datasource/rubygems/index.ts | 2 +- lib/datasource/rubygems/releases.ts | 2 +- lib/datasource/sbt-package/index.spec.ts | 10 ++-- lib/datasource/sbt-package/index.ts | 2 +- lib/datasource/sbt-plugin/index.spec.ts | 12 ++-- lib/datasource/sbt-plugin/index.ts | 2 +- .../__snapshots__/index.spec.ts.snap | 4 +- lib/datasource/terraform-module/index.spec.ts | 14 ++--- lib/datasource/terraform-module/index.ts | 4 +- .../__snapshots__/index.spec.ts.snap | 2 +- .../terraform-provider/index.spec.ts | 10 ++-- lib/datasource/terraform-provider/index.ts | 4 +- lib/manager/bundler/artifacts.spec.ts | 8 +-- lib/manager/cocoapods/artifacts.spec.ts | 4 +- lib/manager/travis/package.spec.ts | 6 +- lib/util/exec/docker/index.ts | 4 +- lib/workers/common.ts | 1 - lib/workers/pr/changelog/releases.spec.ts | 10 ++++ lib/workers/pr/changelog/releases.ts | 5 ++ .../repository/process/lookup/index.spec.ts | 16 +++--- .../repository/process/lookup/index.ts | 7 +++ 93 files changed, 482 insertions(+), 449 deletions(-) diff --git a/lib/datasource/cdnjs/__snapshots__/index.spec.ts.snap b/lib/datasource/cdnjs/__snapshots__/index.spec.ts.snap index 6f4c23d996..9aeb0456a2 100644 --- a/lib/datasource/cdnjs/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/cdnjs/__snapshots__/index.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`datasource/cdnjs getPkgReleases filters releases by asset presence 1`] = ` +exports[`datasource/cdnjs getReleases filters releases by asset presence 1`] = ` Object { "homepage": "http://bulma.io", "releases": Array [ @@ -12,7 +12,7 @@ Object { } `; -exports[`datasource/cdnjs getPkgReleases processes real data 1`] = ` +exports[`datasource/cdnjs getReleases processes real data 1`] = ` Object { "homepage": "https://d3js.org/d3-force/", "releases": Array [ diff --git a/lib/datasource/cdnjs/index.spec.ts b/lib/datasource/cdnjs/index.spec.ts index 4a387baa45..e147ed0f55 100644 --- a/lib/datasource/cdnjs/index.spec.ts +++ b/lib/datasource/cdnjs/index.spec.ts @@ -1,6 +1,6 @@ import fs from 'fs'; import _got from '../../util/got'; -import { getDigest, getPkgReleases } from '.'; +import { getDigest, getReleases } from '.'; import { DATASOURCE_FAILURE } from '../../constants/error-messages'; const got: jest.Mock<any> = _got as any; @@ -40,62 +40,62 @@ describe('datasource/cdnjs', () => { expect(res).toBe('sha256-F/Xda58SPdcUCr+xhSGz9MA2zQBPb0ASEYKohl8UCHc='); }); }); - describe('getPkgReleases', () => { + describe('getReleases', () => { beforeEach(() => { jest.clearAllMocks(); return global.renovateCache.rmAll(); }); it('throws for empty result', async () => { got.mockResolvedValueOnce(null); - await expect( - getPkgReleases({ lookupName: 'foo/bar' }) - ).rejects.toThrowError(DATASOURCE_FAILURE); + await expect(getReleases({ lookupName: 'foo/bar' })).rejects.toThrowError( + DATASOURCE_FAILURE + ); }); it('returns null for missing fields', async () => { got.mockResolvedValueOnce({}); - expect(await getPkgReleases({ lookupName: 'foo/bar' })).toBeNull(); + expect(await getReleases({ lookupName: 'foo/bar' })).toBeNull(); }); it('returns null for 404', async () => { got.mockRejectedValueOnce({ statusCode: 404 }); - expect(await getPkgReleases({ lookupName: 'foo/bar' })).toBeNull(); + expect(await getReleases({ lookupName: 'foo/bar' })).toBeNull(); }); it('returns null for 401', async () => { got.mockRejectedValueOnce({ statusCode: 401 }); - expect(await getPkgReleases({ lookupName: 'foo/bar' })).toBeNull(); + expect(await getReleases({ lookupName: 'foo/bar' })).toBeNull(); }); it('throws for 429', async () => { got.mockRejectedValueOnce({ statusCode: 429 }); - await expect( - getPkgReleases({ lookupName: 'foo/bar' }) - ).rejects.toThrowError(DATASOURCE_FAILURE); + await expect(getReleases({ lookupName: 'foo/bar' })).rejects.toThrowError( + DATASOURCE_FAILURE + ); }); it('throws for 5xx', async () => { got.mockRejectedValueOnce({ statusCode: 502 }); - await expect( - getPkgReleases({ lookupName: 'foo/bar' }) - ).rejects.toThrowError(DATASOURCE_FAILURE); + await expect(getReleases({ lookupName: 'foo/bar' })).rejects.toThrowError( + DATASOURCE_FAILURE + ); }); it('returns null for unknown error', async () => { got.mockImplementationOnce(() => { throw new Error(); }); - await expect( - getPkgReleases({ lookupName: 'foo/bar' }) - ).rejects.toThrowError(DATASOURCE_FAILURE); + await expect(getReleases({ lookupName: 'foo/bar' })).rejects.toThrowError( + DATASOURCE_FAILURE + ); }); it('returns null with wrong auth token', async () => { got.mockRejectedValueOnce({ statusCode: 401 }); - const res = await getPkgReleases({ lookupName: 'foo/bar' }); + const res = await getReleases({ lookupName: 'foo/bar' }); expect(res).toBeNull(); }); it('processes real data', async () => { got.mockResolvedValueOnce({ body: res1 }); - const res = await getPkgReleases({ lookupName: 'd3-force/d3-force.js' }); + const res = await getReleases({ lookupName: 'd3-force/d3-force.js' }); expect(res).toMatchSnapshot(); }); it('filters releases by asset presence', async () => { got.mockResolvedValueOnce({ body: res2 }); - const res = await getPkgReleases({ + const res = await getReleases({ lookupName: 'bulma/only/0.7.5/style.css', }); expect(res).toMatchSnapshot(); diff --git a/lib/datasource/cdnjs/index.ts b/lib/datasource/cdnjs/index.ts index eb37fc211a..b7ef9be6c4 100644 --- a/lib/datasource/cdnjs/index.ts +++ b/lib/datasource/cdnjs/index.ts @@ -51,9 +51,9 @@ export async function getDigest( return result; } -export async function getPkgReleases({ +export async function getReleases({ lookupName, -}: Partial<GetReleasesConfig>): Promise<ReleaseResult | null> { +}: GetReleasesConfig): Promise<ReleaseResult | null> { const [library, ...assetParts] = lookupName.split('/'); const assetName = assetParts.join('/'); diff --git a/lib/datasource/common.ts b/lib/datasource/common.ts index d4c12a676f..e3702ba38f 100644 --- a/lib/datasource/common.ts +++ b/lib/datasource/common.ts @@ -1,25 +1,39 @@ import { DATASOURCE_FAILURE } from '../constants/error-messages'; -export interface GetReleasesConfig { - lookupName: string; - registryUrls?: string[]; - compatibility?: Record<string, string>; - npmrc?: string; -} - export interface Config { datasource?: string; depName?: string; lookupName?: string; registryUrls?: string[]; } -export interface PkgReleaseConfig extends Config { + +export type DigestConfig = Config; + +interface ReleasesConfigBase { compatibility?: Record<string, string>; npmrc?: string; + registryUrls?: string[]; +} + +export interface GetReleasesConfig extends ReleasesConfigBase { + lookupName: string; +} + +export interface GetPkgReleasesConfig extends ReleasesConfigBase { + datasource: string; + depName: string; + lookupName?: string; versioning?: string; } -export type DigestConfig = Config; +export function isGetPkgReleasesConfig( + input: any +): input is GetPkgReleasesConfig { + return ( + (input as GetPkgReleasesConfig).datasource !== undefined && + (input as GetPkgReleasesConfig).depName !== undefined + ); +} export interface Release { changelogUrl?: string; @@ -52,7 +66,7 @@ export interface ReleaseResult { export interface Datasource { id: string; getDigest?(config: DigestConfig, newValue?: string): Promise<string | null>; - getPkgReleases(config: PkgReleaseConfig): Promise<ReleaseResult | null>; + getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null>; } export class DatasourceError extends Error { diff --git a/lib/datasource/crate/__snapshots__/index.spec.ts.snap b/lib/datasource/crate/__snapshots__/index.spec.ts.snap index 5d98d16571..2080dcc171 100644 --- a/lib/datasource/crate/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/crate/__snapshots__/index.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`datasource/crate getPkgReleases processes real data 1`] = ` +exports[`datasource/crate getReleases processes real data 1`] = ` Object { "releases": Array [ Object { @@ -204,7 +204,7 @@ Object { } `; -exports[`datasource/crate getPkgReleases processes real data 2`] = ` +exports[`datasource/crate getReleases processes real data 2`] = ` Object { "releases": Array [ Object { @@ -269,4 +269,4 @@ Object { } `; -exports[`datasource/crate getPkgReleases throws for 5xx 1`] = `[Error: registry-failure]`; +exports[`datasource/crate getReleases throws for 5xx 1`] = `[Error: registry-failure]`; diff --git a/lib/datasource/crate/index.spec.ts b/lib/datasource/crate/index.spec.ts index 9dd47f443d..176ab304c9 100644 --- a/lib/datasource/crate/index.spec.ts +++ b/lib/datasource/crate/index.spec.ts @@ -1,7 +1,7 @@ import fs from 'fs'; import _got from '../../util/got'; -import { getPkgReleases } from '.'; +import { getReleases } from '.'; const got: any = _got; @@ -18,14 +18,14 @@ const res3 = fs.readFileSync( jest.mock('../../util/got'); describe('datasource/crate', () => { - describe('getPkgReleases', () => { + describe('getReleases', () => { beforeEach(() => { global.repoCache = {}; }); it('returns null for empty result', async () => { got.mockReturnValueOnce(null); expect( - await getPkgReleases({ lookupName: 'non_existent_crate' }) + await getReleases({ lookupName: 'non_existent_crate' }) ).toBeNull(); }); it('returns null for missing fields', async () => { @@ -33,7 +33,7 @@ describe('datasource/crate', () => { body: undefined, }); expect( - await getPkgReleases({ lookupName: 'non_existent_crate' }) + await getReleases({ lookupName: 'non_existent_crate' }) ).toBeNull(); }); it('returns null for empty list', async () => { @@ -41,7 +41,7 @@ describe('datasource/crate', () => { body: '\n', }); expect( - await getPkgReleases({ lookupName: 'non_existent_crate' }) + await getReleases({ lookupName: 'non_existent_crate' }) ).toBeNull(); }); it('returns null for 404', async () => { @@ -50,7 +50,7 @@ describe('datasource/crate', () => { statusCode: 404, }) ); - expect(await getPkgReleases({ lookupName: 'some_crate' })).toBeNull(); + expect(await getReleases({ lookupName: 'some_crate' })).toBeNull(); }); it('throws for 5xx', async () => { got.mockImplementationOnce(() => @@ -60,7 +60,7 @@ describe('datasource/crate', () => { ); let e; try { - await getPkgReleases({ lookupName: 'some_crate' }); + await getReleases({ lookupName: 'some_crate' }); } catch (err) { e = err; } @@ -71,13 +71,13 @@ describe('datasource/crate', () => { got.mockImplementationOnce(() => { throw new Error(); }); - expect(await getPkgReleases({ lookupName: 'some_crate' })).toBeNull(); + expect(await getReleases({ lookupName: 'some_crate' })).toBeNull(); }); it('processes real data', async () => { got.mockReturnValueOnce({ body: res1, }); - const res = await getPkgReleases({ lookupName: 'libc' }); + const res = await getReleases({ lookupName: 'libc' }); expect(res).toMatchSnapshot(); expect(res).not.toBeNull(); expect(res).toBeDefined(); @@ -86,7 +86,7 @@ describe('datasource/crate', () => { got.mockReturnValueOnce({ body: res2, }); - const res = await getPkgReleases({ lookupName: 'amethyst' }); + const res = await getReleases({ lookupName: 'amethyst' }); expect(res).toMatchSnapshot(); expect(res).not.toBeNull(); expect(res).toBeDefined(); @@ -95,14 +95,14 @@ describe('datasource/crate', () => { got.mockReturnValueOnce({ body: res2, }); - const res = await getPkgReleases({ lookupName: 'invalid-crate-name' }); + const res = await getReleases({ lookupName: 'invalid-crate-name' }); expect(res).toBeNull(); }); it('returns null for invalid crate data', async () => { got.mockReturnValueOnce({ body: res3, }); - const res = await getPkgReleases({ lookupName: 'some_crate' }); + const res = await getReleases({ lookupName: 'some_crate' }); expect(res).toBeNull(); }); }); diff --git a/lib/datasource/crate/index.ts b/lib/datasource/crate/index.ts index 519daf8b43..785724fdf6 100644 --- a/lib/datasource/crate/index.ts +++ b/lib/datasource/crate/index.ts @@ -11,7 +11,7 @@ export const id = 'crate'; const http = new Http(id); -export async function getPkgReleases({ +export async function getReleases({ lookupName, }: GetReleasesConfig): Promise<ReleaseResult | null> { const cacheNamespace = 'datasource-crate'; diff --git a/lib/datasource/dart/__snapshots__/index.spec.ts.snap b/lib/datasource/dart/__snapshots__/index.spec.ts.snap index 198c90be54..f293d01d44 100644 --- a/lib/datasource/dart/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/dart/__snapshots__/index.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`datasource/dart getPkgReleases processes real data 1`] = ` +exports[`datasource/dart getReleases processes real data 1`] = ` Object { "homepage": "https://github.com/flutter/plugins/tree/master/packages/shared_preferences", "releases": Array [ @@ -60,4 +60,4 @@ Object { } `; -exports[`datasource/dart getPkgReleases throws for 5xx 1`] = `[Error: registry-failure]`; +exports[`datasource/dart getReleases throws for 5xx 1`] = `[Error: registry-failure]`; diff --git a/lib/datasource/dart/index.spec.ts b/lib/datasource/dart/index.spec.ts index 3e63fdb88d..e4a63bb018 100644 --- a/lib/datasource/dart/index.spec.ts +++ b/lib/datasource/dart/index.spec.ts @@ -1,6 +1,6 @@ import fs from 'fs'; import _got from '../../util/got'; -import { getPkgReleases } from '.'; +import { getReleases } from '.'; const got: any = _got; @@ -14,13 +14,13 @@ const body: any = JSON.parse( jest.mock('../../util/got'); describe('datasource/dart', () => { - describe('getPkgReleases', () => { + describe('getReleases', () => { beforeEach(() => { global.repoCache = {}; }); it('returns null for empty result', async () => { got.mockReturnValueOnce(null); - expect(await getPkgReleases({ lookupName: 'non_sense' })).toBeNull(); + expect(await getReleases({ lookupName: 'non_sense' })).toBeNull(); }); it('returns null for empty fields', async () => { const withoutVersions = { @@ -29,7 +29,7 @@ describe('datasource/dart', () => { }; got.mockReturnValueOnce({ body: withoutVersions }); expect( - await getPkgReleases({ lookupName: 'shared_preferences' }) + await getReleases({ lookupName: 'shared_preferences' }) ).toBeNull(); const withoutLatest = { @@ -38,7 +38,7 @@ describe('datasource/dart', () => { }; got.mockReturnValueOnce({ body: withoutLatest }); expect( - await getPkgReleases({ lookupName: 'shared_preferences' }) + await getReleases({ lookupName: 'shared_preferences' }) ).toBeNull(); }); it('returns null for 404', async () => { @@ -48,7 +48,7 @@ describe('datasource/dart', () => { }) ); expect( - await getPkgReleases({ lookupName: 'shared_preferences' }) + await getReleases({ lookupName: 'shared_preferences' }) ).toBeNull(); }); it('throws for 5xx', async () => { @@ -59,7 +59,7 @@ describe('datasource/dart', () => { ); let e; try { - await getPkgReleases({ lookupName: 'shared_preferences' }); + await getReleases({ lookupName: 'shared_preferences' }); } catch (err) { e = err; } @@ -71,12 +71,12 @@ describe('datasource/dart', () => { throw new Error(); }); expect( - await getPkgReleases({ lookupName: 'shared_preferences' }) + await getReleases({ lookupName: 'shared_preferences' }) ).toBeNull(); }); it('processes real data', async () => { got.mockReturnValueOnce({ body }); - const res = await getPkgReleases({ + const res = await getReleases({ lookupName: 'shared_preferences', }); expect(res).toMatchSnapshot(); diff --git a/lib/datasource/dart/index.ts b/lib/datasource/dart/index.ts index edbe714f0b..7b2bdd6919 100644 --- a/lib/datasource/dart/index.ts +++ b/lib/datasource/dart/index.ts @@ -6,7 +6,7 @@ export const id = 'dart'; const http = new Http(id); -export async function getPkgReleases({ +export async function getReleases({ lookupName, }: GetReleasesConfig): Promise<ReleaseResult | null> { let result: ReleaseResult = null; diff --git a/lib/datasource/docker/__snapshots__/index.spec.ts.snap b/lib/datasource/docker/__snapshots__/index.spec.ts.snap index da12801f3f..7f13447ea0 100644 --- a/lib/datasource/docker/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/docker/__snapshots__/index.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`api/docker getPkgReleases adds library/ prefix for Docker Hub (explicit) 1`] = ` +exports[`api/docker getReleases adds library/ prefix for Docker Hub (explicit) 1`] = ` [MockFunction] { "calls": Array [ Array [ @@ -122,7 +122,7 @@ exports[`api/docker getPkgReleases adds library/ prefix for Docker Hub (explicit } `; -exports[`api/docker getPkgReleases adds library/ prefix for Docker Hub (implicit) 1`] = ` +exports[`api/docker getReleases adds library/ prefix for Docker Hub (implicit) 1`] = ` [MockFunction] { "calls": Array [ Array [ @@ -244,7 +244,7 @@ exports[`api/docker getPkgReleases adds library/ prefix for Docker Hub (implicit } `; -exports[`api/docker getPkgReleases adds no library/ prefix for other registries 1`] = ` +exports[`api/docker getReleases adds no library/ prefix for other registries 1`] = ` [MockFunction] { "calls": Array [ Array [ @@ -366,7 +366,7 @@ exports[`api/docker getPkgReleases adds no library/ prefix for other registries } `; -exports[`api/docker getPkgReleases uses custom registry in depName 1`] = ` +exports[`api/docker getReleases uses custom registry in depName 1`] = ` [MockFunction] { "calls": Array [ Array [ @@ -435,7 +435,7 @@ exports[`api/docker getPkgReleases uses custom registry in depName 1`] = ` } `; -exports[`api/docker getPkgReleases uses custom registry with registryUrls 1`] = ` +exports[`api/docker getReleases uses custom registry with registryUrls 1`] = ` Array [ Array [ "https://registry.company.com/v2/", @@ -507,7 +507,7 @@ Array [ ] `; -exports[`api/docker getPkgReleases uses lower tag limit for ECR deps 1`] = ` +exports[`api/docker getReleases uses lower tag limit for ECR deps 1`] = ` [MockFunction] { "calls": Array [ Array [ diff --git a/lib/datasource/docker/index.spec.ts b/lib/datasource/docker/index.spec.ts index 75b4ecf98a..e6eaa4628d 100644 --- a/lib/datasource/docker/index.spec.ts +++ b/lib/datasource/docker/index.spec.ts @@ -269,7 +269,7 @@ describe('api/docker', () => { ).rejects.toThrow(Error(DATASOURCE_FAILURE)); }); }); - describe('getPkgReleases', () => { + describe('getReleases', () => { beforeEach(() => { jest.clearAllMocks(); global.repoCache = {}; @@ -404,7 +404,7 @@ describe('api/docker', () => { }); it('returns null on error', async () => { got.mockReturnValueOnce({}); - const res = await docker.getPkgReleases({ + const res = await docker.getReleases({ lookupName: 'my/node', }); expect(res).toBeNull(); diff --git a/lib/datasource/docker/index.ts b/lib/datasource/docker/index.ts index 05a7b84b7b..9d12ed7da6 100644 --- a/lib/datasource/docker/index.ts +++ b/lib/datasource/docker/index.ts @@ -561,7 +561,7 @@ async function getLabels( } /** - * docker.getPkgReleases + * docker.getReleases * * A docker image usually looks something like this: somehost.io/owner/repo:8.1.0-alpine * In the above: @@ -571,7 +571,7 @@ async function getLabels( * * This function will filter only tags that contain a semver version */ -export async function getPkgReleases({ +export async function getReleases({ lookupName, registryUrls, }: GetReleasesConfig): Promise<ReleaseResult | null> { diff --git a/lib/datasource/galaxy/__snapshots__/index.spec.ts.snap b/lib/datasource/galaxy/__snapshots__/index.spec.ts.snap index c4afc6a3cd..21b827a2d9 100644 --- a/lib/datasource/galaxy/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/galaxy/__snapshots__/index.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`datasource/galaxy getPkgReleases processes real data 1`] = ` +exports[`datasource/galaxy getReleases processes real data 1`] = ` Object { "dependencyUrl": "https://galaxy.ansible.com/yatesr/timezone", "releases": Array [ @@ -21,4 +21,4 @@ Object { } `; -exports[`datasource/galaxy getPkgReleases throws for 5xx 1`] = `[Error: registry-failure]`; +exports[`datasource/galaxy getReleases throws for 5xx 1`] = `[Error: registry-failure]`; diff --git a/lib/datasource/galaxy/index.spec.ts b/lib/datasource/galaxy/index.spec.ts index ba46fcb022..a902d97f70 100644 --- a/lib/datasource/galaxy/index.spec.ts +++ b/lib/datasource/galaxy/index.spec.ts @@ -1,7 +1,7 @@ import fs from 'fs'; import _got from '../../util/got'; -import { getPkgReleases } from './index'; +import { getReleases } from './index'; const got: any = _got; @@ -17,14 +17,14 @@ const empty = fs.readFileSync( jest.mock('../../util/got'); describe('datasource/galaxy', () => { - describe('getPkgReleases', () => { + describe('getReleases', () => { beforeEach(() => { global.repoCache = {}; }); it('returns null for empty result', async () => { got.mockReturnValueOnce(null); expect( - await getPkgReleases({ lookupName: 'non_existent_crate' }) + await getReleases({ lookupName: 'non_existent_crate' }) ).toBeNull(); }); it('returns null for missing fields', async () => { @@ -32,7 +32,7 @@ describe('datasource/galaxy', () => { body: undefined, }); expect( - await getPkgReleases({ lookupName: 'non_existent_crate' }) + await getReleases({ lookupName: 'non_existent_crate' }) ).toBeNull(); }); it('returns null for empty list', async () => { @@ -40,7 +40,7 @@ describe('datasource/galaxy', () => { body: '\n', }); expect( - await getPkgReleases({ lookupName: 'non_existent_crate' }) + await getReleases({ lookupName: 'non_existent_crate' }) ).toBeNull(); }); it('returns null for 404', async () => { @@ -49,19 +49,19 @@ describe('datasource/galaxy', () => { statusCode: 404, }) ); - expect(await getPkgReleases({ lookupName: 'some_crate' })).toBeNull(); + expect(await getReleases({ lookupName: 'some_crate' })).toBeNull(); }); it('returns null for unknown error', async () => { got.mockImplementationOnce(() => { throw new Error(); }); - expect(await getPkgReleases({ lookupName: 'some_crate' })).toBeNull(); + expect(await getReleases({ lookupName: 'some_crate' })).toBeNull(); }); it('processes real data', async () => { got.mockReturnValueOnce({ body: res1, }); - const res = await getPkgReleases({ lookupName: 'yatesr.timezone' }); + const res = await getReleases({ lookupName: 'yatesr.timezone' }); expect(res).toMatchSnapshot(); expect(res).not.toBeNull(); expect(res).toBeDefined(); @@ -70,7 +70,7 @@ describe('datasource/galaxy', () => { got.mockReturnValueOnce({ body: empty, }); - const res = await getPkgReleases({ lookupName: 'foo.bar' }); + const res = await getReleases({ lookupName: 'foo.bar' }); expect(res).toBeNull(); }); it('throws for 5xx', async () => { @@ -81,7 +81,7 @@ describe('datasource/galaxy', () => { ); let e; try { - await getPkgReleases({ lookupName: 'some_crate' }); + await getReleases({ lookupName: 'some_crate' }); } catch (err) { e = err; } @@ -94,7 +94,7 @@ describe('datasource/galaxy', () => { got.mockImplementationOnce(() => { throw err; }); - expect(await getPkgReleases({ lookupName: 'foo.bar' })).toBeNull(); + expect(await getReleases({ lookupName: 'foo.bar' })).toBeNull(); }); }); }); diff --git a/lib/datasource/galaxy/index.ts b/lib/datasource/galaxy/index.ts index f4a2d53c1a..d25c4aa610 100644 --- a/lib/datasource/galaxy/index.ts +++ b/lib/datasource/galaxy/index.ts @@ -11,7 +11,7 @@ export const id = 'galaxy'; const http = new Http(id); -export async function getPkgReleases({ +export async function getReleases({ lookupName, }: GetReleasesConfig): Promise<ReleaseResult | null> { const cacheNamespace = 'datasource-galaxy'; diff --git a/lib/datasource/git-refs/index.spec.ts b/lib/datasource/git-refs/index.spec.ts index 1466081d04..018f1c6772 100644 --- a/lib/datasource/git-refs/index.spec.ts +++ b/lib/datasource/git-refs/index.spec.ts @@ -1,5 +1,5 @@ import _simpleGit from 'simple-git/promise'; -import { getPkgReleases } from '.'; +import { getReleases } from '.'; jest.mock('simple-git/promise'); const simpleGit: any = _simpleGit; @@ -8,14 +8,14 @@ const lookupName = 'https://github.com/example/example.git'; describe('datasource/git-refs', () => { beforeEach(() => global.renovateCache.rmAll()); - describe('getPkgReleases', () => { + describe('getReleases', () => { it('returns nil if response is wrong', async () => { simpleGit.mockReturnValue({ listRemote() { return Promise.resolve(null); }, }); - const versions = await getPkgReleases({ lookupName }); + const versions = await getReleases({ lookupName }); expect(versions).toEqual(null); }); it('returns nil if remote call throws exception', async () => { @@ -24,7 +24,7 @@ describe('datasource/git-refs', () => { throw new Error(); }, }); - const versions = await getPkgReleases({ lookupName }); + const versions = await getReleases({ lookupName }); expect(versions).toEqual(null); }); it('returns versions filtered from tags', async () => { @@ -36,7 +36,7 @@ describe('datasource/git-refs', () => { }, }); - const versions = await getPkgReleases({ + const versions = await getReleases({ lookupName, }); diff --git a/lib/datasource/git-refs/index.ts b/lib/datasource/git-refs/index.ts index d0bc098251..56277e3f7d 100644 --- a/lib/datasource/git-refs/index.ts +++ b/lib/datasource/git-refs/index.ts @@ -65,7 +65,7 @@ export async function getRawRefs({ return null; } -export async function getPkgReleases({ +export async function getReleases({ lookupName, }: GetReleasesConfig): Promise<ReleaseResult | null> { try { diff --git a/lib/datasource/git-submodules/index.spec.ts b/lib/datasource/git-submodules/index.spec.ts index 1c611332e0..ddba901f60 100644 --- a/lib/datasource/git-submodules/index.spec.ts +++ b/lib/datasource/git-submodules/index.spec.ts @@ -1,5 +1,5 @@ import _simpleGit from 'simple-git/promise'; -import { getPkgReleases, getDigest } from '.'; +import { getReleases, getDigest } from '.'; jest.mock('simple-git/promise'); const simpleGit: any = _simpleGit; @@ -9,14 +9,14 @@ const registryUrls = [lookupName, 'master']; describe('datasource/git-submoduless', () => { beforeEach(() => global.renovateCache.rmAll()); - describe('getPkgReleases', () => { + describe('getReleases', () => { it('returns null if response is wrong', async () => { simpleGit.mockReturnValue({ listRemote() { return Promise.resolve(null); }, }); - const versions = await getPkgReleases({ lookupName, registryUrls }); + const versions = await getReleases({ lookupName, registryUrls }); expect(versions).toEqual(null); }); it('returns null if remote call throws exception', async () => { @@ -25,7 +25,7 @@ describe('datasource/git-submoduless', () => { throw new Error(); }, }); - const versions = await getPkgReleases({ lookupName, registryUrls }); + const versions = await getReleases({ lookupName, registryUrls }); expect(versions).toEqual(null); }); it('returns versions filtered from tags', async () => { @@ -35,7 +35,7 @@ describe('datasource/git-submoduless', () => { }, }); - const versions = await getPkgReleases({ + const versions = await getReleases({ lookupName, registryUrls, }); diff --git a/lib/datasource/git-submodules/index.ts b/lib/datasource/git-submodules/index.ts index 5f4a697c54..ddcbb50869 100644 --- a/lib/datasource/git-submodules/index.ts +++ b/lib/datasource/git-submodules/index.ts @@ -6,7 +6,7 @@ import { logger } from '../../logger'; export const id = 'git-submodules'; -export async function getPkgReleases({ +export async function getReleases({ lookupName, registryUrls, }: GetReleasesConfig): Promise<ReleaseResult | null> { diff --git a/lib/datasource/git-tags/index.spec.ts b/lib/datasource/git-tags/index.spec.ts index 007d26c24b..b40c894683 100644 --- a/lib/datasource/git-tags/index.spec.ts +++ b/lib/datasource/git-tags/index.spec.ts @@ -1,5 +1,5 @@ import _simpleGit from 'simple-git/promise'; -import { getPkgReleases } from '.'; +import { getReleases } from '.'; jest.mock('simple-git/promise'); const simpleGit: any = _simpleGit; @@ -8,14 +8,14 @@ const lookupName = 'https://github.com/example/example.git'; describe('datasource/git-tags', () => { beforeEach(() => global.renovateCache.rmAll()); - describe('getPkgReleases', () => { + describe('getReleases', () => { it('returns nil if response is wrong', async () => { simpleGit.mockReturnValue({ listRemote() { return Promise.resolve(null); }, }); - const versions = await getPkgReleases({ lookupName }); + const versions = await getReleases({ lookupName }); expect(versions).toEqual(null); }); it('returns nil if remote call throws exception', async () => { @@ -24,7 +24,7 @@ describe('datasource/git-tags', () => { throw new Error(); }, }); - const versions = await getPkgReleases({ lookupName }); + const versions = await getReleases({ lookupName }); expect(versions).toEqual(null); }); it('returns versions filtered from tags', async () => { @@ -36,7 +36,7 @@ describe('datasource/git-tags', () => { }, }); - const versions = await getPkgReleases({ + const versions = await getReleases({ lookupName, }); const result = versions.releases.map(x => x.version).sort(); diff --git a/lib/datasource/git-tags/index.ts b/lib/datasource/git-tags/index.ts index 94392a7297..e310008000 100644 --- a/lib/datasource/git-tags/index.ts +++ b/lib/datasource/git-tags/index.ts @@ -4,7 +4,7 @@ import * as gitRefs from '../git-refs'; export const id = 'git-tags'; -export async function getPkgReleases({ +export async function getReleases({ lookupName, }: GetReleasesConfig): Promise<ReleaseResult | null> { const rawRefs: gitRefs.RawRefs[] = await gitRefs.getRawRefs({ lookupName }); diff --git a/lib/datasource/github-releases/__snapshots__/index.spec.ts.snap b/lib/datasource/github-releases/__snapshots__/index.spec.ts.snap index b4544ba763..3ec77f6047 100644 --- a/lib/datasource/github-releases/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/github-releases/__snapshots__/index.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`datasource/github-releases getPkgReleases returns releases 1`] = ` +exports[`datasource/github-releases getReleases returns releases 1`] = ` Object { "releases": Array [ Object { diff --git a/lib/datasource/github-releases/index.spec.ts b/lib/datasource/github-releases/index.spec.ts index 8e19d6e1c4..b1272f5b91 100644 --- a/lib/datasource/github-releases/index.spec.ts +++ b/lib/datasource/github-releases/index.spec.ts @@ -10,7 +10,7 @@ const ghGot: any = api.get; describe('datasource/github-releases', () => { beforeEach(() => global.renovateCache.rmAll()); - describe('getPkgReleases', () => { + describe('getReleases', () => { beforeAll(() => global.renovateCache.rmAll()); it('returns releases', async () => { const body = [ @@ -20,7 +20,7 @@ describe('datasource/github-releases', () => { { tag_name: 'v1.1.0', published_at: '2020-03-09T10:00:00Z' }, ]; ghGot.mockReturnValueOnce({ headers: {}, body }); - const res = await github.getPkgReleases({ + const res = await github.getReleases({ lookupName: 'some/dep', }); expect(res).toMatchSnapshot(); diff --git a/lib/datasource/github-releases/index.ts b/lib/datasource/github-releases/index.ts index 02b192b992..8dc8261265 100644 --- a/lib/datasource/github-releases/index.ts +++ b/lib/datasource/github-releases/index.ts @@ -14,7 +14,7 @@ type GithubRelease = { }; /** - * github.getPkgReleases + * github.getReleases * * This function can be used to fetch releases with a customisable versioning (e.g. semver) and with releases. * @@ -23,7 +23,7 @@ type GithubRelease = { * - Sanitize the versions if desired (e.g. strip out leading 'v') * - Return a dependency object containing sourceUrl string and releases array */ -export async function getPkgReleases({ +export async function getReleases({ lookupName: repo, }: GetReleasesConfig): Promise<ReleaseResult | null> { let githubReleases: GithubRelease[]; diff --git a/lib/datasource/github-tags/__snapshots__/index.spec.ts.snap b/lib/datasource/github-tags/__snapshots__/index.spec.ts.snap index 326ad0ee45..527501df58 100644 --- a/lib/datasource/github-tags/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/github-tags/__snapshots__/index.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`datasource/github-tags getPkgReleases returns tags 1`] = ` +exports[`datasource/github-tags getReleases returns tags 1`] = ` Object { "releases": Array [ Object { diff --git a/lib/datasource/github-tags/index.spec.ts b/lib/datasource/github-tags/index.spec.ts index aaad1a536a..1655cd3bf6 100644 --- a/lib/datasource/github-tags/index.spec.ts +++ b/lib/datasource/github-tags/index.spec.ts @@ -59,12 +59,12 @@ describe('datasource/github-tags', () => { expect(res).toBeNull(); }); }); - describe('getPkgReleases', () => { + describe('getReleases', () => { beforeAll(() => global.renovateCache.rmAll()); it('returns tags', async () => { const body = [{ name: 'v1.0.0' }, { name: 'v1.1.0' }]; ghGot.mockReturnValueOnce({ headers: {}, body }); - const res = await github.getPkgReleases({ + const res = await github.getReleases({ lookupName: 'some/dep2', }); expect(res).toMatchSnapshot(); diff --git a/lib/datasource/github-tags/index.ts b/lib/datasource/github-tags/index.ts index 9cfcf22060..05ae4ce3ea 100644 --- a/lib/datasource/github-tags/index.ts +++ b/lib/datasource/github-tags/index.ts @@ -99,7 +99,7 @@ export async function getDigest( } /** - * github.getPkgReleases + * github.getReleases * * This function can be used to fetch releases with a customisable versioning (e.g. semver) and with either tags or releases. * @@ -108,7 +108,7 @@ export async function getDigest( * - Sanitize the versions if desired (e.g. strip out leading 'v') * - Return a dependency object containing sourceUrl string and releases array */ -export async function getPkgReleases({ +export async function getReleases({ lookupName: repo, }: GetReleasesConfig): Promise<ReleaseResult | null> { let versions: string[]; diff --git a/lib/datasource/gitlab-tags/__snapshots__/index.spec.ts.snap b/lib/datasource/gitlab-tags/__snapshots__/index.spec.ts.snap index bf29c12e10..7e30e3139b 100644 --- a/lib/datasource/gitlab-tags/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/gitlab-tags/__snapshots__/index.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`datasource/gitlab-tags getPkgReleases returns tags 1`] = ` +exports[`datasource/gitlab-tags getReleases returns tags 1`] = ` Object { "releases": Array [ Object { @@ -23,7 +23,7 @@ Object { } `; -exports[`datasource/gitlab-tags getPkgReleases returns tags with default registry 1`] = ` +exports[`datasource/gitlab-tags getReleases returns tags with default registry 1`] = ` Object { "releases": Array [ Object { diff --git a/lib/datasource/gitlab-tags/index.spec.ts b/lib/datasource/gitlab-tags/index.spec.ts index 30dfbb2b29..baa74f48de 100644 --- a/lib/datasource/gitlab-tags/index.spec.ts +++ b/lib/datasource/gitlab-tags/index.spec.ts @@ -11,7 +11,7 @@ describe('datasource/gitlab-tags', () => { global.repoCache = {}; return global.renovateCache.rmAll(); }); - describe('getPkgReleases', () => { + describe('getReleases', () => { beforeAll(() => global.renovateCache.rmAll()); it('returns tags', async () => { const body = [ @@ -30,7 +30,7 @@ describe('datasource/gitlab-tags', () => { }, ]; glGot.mockReturnValueOnce({ headers: {}, body }); - const res = await gitlab.getPkgReleases({ + const res = await gitlab.getReleases({ registryUrls: ['https://gitlab.company.com/api/v4/'], lookupName: 'some/dep2', }); @@ -41,7 +41,7 @@ describe('datasource/gitlab-tags', () => { it('returns tags with default registry', async () => { const body = [{ name: 'v1.0.0' }, { name: 'v1.1.0' }]; glGot.mockReturnValueOnce({ headers: {}, body }); - const res = await gitlab.getPkgReleases({ + const res = await gitlab.getReleases({ lookupName: 'some/dep2', }); expect(res).toMatchSnapshot(); diff --git a/lib/datasource/gitlab-tags/index.ts b/lib/datasource/gitlab-tags/index.ts index dc086e5a74..1087ee071f 100644 --- a/lib/datasource/gitlab-tags/index.ts +++ b/lib/datasource/gitlab-tags/index.ts @@ -20,7 +20,7 @@ type GitlabTag = { }; }; -export async function getPkgReleases({ +export async function getReleases({ registryUrls, lookupName: repo, }: GetReleasesConfig): Promise<ReleaseResult | null> { diff --git a/lib/datasource/go/__snapshots__/index.spec.ts.snap b/lib/datasource/go/__snapshots__/index.spec.ts.snap index f5bf3271a4..1e688a0e2e 100644 --- a/lib/datasource/go/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/go/__snapshots__/index.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`datasource/go getPkgReleases processes real data 1`] = ` +exports[`datasource/go getReleases processes real data 1`] = ` Object { "releases": Array [ Object { @@ -13,7 +13,7 @@ Object { } `; -exports[`datasource/go getPkgReleases works for known servers 1`] = ` +exports[`datasource/go getReleases works for known servers 1`] = ` Array [ Array [ Object { @@ -36,7 +36,7 @@ Array [ ] `; -exports[`datasource/go getPkgReleases works for nested modules on github 1`] = ` +exports[`datasource/go getReleases works for nested modules on github 1`] = ` Array [ Array [ Object { diff --git a/lib/datasource/go/index.spec.ts b/lib/datasource/go/index.spec.ts index e6242afb3a..5b3c72a5cd 100644 --- a/lib/datasource/go/index.spec.ts +++ b/lib/datasource/go/index.spec.ts @@ -45,11 +45,11 @@ describe('datasource/go', () => { expect(res).toBe('abcdefabcdefabcdefabcdef'); }); }); - describe('getPkgReleases', () => { + describe('getReleases', () => { it('returns null for empty result', async () => { got.mockReturnValueOnce(null); expect( - await go.getPkgReleases({ + await go.getReleases({ lookupName: 'golang.org/foo/something', }) ).toBeNull(); @@ -61,7 +61,7 @@ describe('datasource/go', () => { }) ); expect( - await go.getPkgReleases({ + await go.getReleases({ lookupName: 'golang.org/foo/something', }) ).toBeNull(); @@ -71,7 +71,7 @@ describe('datasource/go', () => { throw new Error(); }); expect( - await go.getPkgReleases({ + await go.getReleases({ lookupName: 'golang.org/foo/something', }) ).toBeNull(); @@ -80,10 +80,10 @@ describe('datasource/go', () => { got.mockReturnValueOnce({ body: res1, }); - github.getPkgReleases.mockResolvedValueOnce({ + github.getReleases.mockResolvedValueOnce({ releases: [{ version: 'v1.0.0' }, { version: 'v2.0.0' }], }); - const res = await go.getPkgReleases({ + const res = await go.getReleases({ lookupName: 'golang.org/x/text', }); expect(res).toMatchSnapshot(); @@ -94,7 +94,7 @@ describe('datasource/go', () => { got.mockReturnValueOnce({ body: res1, }); - const res = await go.getPkgReleases({ + const res = await go.getReleases({ lookupName: 'golang.org/x/sys', }); expect(res).toBeNull(); @@ -106,14 +106,14 @@ describe('datasource/go', () => { 'https://google.com/golang/text/' ), }); - const res = await go.getPkgReleases({ + const res = await go.getReleases({ lookupName: 'golang.org/x/text', }); expect(res).toBeNull(); }); it('works for known servers', async () => { got.mockClear(); - github.getPkgReleases.mockClear(); + github.getReleases.mockClear(); const packages = [ { lookupName: 'github.com/x/text' }, { lookupName: 'gopkg.in/x/text' }, @@ -121,37 +121,37 @@ describe('datasource/go', () => { ]; const githubRes = { releases: [1, 2] } as any; for (const pkg of packages) { - github.getPkgReleases.mockResolvedValueOnce( + github.getReleases.mockResolvedValueOnce( partial<ReleaseResult>(githubRes) ); - expect(await go.getPkgReleases(pkg)).toEqual(githubRes); + expect(await go.getReleases(pkg)).toEqual(githubRes); } expect(got).toHaveBeenCalledTimes(0); - expect(github.getPkgReleases.mock.calls).toMatchSnapshot(); + expect(github.getReleases.mock.calls).toMatchSnapshot(); }); it('works for nested modules on github', async () => { got.mockClear(); - github.getPkgReleases.mockClear(); + github.getReleases.mockClear(); const packages = [ { lookupName: 'github.com/x/text/a' }, { lookupName: 'github.com/x/text/b' }, ]; for (const pkg of packages) { - github.getPkgReleases.mockResolvedValueOnce({ + github.getReleases.mockResolvedValueOnce({ releases: [{ version: 'a/v1.0.0' }, { version: 'b/v2.0.0' }], }); const prefix = pkg.lookupName.split('/')[3]; - const result = await go.getPkgReleases(pkg); + const result = await go.getReleases(pkg); expect(result.releases).toHaveLength(1); expect(result.releases[0].version.startsWith(prefix)); } expect(got).toHaveBeenCalledTimes(0); - expect(github.getPkgReleases.mock.calls).toMatchSnapshot(); + expect(github.getReleases.mock.calls).toMatchSnapshot(); }); it('falls back to old behaviour', async () => { got.mockClear(); - github.getPkgReleases.mockClear(); + github.getReleases.mockClear(); const packages = [ { lookupName: 'github.com/x/text/a' }, { lookupName: 'github.com/x/text/b' }, @@ -161,8 +161,8 @@ describe('datasource/go', () => { releases: [{ version: 'v1.0.0' }, { version: 'v2.0.0' }], }; for (const pkg of packages) { - github.getPkgReleases.mockResolvedValueOnce(releases); - expect(await go.getPkgReleases(pkg)).toBe(releases); + github.getReleases.mockResolvedValueOnce(releases); + expect(await go.getReleases(pkg)).toBe(releases); } }); }); diff --git a/lib/datasource/go/index.ts b/lib/datasource/go/index.ts index 8e31730d71..ad579a5007 100644 --- a/lib/datasource/go/index.ts +++ b/lib/datasource/go/index.ts @@ -70,23 +70,23 @@ async function getDatasource(goModule: string): Promise<DataSource | null> { } /** - * go.getPkgReleases + * go.getReleases * * This datasource resolves a go module URL into its source repository * and then fetch it if it is on GitHub. * * This function will: * - Determine the source URL for the module - * - Call the respective getPkgReleases in github to retrieve the tags + * - Call the respective getReleases in github to retrieve the tags * - Filter module tags according to the module path */ -export async function getPkgReleases({ +export async function getReleases({ lookupName, -}: Partial<GetReleasesConfig>): Promise<ReleaseResult | null> { - logger.trace(`go.getPkgReleases(${lookupName})`); +}: GetReleasesConfig): Promise<ReleaseResult | null> { + logger.trace(`go.getReleases(${lookupName})`); const source = await getDatasource(lookupName); if (source && source.datasource === github.id) { - const res = await github.getPkgReleases(source); + const res = await github.getReleases(source); // istanbul ignore if if (!res) { return res; @@ -97,10 +97,10 @@ export async function getPkgReleases({ * the old behaviour stays the same. */ const nameParts = lookupName.split('/'); - logger.trace({ nameParts, releases: res.releases }, 'go.getPkgReleases'); + logger.trace({ nameParts, releases: res.releases }, 'go.getReleases'); if (nameParts.length > 3) { const prefix = nameParts.slice(3, nameParts.length).join('/'); - logger.trace(`go.getPkgReleases.prefix:${prefix}`); + logger.trace(`go.getReleases.prefix:${prefix}`); const submodReleases = res.releases .filter( release => release.version && release.version.startsWith(prefix) @@ -110,7 +110,7 @@ export async function getPkgReleases({ r2.version = r2.version.replace(`${prefix}/`, ''); return r2; }); - logger.trace({ submodReleases }, 'go.getPkgReleases'); + logger.trace({ submodReleases }, 'go.getReleases'); if (submodReleases.length > 0) { res.releases = submodReleases; return res; diff --git a/lib/datasource/gradle-version/__snapshots__/index.spec.ts.snap b/lib/datasource/gradle-version/__snapshots__/index.spec.ts.snap index ecd8ea975d..aa9db33c4c 100644 --- a/lib/datasource/gradle-version/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/gradle-version/__snapshots__/index.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`datasource/gradle-version getPkgReleases calls configured registryUrls 1`] = ` +exports[`datasource/gradle-version getReleases calls configured registryUrls 1`] = ` Object { "homepage": "https://gradle.org", "releases": Array [ @@ -801,7 +801,7 @@ Object { } `; -exports[`datasource/gradle-version getPkgReleases processes real data 1`] = ` +exports[`datasource/gradle-version getReleases processes real data 1`] = ` Object { "homepage": "https://gradle.org", "releases": Array [ diff --git a/lib/datasource/gradle-version/index.spec.ts b/lib/datasource/gradle-version/index.spec.ts index 49fb650f70..23f7351972 100644 --- a/lib/datasource/gradle-version/index.spec.ts +++ b/lib/datasource/gradle-version/index.spec.ts @@ -13,7 +13,7 @@ const allResponse: any = fs.readFileSync( let config: any = {}; describe('datasource/gradle-version', () => { - describe('getPkgReleases', () => { + describe('getReleases', () => { beforeEach(() => { config = { lookupName: 'abc', @@ -27,7 +27,7 @@ describe('datasource/gradle-version', () => { got.mockReturnValueOnce({ body: JSON.parse(allResponse), }); - const res = await gradleVersion.getPkgReleases(config); + const res = await gradleVersion.getReleases(config); expect(got).toHaveBeenCalledTimes(1); expect(got.mock.calls[0][0]).toEqual( 'https://services.gradle.org/versions/all' @@ -40,7 +40,7 @@ describe('datasource/gradle-version', () => { got.mockReturnValue({ body: JSON.parse(allResponse), }); - const res = await gradleVersion.getPkgReleases({ + const res = await gradleVersion.getReleases({ ...config, registryUrls: ['https://foo.bar', 'http://baz.qux'], }); diff --git a/lib/datasource/gradle-version/index.ts b/lib/datasource/gradle-version/index.ts index 9e22603806..e0fa9d3a2d 100644 --- a/lib/datasource/gradle-version/index.ts +++ b/lib/datasource/gradle-version/index.ts @@ -40,7 +40,7 @@ function formatBuildTime(timeStr: string): string | null { return null; } -export async function getPkgReleases({ +export async function getReleases({ registryUrls, }: GetReleasesConfig): Promise<ReleaseResult> { const versionsUrls = is.nonEmptyArray(registryUrls) diff --git a/lib/datasource/helm/__snapshots__/index.spec.ts.snap b/lib/datasource/helm/__snapshots__/index.spec.ts.snap index 580f6a186c..e29bfcf08e 100644 --- a/lib/datasource/helm/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/helm/__snapshots__/index.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`datasource/helm getPkgReleases returns list of versions for normal response if index.yaml is cached 1`] = ` +exports[`datasource/helm getReleases returns list of versions for normal response if index.yaml is cached 1`] = ` Object { "homepage": "https://www.getambassador.io/", "name": "ambassador", @@ -118,7 +118,7 @@ Object { } `; -exports[`datasource/helm getPkgReleases returns list of versions for normal response if index.yaml is not cached 1`] = ` +exports[`datasource/helm getReleases returns list of versions for normal response if index.yaml is not cached 1`] = ` Object { "homepage": "https://www.getambassador.io/", "name": "ambassador", @@ -236,4 +236,4 @@ Object { } `; -exports[`datasource/helm getPkgReleases throws for 5xx 1`] = `[Error: registry-failure]`; +exports[`datasource/helm getReleases throws for 5xx 1`] = `[Error: registry-failure]`; diff --git a/lib/datasource/helm/index.spec.ts b/lib/datasource/helm/index.spec.ts index 3fc7b7cfe7..5c7e2eeea6 100644 --- a/lib/datasource/helm/index.spec.ts +++ b/lib/datasource/helm/index.spec.ts @@ -1,6 +1,6 @@ import fs from 'fs'; import _got from '../../util/got'; -import { getPkgReleases, getRepositoryData } from '.'; +import { getReleases, getRepositoryData } from '.'; const got: any = _got; @@ -13,7 +13,7 @@ const indexYaml = fs.readFileSync( jest.mock('../../util/got'); describe('datasource/helm', () => { - describe('getPkgReleases', () => { + describe('getReleases', () => { beforeEach(() => { jest.resetAllMocks(); global.repoCache = {}; @@ -21,7 +21,7 @@ describe('datasource/helm', () => { }); it('returns null if lookupName was not provided', async () => { expect( - await getPkgReleases({ + await getReleases({ lookupName: undefined, registryUrls: ['example-repository.com'], }) @@ -29,7 +29,7 @@ describe('datasource/helm', () => { }); it('returns null if repository was not provided', async () => { expect( - await getPkgReleases({ + await getReleases({ lookupName: 'some_chart', registryUrls: [], }) @@ -38,7 +38,7 @@ describe('datasource/helm', () => { it('returns null for empty response', async () => { got.mockReturnValueOnce(null); expect( - await getPkgReleases({ + await getReleases({ lookupName: 'non_existent_chart', registryUrls: ['example-repository.com'], }) @@ -49,7 +49,7 @@ describe('datasource/helm', () => { body: undefined, }); expect( - await getPkgReleases({ + await getReleases({ lookupName: 'non_existent_chart', registryUrls: ['example-repository.com'], }) @@ -62,7 +62,7 @@ describe('datasource/helm', () => { }) ); expect( - await getPkgReleases({ + await getReleases({ lookupName: 'some_chart', registryUrls: ['example-repository.com'], }) @@ -76,7 +76,7 @@ describe('datasource/helm', () => { ); let e; try { - await getPkgReleases({ + await getReleases({ lookupName: 'some_chart', registryUrls: ['example-repository.com'], }); @@ -91,7 +91,7 @@ describe('datasource/helm', () => { throw new Error(); }); expect( - await getPkgReleases({ + await getReleases({ lookupName: 'some_chart', registryUrls: ['example-repository.com'], }) @@ -100,7 +100,7 @@ describe('datasource/helm', () => { it('returns null if index.yaml in response is empty', async () => { const res = { body: '# A comment' }; got.mockReturnValueOnce(res); - const releases = await getPkgReleases({ + const releases = await getReleases({ lookupName: 'non_existent_chart', registryUrls: ['example-repository.com'], }); @@ -114,7 +114,7 @@ describe('datasource/helm', () => { yaml`, }; got.mockReturnValueOnce(res); - const releases = await getPkgReleases({ + const releases = await getReleases({ lookupName: 'non_existent_chart', registryUrls: ['example-repository.com'], }); @@ -122,7 +122,7 @@ describe('datasource/helm', () => { }); it('returns null if lookupName is not in index.yaml', async () => { got.mockReturnValueOnce({ body: indexYaml }); - const releases = await getPkgReleases({ + const releases = await getReleases({ lookupName: 'non_existent_chart', registryUrls: ['example-repository.com'], }); @@ -130,7 +130,7 @@ describe('datasource/helm', () => { }); it('returns list of versions for normal response if index.yaml is not cached', async () => { got.mockReturnValueOnce({ body: indexYaml }); - const releases = await getPkgReleases({ + const releases = await getReleases({ lookupName: 'ambassador', registryUrls: ['example-repository.com'], }); @@ -150,7 +150,7 @@ describe('datasource/helm', () => { repositoryData, cacheMinutes ); - const releases = await getPkgReleases({ + const releases = await getReleases({ lookupName: 'ambassador', registryUrls: [repository], }); diff --git a/lib/datasource/helm/index.ts b/lib/datasource/helm/index.ts index 2b7bbbdbc1..1b15ff6f2e 100644 --- a/lib/datasource/helm/index.ts +++ b/lib/datasource/helm/index.ts @@ -86,13 +86,13 @@ export async function getRepositoryData( } } -export async function getPkgReleases({ +export async function getReleases({ lookupName, registryUrls, }: GetReleasesConfig): Promise<ReleaseResult | null> { const [helmRepository] = registryUrls; if (!helmRepository) { - logger.warn(`helmRepository was not provided to getPkgReleases`); + logger.warn(`helmRepository was not provided to getReleases`); return null; } const repositoryData = await getRepositoryData(helmRepository); diff --git a/lib/datasource/hex/__snapshots__/index.spec.ts.snap b/lib/datasource/hex/__snapshots__/index.spec.ts.snap index eb677ee4f3..668e54458d 100644 --- a/lib/datasource/hex/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/hex/__snapshots__/index.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`datasource/hex getPkgReleases process public repo without auth 1`] = ` +exports[`datasource/hex getReleases process public repo without auth 1`] = ` Object { "homepage": "https://hex.pm/packages/certifi", "releases": Array [ @@ -88,7 +88,7 @@ Object { } `; -exports[`datasource/hex getPkgReleases processes real data 1`] = ` +exports[`datasource/hex getReleases processes real data 1`] = ` Object { "homepage": "https://hex.pm/packages/certifi", "releases": Array [ diff --git a/lib/datasource/hex/index.spec.ts b/lib/datasource/hex/index.spec.ts index f55cd76087..0a165808e6 100644 --- a/lib/datasource/hex/index.spec.ts +++ b/lib/datasource/hex/index.spec.ts @@ -1,7 +1,7 @@ import fs from 'fs'; import _got from '../../util/got'; import * as _hostRules from '../../util/host-rules'; -import { getPkgReleases } from '.'; +import { getReleases } from '.'; import { DATASOURCE_FAILURE } from '../../constants/error-messages'; const got: any = _got; @@ -17,25 +17,25 @@ jest.mock('../../util/got'); jest.mock('../../util/host-rules'); describe('datasource/hex', () => { - describe('getPkgReleases', () => { + describe('getReleases', () => { beforeEach(() => { global.repoCache = {}; }); it('returns null for empty result', async () => { got.mockReturnValueOnce(null); expect( - await getPkgReleases({ lookupName: 'non_existent_package' }) + await getReleases({ lookupName: 'non_existent_package' }) ).toBeNull(); }); it('returns null for missing fields', async () => { got.mockReturnValueOnce({}); expect( - await getPkgReleases({ lookupName: 'non_existent_package' }) + await getReleases({ lookupName: 'non_existent_package' }) ).toBeNull(); got.mockReturnValueOnce({ body: {} }); expect( - await getPkgReleases({ lookupName: 'non_existent_package' }) + await getReleases({ lookupName: 'non_existent_package' }) ).toBeNull(); }); it('returns null for 404', async () => { @@ -44,7 +44,7 @@ describe('datasource/hex', () => { statusCode: 404, }) ); - expect(await getPkgReleases({ lookupName: 'some_package' })).toBeNull(); + expect(await getReleases({ lookupName: 'some_package' })).toBeNull(); }); it('returns null for 401', async () => { got.mockImplementationOnce(() => @@ -52,7 +52,7 @@ describe('datasource/hex', () => { statusCode: 401, }) ); - expect(await getPkgReleases({ lookupName: 'some_package' })).toBeNull(); + expect(await getReleases({ lookupName: 'some_package' })).toBeNull(); }); it('throws for 429', async () => { got.mockImplementationOnce(() => @@ -61,7 +61,7 @@ describe('datasource/hex', () => { }) ); await expect( - getPkgReleases({ lookupName: 'some_crate' }) + getReleases({ lookupName: 'some_crate' }) ).rejects.toThrowError(DATASOURCE_FAILURE); }); it('throws for 5xx', async () => { @@ -71,14 +71,14 @@ describe('datasource/hex', () => { }) ); await expect( - getPkgReleases({ lookupName: 'some_crate' }) + getReleases({ lookupName: 'some_crate' }) ).rejects.toThrowError(DATASOURCE_FAILURE); }); it('returns null for unknown error', async () => { got.mockImplementationOnce(() => { throw new Error(); }); - expect(await getPkgReleases({ lookupName: 'some_package' })).toBeNull(); + expect(await getReleases({ lookupName: 'some_package' })).toBeNull(); }); it('returns null with wrong auth token', async () => { hostRules.find.mockReturnValueOnce({ token: 'this_simple_token' }); @@ -87,14 +87,14 @@ describe('datasource/hex', () => { statusCode: 401, }) ); - const res = await getPkgReleases({ lookupName: 'certifi' }); + const res = await getReleases({ lookupName: 'certifi' }); expect(res).toBeNull(); }); it('processes real data', async () => { got.mockReturnValueOnce({ body: res1, }); - const res = await getPkgReleases({ lookupName: 'certifi' }); + const res = await getReleases({ lookupName: 'certifi' }); expect(res).toMatchSnapshot(); expect(res).not.toBeNull(); expect(res).toBeDefined(); @@ -104,7 +104,7 @@ describe('datasource/hex', () => { got.mockReturnValueOnce({ body: res1, }); - const res = await getPkgReleases({ lookupName: 'certifi' }); + const res = await getReleases({ lookupName: 'certifi' }); expect(res).toMatchSnapshot(); expect(res).not.toBeNull(); expect(res).toBeDefined(); diff --git a/lib/datasource/hex/index.ts b/lib/datasource/hex/index.ts index 79dd1d8f94..9653258d71 100644 --- a/lib/datasource/hex/index.ts +++ b/lib/datasource/hex/index.ts @@ -15,9 +15,9 @@ interface HexRelease { }[]; } -export async function getPkgReleases({ +export async function getReleases({ lookupName, -}: Partial<GetReleasesConfig>): Promise<ReleaseResult | null> { +}: GetReleasesConfig): Promise<ReleaseResult | null> { // Get dependency name from lookupName. // If the dependency is private lookupName contains organization name as following: // hexPackageName:organizationName diff --git a/lib/datasource/index.spec.ts b/lib/datasource/index.spec.ts index 717c6ad314..746f8c86d5 100644 --- a/lib/datasource/index.spec.ts +++ b/lib/datasource/index.spec.ts @@ -21,7 +21,7 @@ describe('datasource/index', () => { module: datasource.Datasource, name: string ): boolean { - if (!module.getPkgReleases) { + if (!module.getReleases) { return false; } if (module.id !== name) { @@ -47,6 +47,7 @@ describe('datasource/index', () => { it('returns null for no datasource', async () => { expect( await datasource.getPkgReleases({ + datasource: null, depName: 'some/dep', }) ).toBeNull(); @@ -55,6 +56,7 @@ describe('datasource/index', () => { expect( await datasource.getPkgReleases({ datasource: 'npm', + depName: null, }) ).toBeNull(); }); @@ -75,7 +77,7 @@ describe('datasource/index', () => { ).toBeUndefined(); }); it('adds changelogUrl', async () => { - npmDatasource.getPkgReleases.mockResolvedValue({ releases: [] }); + npmDatasource.getReleases.mockResolvedValue({ releases: [] }); const res = await datasource.getPkgReleases({ datasource: datasourceNpm.id, depName: 'react-native', @@ -85,7 +87,7 @@ describe('datasource/index', () => { expect(res.sourceUrl).toBeDefined(); }); it('adds sourceUrl', async () => { - npmDatasource.getPkgReleases.mockResolvedValue({ releases: [] }); + npmDatasource.getReleases.mockResolvedValue({ releases: [] }); const res = await datasource.getPkgReleases({ datasource: datasourceNpm.id, depName: 'node', @@ -94,7 +96,7 @@ describe('datasource/index', () => { expect(res.sourceUrl).toBeDefined(); }); it('trims sourceUrl', async () => { - npmDatasource.getPkgReleases.mockResolvedValue({ + npmDatasource.getReleases.mockResolvedValue({ sourceUrl: ' https://abc.com', releases: [], }); @@ -105,7 +107,7 @@ describe('datasource/index', () => { expect(res.sourceUrl).toEqual('https://abc.com'); }); it('massages sourceUrl', async () => { - npmDatasource.getPkgReleases.mockResolvedValue({ + npmDatasource.getReleases.mockResolvedValue({ sourceUrl: 'scm:git@github.com:Jasig/cas.git', releases: [], }); diff --git a/lib/datasource/index.ts b/lib/datasource/index.ts index 82b80a3631..52f40e43e9 100644 --- a/lib/datasource/index.ts +++ b/lib/datasource/index.ts @@ -5,10 +5,11 @@ import * as allVersioning from '../versioning'; import { Datasource, DatasourceError, - PkgReleaseConfig, Release, ReleaseResult, DigestConfig, + GetReleasesConfig, + GetPkgReleasesConfig, } from './common'; import * as semverVersioning from '../versioning/semver'; import datasources from './api.generated'; @@ -25,25 +26,23 @@ function load(datasource: string): Promise<Datasource> { return datasources.get(datasource); } +type GetReleasesInternalConfig = GetReleasesConfig & GetPkgReleasesConfig; + async function fetchReleases( - config: PkgReleaseConfig + config: GetReleasesInternalConfig ): Promise<ReleaseResult | null> { const { datasource } = config; - if (!datasource) { - logger.warn('No datasource found'); - return null; - } if (!datasources.has(datasource)) { logger.warn('Unknown datasource: ' + datasource); return null; } - const dep = await (await load(datasource)).getPkgReleases(config); + const dep = await (await load(datasource)).getReleases(config); addMetaData(dep, datasource, config.lookupName); return dep; } function getRawReleases( - config: PkgReleaseConfig + config: GetReleasesInternalConfig ): Promise<ReleaseResult | null> { const cacheKey = cacheNamespace + @@ -59,12 +58,15 @@ function getRawReleases( } export async function getPkgReleases( - config: PkgReleaseConfig + config: GetPkgReleasesConfig ): Promise<ReleaseResult | null> { - const { datasource } = config; + if (!config.datasource) { + logger.warn('No datasource found'); + return null; + } const lookupName = config.lookupName || config.depName; if (!lookupName) { - logger.error({ config }, 'Datasource getPkgReleases without lookupName'); + logger.error({ config }, 'Datasource getReleases without lookupName'); return null; } let res: ReleaseResult; @@ -75,7 +77,7 @@ export async function getPkgReleases( }); } catch (e) /* istanbul ignore next */ { if (e instanceof DatasourceError) { - e.datasource = datasource; + e.datasource = config.datasource; e.lookupName = lookupName; } throw e; diff --git a/lib/datasource/maven/index.spec.ts b/lib/datasource/maven/index.spec.ts index c899da6395..2a42acdd12 100644 --- a/lib/datasource/maven/index.spec.ts +++ b/lib/datasource/maven/index.spec.ts @@ -96,9 +96,9 @@ describe('datasource/maven', () => { return versions.map(v => ({ version: v })); } - describe('getPkgReleases', () => { + describe('getReleases', () => { it('should return empty if library is not found', async () => { - const releases = await maven.getPkgReleases({ + const releases = await maven.getReleases({ ...config, lookupName: 'unknown:unknown', registryUrls: [ @@ -110,7 +110,7 @@ describe('datasource/maven', () => { }); it('should simply return all versions of a specific library', async () => { - const releases = await maven.getPkgReleases({ + const releases = await maven.getReleases({ ...config, lookupName: 'org.hamcrest:hamcrest-core', registryUrls: [ @@ -133,7 +133,7 @@ describe('datasource/maven', () => { }); it('should return versions in all repositories for a specific library', async () => { - const releases = await maven.getPkgReleases({ + const releases = await maven.getReleases({ ...config, lookupName: 'mysql:mysql-connector-java', registryUrls: [ @@ -147,7 +147,7 @@ describe('datasource/maven', () => { }); it('should return all versions of a specific library for http repositories', async () => { - const releases = await maven.getPkgReleases({ + const releases = await maven.getReleases({ ...config, lookupName: 'mysql:mysql-connector-java', registryUrls: ['https://repo.maven.apache.org/maven2/'], @@ -156,7 +156,7 @@ describe('datasource/maven', () => { }); it('should return all versions of a specific library if a repository fails', async () => { - const releases = await maven.getPkgReleases({ + const releases = await maven.getReleases({ ...config, lookupName: 'mysql:mysql-connector-java', registryUrls: [ @@ -178,7 +178,7 @@ describe('datasource/maven', () => { expect.assertions(1); await expect( - maven.getPkgReleases({ + maven.getReleases({ ...config, lookupName: 'org:artifact', registryUrls: ['http://central.maven.org/maven2/'], @@ -193,7 +193,7 @@ describe('datasource/maven', () => { expect.assertions(1); await expect( - maven.getPkgReleases({ + maven.getReleases({ ...config, lookupName: 'org:artifact', registryUrls: ['https://repo.maven.apache.org/maven2/'], @@ -202,7 +202,7 @@ describe('datasource/maven', () => { }); it('should return all versions of a specific library if a repository fails because invalid protocol', async () => { - const releases = await maven.getPkgReleases({ + const releases = await maven.getReleases({ ...config, lookupName: 'mysql:mysql-connector-java', registryUrls: [ @@ -228,7 +228,7 @@ describe('datasource/maven', () => { nock('http://invalid_metadata_repo') .get('/maven2/mysql/mysql-connector-java/maven-metadata.xml') .reply(200, invalidMavenMetadata); - const releases = await maven.getPkgReleases({ + const releases = await maven.getReleases({ ...config, lookupName: 'mysql:mysql-connector-java', registryUrls: [ @@ -246,7 +246,7 @@ describe('datasource/maven', () => { nock('http://invalid_metadata_repo') .get('/maven2/mysql/mysql-connector-java/maven-metadata.xml') .reply(200, invalidMavenMetadata); - const releases = await maven.getPkgReleases({ + const releases = await maven.getReleases({ ...config, lookupName: 'mysql:mysql-connector-java', registryUrls: [ @@ -258,7 +258,7 @@ describe('datasource/maven', () => { }); it('should return all versions of a specific library if a repository does not end with /', async () => { - const releases = await maven.getPkgReleases({ + const releases = await maven.getReleases({ ...config, lookupName: 'mysql:mysql-connector-java', registryUrls: ['https://repo.maven.apache.org/maven2'], @@ -267,14 +267,14 @@ describe('datasource/maven', () => { }); it('should return null if no repositories defined', async () => { - const releases = await maven.getPkgReleases({ + const releases = await maven.getReleases({ ...config, lookupName: 'mysql:mysql-connector-java', }); expect(releases).not.toBeNull(); }); it('should return null for invalid registryUrls', async () => { - const releases = await maven.getPkgReleases({ + const releases = await maven.getReleases({ ...config, lookupName: 'mysql:mysql-connector-java', // eslint-disable-next-line no-template-curly-in-string @@ -283,7 +283,7 @@ describe('datasource/maven', () => { expect(releases).toBeNull(); }); it('should support scm.url values prefixed with "scm:"', async () => { - const releases = await maven.getPkgReleases({ + const releases = await maven.getReleases({ ...config, lookupName: 'io.realm:realm-gradle-plugin', registryUrls: ['file://lib/datasource/maven/__fixtures__/jcenter/'], @@ -292,7 +292,7 @@ describe('datasource/maven', () => { }); it('should remove authentication header when redirected with authentication in query string', async () => { - const releases = await maven.getPkgReleases({ + const releases = await maven.getReleases({ ...config, lookupName: 'mysql:mysql-connector-java', registryUrls: ['http://frontend_for_private_s3_repository/maven2'], diff --git a/lib/datasource/maven/index.ts b/lib/datasource/maven/index.ts index c21dd3f503..9c93c87564 100644 --- a/lib/datasource/maven/index.ts +++ b/lib/datasource/maven/index.ts @@ -142,7 +142,7 @@ function extractVersions(metadata: XmlDocument): string[] { return elements.map(el => el.val); } -export async function getPkgReleases({ +export async function getReleases({ lookupName, registryUrls, }: GetReleasesConfig): Promise<ReleaseResult | null> { diff --git a/lib/datasource/npm/index.spec.ts b/lib/datasource/npm/index.spec.ts index 902a899ea0..66be8f7094 100644 --- a/lib/datasource/npm/index.spec.ts +++ b/lib/datasource/npm/index.spec.ts @@ -65,14 +65,14 @@ describe(getName(__filename), () => { nock('https://registry.npmjs.org') .get('/foobar') .reply(200, missingVersions); - const res = await npm.getPkgReleases({ lookupName: 'foobar' }); + const res = await npm.getReleases({ lookupName: '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.getPkgReleases({ lookupName: 'foobar' }); + const res = await npm.getReleases({ lookupName: 'foobar' }); expect(res).toMatchSnapshot(); expect(getRelease(res, '0.0.1').canBeUnpublished).toBe(false); expect(getRelease(res, '0.0.2').canBeUnpublished).toBe(false); @@ -99,7 +99,7 @@ describe(getName(__filename), () => { nock('https://registry.npmjs.org') .get('/foobar') .reply(200, pkg); - const res = await npm.getPkgReleases({ lookupName: 'foobar' }); + const res = await npm.getReleases({ lookupName: 'foobar' }); expect(res).toMatchSnapshot(); expect(res.sourceUrl).toBeDefined(); }); @@ -122,7 +122,7 @@ describe(getName(__filename), () => { nock('https://registry.npmjs.org') .get('/foobar') .reply(200, pkg); - const res = await npm.getPkgReleases({ lookupName: 'foobar' }); + const res = await npm.getReleases({ lookupName: 'foobar' }); expect(res).toMatchSnapshot(); expect(res.sourceUrl).toBeDefined(); }); @@ -153,7 +153,7 @@ describe(getName(__filename), () => { nock('https://registry.npmjs.org') .get('/foobar') .reply(200, deprecatedPackage); - const res = await npm.getPkgReleases({ lookupName: 'foobar' }); + const res = await npm.getReleases({ lookupName: 'foobar' }); expect(res).toMatchSnapshot(); expect(res.deprecationMessage).toMatchSnapshot(); }); @@ -161,14 +161,14 @@ describe(getName(__filename), () => { nock('https://registry.npmjs.org') .get('/foobar') .reply(200, npmResponse); - const res = await npm.getPkgReleases({ lookupName: 'foobar' }); + const res = await npm.getReleases({ lookupName: 'foobar' }); expect(res).toMatchSnapshot(); }); it('should reject name mismatch', async () => { nock('https://registry.npmjs.org') .get('/different') .reply(200, npmResponse); - const res = await npm.getPkgReleases({ lookupName: 'different' }); + const res = await npm.getReleases({ lookupName: 'different' }); expect(res).toBeNull(); }); it('should handle no time', async () => { @@ -176,7 +176,7 @@ describe(getName(__filename), () => { nock('https://registry.npmjs.org') .get('/foobar') .reply(200, npmResponse); - const res = await npm.getPkgReleases({ lookupName: 'foobar' }); + const res = await npm.getReleases({ lookupName: 'foobar' }); expect(res).toMatchSnapshot(); expect(getRelease(res, '0.0.1').canBeUnpublished).toBe(false); expect(getRelease(res, '0.0.2').canBeUnpublished).toBeUndefined(); @@ -188,7 +188,7 @@ describe(getName(__filename), () => { nock('https://registry.npmjs.org') .get('/foobar') .reply(200, npmResponse); - const res = await npm.getPkgReleases({ lookupName: 'foobar' }); + const res = await npm.getReleases({ lookupName: 'foobar' }); expect(getRelease(res, '0.0.1').canBeUnpublished).toBe(false); expect(getRelease(res, '0.0.2').canBeUnpublished).toBe(true); }); @@ -196,23 +196,21 @@ describe(getName(__filename), () => { nock('https://registry.npmjs.org') .get('/foobar') .reply(401); - const res = await npm.getPkgReleases({ lookupName: 'foobar' }); + const res = await npm.getReleases({ lookupName: '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.getPkgReleases({ lookupName: 'foobar' }); + const res = await npm.getReleases({ lookupName: 'foobar' }); expect(res).toBeNull(); }); it('should throw error for unparseable', async () => { nock('https://registry.npmjs.org') .get('/foobar') .reply(200, 'oops'); - await expect( - npm.getPkgReleases({ lookupName: 'foobar' }) - ).rejects.toThrow(); + await expect(npm.getReleases({ lookupName: 'foobar' })).rejects.toThrow(); }); it('should throw error for 429', async () => { nock('https://registry.npmjs.org') @@ -221,15 +219,13 @@ describe(getName(__filename), () => { nock('https://registry.npmjs.org') .get('/foobar') .reply(429); - await expect( - npm.getPkgReleases({ lookupName: 'foobar' }) - ).rejects.toThrow(); + await expect(npm.getReleases({ lookupName: 'foobar' })).rejects.toThrow(); }); it('should throw error for 5xx', async () => { nock('https://registry.npmjs.org') .get('/foobar') .reply(503); - await expect(npm.getPkgReleases({ lookupName: 'foobar' })).rejects.toThrow( + await expect(npm.getReleases({ lookupName: 'foobar' })).rejects.toThrow( Error(DATASOURCE_FAILURE) ); }); @@ -237,7 +233,7 @@ describe(getName(__filename), () => { nock('https://registry.npmjs.org') .get('/foobar') .reply(408); - await expect(npm.getPkgReleases({ lookupName: 'foobar' })).rejects.toThrow( + await expect(npm.getReleases({ lookupName: 'foobar' })).rejects.toThrow( Error(DATASOURCE_FAILURE) ); }); @@ -245,9 +241,7 @@ describe(getName(__filename), () => { nock('https://registry.npmjs.org') .get('/foobar') .reply(451); - await expect( - npm.getPkgReleases({ lookupName: 'foobar' }) - ).rejects.toThrow(); + await expect(npm.getReleases({ lookupName: 'foobar' })).rejects.toThrow(); }); it('should send an authorization header if provided', async () => { registryAuthToken.mockImplementation(() => ({ @@ -257,7 +251,7 @@ describe(getName(__filename), () => { nock('https://registry.npmjs.org') .get('/foobar') .reply(200, npmResponse); - const res = await npm.getPkgReleases({ lookupName: 'foobar' }); + const res = await npm.getReleases({ lookupName: 'foobar' }); expect(res).toMatchSnapshot(); }); it('should use NPM_TOKEN if provided', async () => { @@ -266,7 +260,7 @@ describe(getName(__filename), () => { .reply(200, npmResponse); const oldToken = process.env.NPM_TOKEN; process.env.NPM_TOKEN = 'some-token'; - const res = await npm.getPkgReleases({ lookupName: 'foobar' }); + const res = await npm.getReleases({ lookupName: 'foobar' }); process.env.NPM_TOKEN = oldToken; expect(res).toMatchSnapshot(); }); @@ -280,7 +274,7 @@ describe(getName(__filename), () => { .get('/foobar') .reply(200, npmResponse); const npmrc = 'registry=https://npm.mycustomregistry.com/'; - const res = await npm.getPkgReleases({ lookupName: 'foobar', npmrc }); + const res = await npm.getReleases({ lookupName: 'foobar', npmrc }); expect(res).toMatchSnapshot(); }); it('should use host rules by baseUrl if provided', async () => { @@ -297,7 +291,7 @@ describe(getName(__filename), () => { .reply(200, npmResponse); const npmrc = 'registry=https://npm.mycustomregistry.com/_packaging/mycustomregistry/npm/registry/'; - const res = await npm.getPkgReleases({ lookupName: 'foobar', npmrc }); + const res = await npm.getReleases({ lookupName: 'foobar', npmrc }); expect(res).toMatchSnapshot(); }); it('resets npmrc', () => { @@ -310,7 +304,7 @@ describe(getName(__filename), () => { .get('/foobar') .reply(200, npmResponse); const npmrc = 'foo=bar'; - const res = await npm.getPkgReleases({ lookupName: 'foobar', npmrc }); + const res = await npm.getReleases({ lookupName: 'foobar', npmrc }); expect(res).toMatchSnapshot(); }); it('should cache package info from npm', async () => { @@ -318,8 +312,8 @@ describe(getName(__filename), () => { .get('/foobar') .reply(200, npmResponse); const npmrc = '//registry.npmjs.org/:_authToken=abcdefghijklmnopqrstuvwxyz'; - const res1 = await npm.getPkgReleases({ lookupName: 'foobar', npmrc }); - const res2 = await npm.getPkgReleases({ lookupName: 'foobar', npmrc }); + const res1 = await npm.getReleases({ lookupName: 'foobar', npmrc }); + const res2 = await npm.getReleases({ lookupName: 'foobar', npmrc }); expect(res1).not.toBeNull(); expect(res1).toEqual(res2); }); @@ -330,7 +324,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.getPkgReleases({ lookupName: 'foobar', npmrc }); + const res = await npm.getReleases({ lookupName: 'foobar', npmrc }); expect(res).toMatchSnapshot(); }); it('should replace any environment variable in npmrc', async () => { @@ -342,7 +336,7 @@ describe(getName(__filename), () => { global.trustLevel = 'high'; // eslint-disable-next-line no-template-curly-in-string const npmrc = 'registry=${REGISTRY}'; - const res = await npm.getPkgReleases({ lookupName: 'foobar', npmrc }); + const res = await npm.getReleases({ lookupName: 'foobar', npmrc }); expect(res).toMatchSnapshot(); }); it('should throw error if necessary env var is not present', () => { diff --git a/lib/datasource/npm/index.ts b/lib/datasource/npm/index.ts index d9866922c4..606041136d 100644 --- a/lib/datasource/npm/index.ts +++ b/lib/datasource/npm/index.ts @@ -1,4 +1,4 @@ export { resetMemCache, resetCache } from './get'; -export { getPkgReleases } from './releases'; +export { getReleases } from './releases'; export { setNpmrc } from './npmrc'; export { id } from './common'; diff --git a/lib/datasource/npm/releases.ts b/lib/datasource/npm/releases.ts index 3c0f080db4..f90e4c03be 100644 --- a/lib/datasource/npm/releases.ts +++ b/lib/datasource/npm/releases.ts @@ -2,7 +2,7 @@ import { getDependency } from './get'; import { setNpmrc } from './npmrc'; import { GetReleasesConfig, ReleaseResult } from '../common'; -export async function getPkgReleases({ +export async function getReleases({ lookupName, npmrc, }: GetReleasesConfig): Promise<ReleaseResult | null> { diff --git a/lib/datasource/nuget/__snapshots__/index.spec.ts.snap b/lib/datasource/nuget/__snapshots__/index.spec.ts.snap index 581567bfeb..1b704b89b2 100644 --- a/lib/datasource/nuget/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/nuget/__snapshots__/index.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`datasource/nuget getPkgReleases handles paginated results (v2) 1`] = ` +exports[`datasource/nuget getReleases handles paginated results (v2) 1`] = ` Object { "pkgName": "nunit", "releases": Array [ @@ -14,7 +14,7 @@ Object { } `; -exports[`datasource/nuget getPkgReleases processes real data (v2) 1`] = ` +exports[`datasource/nuget getReleases processes real data (v2) 1`] = ` Object { "pkgName": "nunit", "releases": Array [ @@ -152,7 +152,7 @@ Object { } `; -exports[`datasource/nuget getPkgReleases processes real data (v3) feed is a nuget.org 1`] = ` +exports[`datasource/nuget getReleases processes real data (v3) feed is a nuget.org 1`] = ` Object { "pkgName": "nunit", "releases": Array [ @@ -248,7 +248,7 @@ Object { } `; -exports[`datasource/nuget getPkgReleases processes real data (v3) feed is not a nuget.org 1`] = ` +exports[`datasource/nuget getReleases processes real data (v3) feed is not a nuget.org 1`] = ` Object { "pkgName": "nunit", "releases": Array [ @@ -344,7 +344,7 @@ Object { } `; -exports[`datasource/nuget getPkgReleases processes real data with no github project url (v2) 1`] = ` +exports[`datasource/nuget getReleases processes real data with no github project url (v2) 1`] = ` Object { "pkgName": "nunit", "releases": Array [ @@ -356,7 +356,7 @@ Object { } `; -exports[`datasource/nuget getPkgReleases processes real data with no github project url (v3) 1`] = ` +exports[`datasource/nuget getReleases processes real data with no github project url (v3) 1`] = ` Object { "pkgName": "nunit", "releases": Array [ @@ -368,7 +368,7 @@ Object { } `; -exports[`datasource/nuget getPkgReleases processes real data without project url (v2) 1`] = ` +exports[`datasource/nuget getReleases processes real data without project url (v2) 1`] = ` Object { "pkgName": "nunit", "releases": Array [ @@ -505,7 +505,7 @@ Object { } `; -exports[`datasource/nuget getPkgReleases processes real data without project url (v3) 1`] = ` +exports[`datasource/nuget getReleases processes real data without project url (v3) 1`] = ` Object { "pkgName": "nunit", "releases": Array [ diff --git a/lib/datasource/nuget/index.spec.ts b/lib/datasource/nuget/index.spec.ts index 0c30b13a37..5fa8ac0e3b 100644 --- a/lib/datasource/nuget/index.spec.ts +++ b/lib/datasource/nuget/index.spec.ts @@ -87,7 +87,7 @@ const configV3NotNugetOrg = { describe('datasource/nuget', () => { beforeEach(() => global.renovateCache.rmAll()); - describe('getPkgReleases', () => { + describe('getReleases', () => { beforeEach(() => { jest.resetAllMocks(); hostRules.hosts = jest.fn(() => []); @@ -101,7 +101,7 @@ describe('datasource/nuget', () => { }; expect( - await nuget.getPkgReleases({ + await nuget.getReleases({ ...config, }) ).toBeNull(); @@ -112,14 +112,14 @@ describe('datasource/nuget', () => { lookupName: 'nunit', registryUrls: ['https://my-registry#protocolVersion=3'], }; - await nuget.getPkgReleases({ + await nuget.getReleases({ ...config, }); expect(got.mock.calls[0][0]).toEqual('https://my-registry/'); }); it('queries the default nuget feed if no registries are supplied', async () => { - await nuget.getPkgReleases({ + await nuget.getReleases({ ...configNoRegistryUrls, }); expect(got.mock.calls[0][0]).toEqual( @@ -135,7 +135,7 @@ describe('datasource/nuget', () => { got.mockReturnValueOnce({ statusCode: 500, }); - const res = await nuget.getPkgReleases({ + const res = await nuget.getReleases({ ...configV3, }); @@ -150,7 +150,7 @@ describe('datasource/nuget', () => { body: JSON.parse('{"totalHits": 0}'), statusCode: 200, }); - const res = await nuget.getPkgReleases({ + const res = await nuget.getReleases({ ...configV3, }); @@ -160,7 +160,7 @@ describe('datasource/nuget', () => { it('returns null for empty result (v3v2)', async () => { got.mockReturnValueOnce({}); expect( - await nuget.getPkgReleases({ + await nuget.getReleases({ ...configV3V2, }) ).toBeNull(); @@ -168,7 +168,7 @@ describe('datasource/nuget', () => { it('returns null for empty result (v2)', async () => { got.mockReturnValueOnce({}); expect( - await nuget.getPkgReleases({ + await nuget.getReleases({ ...configV2, }) ).toBeNull(); @@ -176,7 +176,7 @@ describe('datasource/nuget', () => { it('returns null for empty result (v3)', async () => { got.mockReturnValueOnce({}); expect( - await nuget.getPkgReleases({ + await nuget.getReleases({ ...configV3, }) ).toBeNull(); @@ -189,7 +189,7 @@ describe('datasource/nuget', () => { }) ); expect( - await nuget.getPkgReleases({ + await nuget.getReleases({ ...configV3V2, }) ).toBeNull(); @@ -201,7 +201,7 @@ describe('datasource/nuget', () => { }) ); expect( - await nuget.getPkgReleases({ + await nuget.getReleases({ ...configV3, }) ).toBeNull(); @@ -213,7 +213,7 @@ describe('datasource/nuget', () => { }) ); expect( - await nuget.getPkgReleases({ + await nuget.getReleases({ ...configV2, }) ).toBeNull(); @@ -224,17 +224,17 @@ describe('datasource/nuget', () => { throw new Error(); }); expect( - await nuget.getPkgReleases({ + await nuget.getReleases({ ...configV3V2, }) ).toBeNull(); }); - it('returns null for unknown error in getPkgReleasesFromV3Feed (v3)', async () => { + it('returns null for unknown error in getReleasesFromV3Feed (v3)', async () => { got.mockImplementationOnce(() => { throw new Error(); }); expect( - await nuget.getPkgReleases({ + await nuget.getReleases({ ...configV3, }) ).toBeNull(); @@ -248,7 +248,7 @@ describe('datasource/nuget', () => { throw new Error(); }); expect( - await nuget.getPkgReleases({ + await nuget.getReleases({ ...configV3, }) ).toBeNull(); @@ -258,7 +258,7 @@ describe('datasource/nuget', () => { throw new Error(); }); expect( - await nuget.getPkgReleases({ + await nuget.getReleases({ ...configV2, }) ).toBeNull(); @@ -276,7 +276,7 @@ describe('datasource/nuget', () => { body: pkgInfoV3FromNuget, statusCode: 200, }); - const res = await nuget.getPkgReleases({ + const res = await nuget.getReleases({ ...configV3, }); expect(res).not.toBeNull(); @@ -292,7 +292,7 @@ describe('datasource/nuget', () => { body: JSON.parse(pkgListV3), statusCode: 200, }); - const res = await nuget.getPkgReleases({ + const res = await nuget.getReleases({ ...configV3NotNugetOrg, }); expect(res).not.toBeNull(); @@ -308,7 +308,7 @@ describe('datasource/nuget', () => { body: JSON.parse(pkgListV3), statusCode: 200, }); - const res = await nuget.getPkgReleases({ + const res = await nuget.getReleases({ ...configV3NotNugetOrg, lookupName: 'nun', }); @@ -323,7 +323,7 @@ describe('datasource/nuget', () => { body: JSON.parse(pkgListV3WithoutProkjectUrl), statusCode: 200, }); - const res = await nuget.getPkgReleases({ + const res = await nuget.getReleases({ ...configV3NotNugetOrg, }); expect(res).not.toBeNull(); @@ -339,7 +339,7 @@ describe('datasource/nuget', () => { body: JSON.parse(pkgListV3NoGitHubProjectUrl), statusCode: 200, }); - const res = await nuget.getPkgReleases({ + const res = await nuget.getReleases({ ...configV3NotNugetOrg, }); expect(res).not.toBeNull(); @@ -350,7 +350,7 @@ describe('datasource/nuget', () => { body: pkgListV2, statusCode: 200, }); - const res = await nuget.getPkgReleases({ + const res = await nuget.getReleases({ ...configV2, }); expect(res).not.toBeNull(); @@ -362,7 +362,7 @@ describe('datasource/nuget', () => { body: pkgListV2NoRelease, statusCode: 200, }); - const res = await nuget.getPkgReleases({ + const res = await nuget.getReleases({ ...configV2, }); expect(res).toBeNull(); @@ -372,7 +372,7 @@ describe('datasource/nuget', () => { body: pkgListV2WithoutProjectUrl, statusCode: 200, }); - const res = await nuget.getPkgReleases({ + const res = await nuget.getReleases({ ...configV2, }); expect(res).not.toBeNull(); @@ -384,7 +384,7 @@ describe('datasource/nuget', () => { body: pkgListV2NoGitHubProjectUrl, statusCode: 200, }); - const res = await nuget.getPkgReleases({ + const res = await nuget.getReleases({ ...configV2, }); expect(res).not.toBeNull(); @@ -399,7 +399,7 @@ describe('datasource/nuget', () => { body: pkgListV2Page2of2, statusCode: 200, }); - const res = await nuget.getPkgReleases({ + const res = await nuget.getReleases({ ...configV2, }); expect(res).not.toBeNull(); diff --git a/lib/datasource/nuget/index.ts b/lib/datasource/nuget/index.ts index 092cac6bb6..727148a4cc 100644 --- a/lib/datasource/nuget/index.ts +++ b/lib/datasource/nuget/index.ts @@ -27,20 +27,20 @@ function parseRegistryUrl( } } -export async function getPkgReleases({ +export async function getReleases({ lookupName, registryUrls, }: GetReleasesConfig): Promise<ReleaseResult> { - logger.trace(`nuget.getPkgReleases(${lookupName})`); + logger.trace(`nuget.getReleases(${lookupName})`); let dep: ReleaseResult = null; for (const feed of registryUrls || [v3.getDefaultFeed()]) { const { feedUrl, protocolVersion } = parseRegistryUrl(feed); if (protocolVersion === 2) { - dep = await v2.getPkgReleases(feedUrl, lookupName); + dep = await v2.getReleases(feedUrl, lookupName); } else if (protocolVersion === 3) { const queryUrl = await v3.getQueryUrl(feedUrl); if (queryUrl !== null) { - dep = await v3.getPkgReleases(feedUrl, queryUrl, lookupName); + dep = await v3.getReleases(feedUrl, queryUrl, lookupName); } } if (dep != null) { diff --git a/lib/datasource/nuget/v2.ts b/lib/datasource/nuget/v2.ts index 86b765dc93..fceb7e94d3 100644 --- a/lib/datasource/nuget/v2.ts +++ b/lib/datasource/nuget/v2.ts @@ -11,7 +11,7 @@ function getPkgProp(pkgInfo: XmlElement, propName: string): string { return pkgInfo.childNamed('m:properties').childNamed(`d:${propName}`).val; } -export async function getPkgReleases( +export async function getReleases( feedUrl: string, pkgName: string ): Promise<ReleaseResult | null> { diff --git a/lib/datasource/nuget/v3.ts b/lib/datasource/nuget/v3.ts index 75d57e170a..d1fb91e5b5 100644 --- a/lib/datasource/nuget/v3.ts +++ b/lib/datasource/nuget/v3.ts @@ -56,7 +56,7 @@ export async function getQueryUrl(url: string): Promise<string | null> { } } -export async function getPkgReleases( +export async function getReleases( registryUrl: string, feedUrl: string, pkgName: string diff --git a/lib/datasource/orb/__snapshots__/index.spec.ts.snap b/lib/datasource/orb/__snapshots__/index.spec.ts.snap index b586007736..7451fb7e7d 100644 --- a/lib/datasource/orb/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/orb/__snapshots__/index.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`datasource/orb getPkgReleases processes homeUrl 1`] = ` +exports[`datasource/orb getReleases processes homeUrl 1`] = ` Object { "homepage": "https://google.com", "name": "hyper-expanse/library-release-workflows", @@ -50,7 +50,7 @@ Object { } `; -exports[`datasource/orb getPkgReleases processes real data 1`] = ` +exports[`datasource/orb getReleases processes real data 1`] = ` Object { "homepage": "https://circleci.com/orbs/registry/orb/hyper-expanse/library-release-workflows", "name": "hyper-expanse/library-release-workflows", diff --git a/lib/datasource/orb/index.spec.ts b/lib/datasource/orb/index.spec.ts index b491e0793c..ea5da05f95 100644 --- a/lib/datasource/orb/index.spec.ts +++ b/lib/datasource/orb/index.spec.ts @@ -27,7 +27,7 @@ const orbData = { }; describe('datasource/orb', () => { - describe('getPkgReleases', () => { + describe('getReleases', () => { beforeEach(() => { jest.clearAllMocks(); global.repoCache = {}; @@ -36,7 +36,7 @@ describe('datasource/orb', () => { it('returns null for empty result', async () => { got.mockReturnValueOnce({ body: {} }); expect( - await datasource.getPkgReleases({ + await datasource.getReleases({ lookupName: 'hyper-expanse/library-release-workflows', }) ).toBeNull(); @@ -44,7 +44,7 @@ describe('datasource/orb', () => { it('returns null for missing orb', async () => { got.mockReturnValueOnce({ body: { data: {} } }); expect( - await datasource.getPkgReleases({ + await datasource.getReleases({ lookupName: 'hyper-expanse/library-release-wonkflows', }) ).toBeNull(); @@ -56,7 +56,7 @@ describe('datasource/orb', () => { }) ); expect( - await datasource.getPkgReleases({ + await datasource.getReleases({ lookupName: 'hyper-expanse/library-release-workflows', }) ).toBeNull(); @@ -66,7 +66,7 @@ describe('datasource/orb', () => { throw new Error(); }); expect( - await datasource.getPkgReleases({ + await datasource.getReleases({ lookupName: 'hyper-expanse/library-release-workflows', }) ).toBeNull(); @@ -75,7 +75,7 @@ describe('datasource/orb', () => { got.mockReturnValueOnce({ body: orbData, }); - const res = await datasource.getPkgReleases({ + const res = await datasource.getReleases({ lookupName: 'hyper-expanse/library-release-workflows', }); expect(res).toMatchSnapshot(); @@ -86,7 +86,7 @@ describe('datasource/orb', () => { got.mockReturnValueOnce({ body: orbData, }); - const res = await datasource.getPkgReleases({ + const res = await datasource.getReleases({ lookupName: 'hyper-expanse/library-release-workflows', }); expect(res).toMatchSnapshot(); diff --git a/lib/datasource/orb/index.ts b/lib/datasource/orb/index.ts index 9d7388966b..22495ee099 100644 --- a/lib/datasource/orb/index.ts +++ b/lib/datasource/orb/index.ts @@ -15,14 +15,14 @@ interface OrbRelease { } /** - * orb.getPkgReleases + * orb.getReleases * * This function will fetch an orb from CircleCI and return all semver versions. */ -export async function getPkgReleases({ +export async function getReleases({ lookupName, }: GetReleasesConfig): Promise<ReleaseResult | null> { - logger.debug({ lookupName }, 'orb.getPkgReleases()'); + logger.debug({ lookupName }, 'orb.getReleases()'); const cacheNamespace = 'orb'; const cacheKey = lookupName; const cachedResult = await renovateCache.get<ReleaseResult>( diff --git a/lib/datasource/packagist/__snapshots__/index.spec.ts.snap b/lib/datasource/packagist/__snapshots__/index.spec.ts.snap index 0f6e830772..5cae6de70c 100644 --- a/lib/datasource/packagist/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/packagist/__snapshots__/index.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`datasource/packagist getPkgReleases adds packagist source implicitly 1`] = ` +exports[`datasource/packagist getReleases adds packagist source implicitly 1`] = ` Object { "homepage": "https://github.com/drewm/mailchimp-api", "name": "drewm/mailchimp-api", @@ -100,7 +100,7 @@ Object { } `; -exports[`datasource/packagist getPkgReleases processes real versioned data 1`] = ` +exports[`datasource/packagist getReleases processes real versioned data 1`] = ` Object { "homepage": "https://github.com/drewm/mailchimp-api", "name": "drewm/mailchimp-api", @@ -200,7 +200,7 @@ Object { } `; -exports[`datasource/packagist getPkgReleases supports includes packages 1`] = ` +exports[`datasource/packagist getReleases supports includes packages 1`] = ` Object { "homepage": "http://guzzlephp.org/", "name": "guzzlehttp/guzzle", @@ -345,7 +345,7 @@ Object { } `; -exports[`datasource/packagist getPkgReleases supports plain packages 1`] = ` +exports[`datasource/packagist getReleases supports plain packages 1`] = ` Object { "homepage": undefined, "name": "vendor/package-name", @@ -374,7 +374,7 @@ Object { } `; -exports[`datasource/packagist getPkgReleases supports providers packages 1`] = ` +exports[`datasource/packagist getReleases supports providers packages 1`] = ` Object { "homepage": "https://wordpress.org/plugins/1beyt/", "name": "wpackagist-plugin/1beyt", diff --git a/lib/datasource/packagist/index.spec.ts b/lib/datasource/packagist/index.spec.ts index e3d8f2f2a6..1f206ddf19 100644 --- a/lib/datasource/packagist/index.spec.ts +++ b/lib/datasource/packagist/index.spec.ts @@ -21,7 +21,7 @@ const mailchimpJson: any = fs.readFileSync( ); describe('datasource/packagist', () => { - describe('getPkgReleases', () => { + describe('getReleases', () => { let config: any; beforeEach(() => { jest.resetAllMocks(); @@ -41,7 +41,7 @@ describe('datasource/packagist', () => { config = { registryUrls: ['https://composer.renovatebot.com'], }; - const res = await packagist.getPkgReleases({ + const res = await packagist.getReleases({ ...config, lookupName: 'something/one', }); @@ -61,7 +61,7 @@ describe('datasource/packagist', () => { got.mockReturnValueOnce({ body: packagesOnly, }); - const res = await packagist.getPkgReleases({ + const res = await packagist.getReleases({ ...config, lookupName: 'vendor/package-name', }); @@ -73,7 +73,7 @@ describe('datasource/packagist', () => { code: 'ETIMEDOUT', }) ); - const res = await packagist.getPkgReleases({ + const res = await packagist.getReleases({ ...config, lookupName: 'vendor/package-name2', }); @@ -85,7 +85,7 @@ describe('datasource/packagist', () => { statusCode: 403, }) ); - const res = await packagist.getPkgReleases({ + const res = await packagist.getReleases({ ...config, lookupName: 'vendor/package-name', }); @@ -98,7 +98,7 @@ describe('datasource/packagist', () => { url: 'https://some.registry/packages.json', }) ); - const res = await packagist.getPkgReleases({ + const res = await packagist.getReleases({ ...config, lookupName: 'drewm/mailchip-api', }); @@ -123,7 +123,7 @@ describe('datasource/packagist', () => { got.mockReturnValueOnce({ body: JSON.parse(includesJson), }); - const res = await packagist.getPkgReleases({ + const res = await packagist.getReleases({ ...config, lookupName: 'guzzlehttp/guzzle', }); @@ -162,7 +162,7 @@ describe('datasource/packagist', () => { got.mockReturnValueOnce({ body: JSON.parse(beytJson), }); - const res = await packagist.getPkgReleases({ + const res = await packagist.getReleases({ ...config, lookupName: 'wpackagist-plugin/1beyt', }); @@ -201,7 +201,7 @@ describe('datasource/packagist', () => { got.mockReturnValueOnce({ body: JSON.parse(beytJson), }); - const res = await packagist.getPkgReleases({ + const res = await packagist.getReleases({ ...config, lookupName: 'some/other', }); @@ -213,7 +213,7 @@ describe('datasource/packagist', () => { }); config.registryUrls = ['https://packagist.org']; expect( - await packagist.getPkgReleases({ + await packagist.getReleases({ ...config, lookupName: 'drewm/mailchimp-api', }) @@ -225,7 +225,7 @@ describe('datasource/packagist', () => { }); config.registryUrls = []; expect( - await packagist.getPkgReleases({ + await packagist.getReleases({ ...config, lookupName: 'drewm/mailchimp-api', }) diff --git a/lib/datasource/packagist/index.ts b/lib/datasource/packagist/index.ts index 0755d2a4aa..a4b10883ea 100644 --- a/lib/datasource/packagist/index.ts +++ b/lib/datasource/packagist/index.ts @@ -306,11 +306,11 @@ async function packageLookup( } } -export async function getPkgReleases({ +export async function getReleases({ lookupName, registryUrls, }: GetReleasesConfig): Promise<ReleaseResult> { - logger.trace(`getPkgReleases(${lookupName})`); + logger.trace(`getReleases(${lookupName})`); let res: ReleaseResult; const registries = is.nonEmptyArray(registryUrls) diff --git a/lib/datasource/pod/index.spec.ts b/lib/datasource/pod/index.spec.ts index b0a3e4651e..1fbbb09b08 100644 --- a/lib/datasource/pod/index.spec.ts +++ b/lib/datasource/pod/index.spec.ts @@ -1,5 +1,5 @@ import { api as _api } from '../../platform/github/gh-got-wrapper'; -import { getPkgReleases } from '.'; +import { getReleases } from '.'; import { mocked } from '../../../test/util'; import { GotResponse } from '../../platform'; @@ -13,12 +13,12 @@ const config = { }; describe('datasource/cocoapods', () => { - describe('getPkgReleases', () => { + describe('getReleases', () => { beforeEach(() => global.renovateCache.rmAll()); it('returns null for invalid inputs', async () => { api.get.mockResolvedValueOnce(null); expect( - await getPkgReleases({ + await getReleases({ lookupName: 'foobar', registryUrls: [], }) @@ -26,14 +26,14 @@ describe('datasource/cocoapods', () => { }); it('returns null for empty result', async () => { api.get.mockResolvedValueOnce(null); - expect(await getPkgReleases(config)).toBeNull(); + expect(await getReleases(config)).toBeNull(); }); it('returns null for missing fields', async () => { api.get.mockResolvedValueOnce({} as GotResponse); - expect(await getPkgReleases(config)).toBeNull(); + expect(await getReleases(config)).toBeNull(); api.get.mockResolvedValueOnce({ body: '' } as GotResponse); - expect(await getPkgReleases(config)).toBeNull(); + expect(await getReleases(config)).toBeNull(); }); it('returns null for 404', async () => { api.get.mockImplementation(() => @@ -42,7 +42,7 @@ describe('datasource/cocoapods', () => { }) ); expect( - await getPkgReleases({ + await getReleases({ ...config, registryUrls: [ ...config.registryUrls, @@ -58,7 +58,7 @@ describe('datasource/cocoapods', () => { statusCode: 401, }) ); - expect(await getPkgReleases(config)).toBeNull(); + expect(await getReleases(config)).toBeNull(); }); it('throws for 429', async () => { api.get.mockImplementationOnce(() => @@ -66,7 +66,7 @@ describe('datasource/cocoapods', () => { statusCode: 429, }) ); - await expect(getPkgReleases(config)).rejects.toThrowError( + await expect(getReleases(config)).rejects.toThrowError( 'registry-failure' ); }); @@ -76,7 +76,7 @@ describe('datasource/cocoapods', () => { statusCode: 502, }) ); - await expect(getPkgReleases(config)).rejects.toThrowError( + await expect(getReleases(config)).rejects.toThrowError( 'registry-failure' ); }); @@ -84,14 +84,14 @@ describe('datasource/cocoapods', () => { api.get.mockImplementationOnce(() => { throw new Error(); }); - expect(await getPkgReleases(config)).toBeNull(); + expect(await getReleases(config)).toBeNull(); }); it('processes real data from CDN', async () => { api.get.mockResolvedValueOnce({ body: 'foo/1.2.3', } as GotResponse); expect( - await getPkgReleases({ + await getReleases({ ...config, registryUrls: ['https://cdn.cocoapods.org'], }) @@ -108,7 +108,7 @@ describe('datasource/cocoapods', () => { body: [{ name: '1.2.3' }], } as GotResponse); expect( - await getPkgReleases({ + await getReleases({ ...config, registryUrls: ['https://github.com/Artsy/Specs'], }) diff --git a/lib/datasource/pod/index.ts b/lib/datasource/pod/index.ts index e39c0a9e0f..e41dcbc50c 100644 --- a/lib/datasource/pod/index.ts +++ b/lib/datasource/pod/index.ts @@ -123,7 +123,7 @@ function isDefaultRepo(url: string): boolean { return false; } -export async function getPkgReleases( +export async function getReleases( config: GetReleasesConfig ): Promise<ReleaseResult | null> { const { lookupName } = config; diff --git a/lib/datasource/pypi/__snapshots__/index.spec.ts.snap b/lib/datasource/pypi/__snapshots__/index.spec.ts.snap index 7e9db5af86..c13442397b 100644 --- a/lib/datasource/pypi/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/pypi/__snapshots__/index.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`datasource/pypi getPkgReleases process data from +simple endpoint 1`] = ` +exports[`datasource/pypi getReleases process data from +simple endpoint 1`] = ` Object { "releases": Array [ Object { @@ -40,7 +40,7 @@ Object { } `; -exports[`datasource/pypi getPkgReleases process data from simple endpoint 1`] = ` +exports[`datasource/pypi getReleases process data from simple endpoint 1`] = ` Object { "releases": Array [ Object { @@ -80,7 +80,7 @@ Object { } `; -exports[`datasource/pypi getPkgReleases process data from simple endpoint with hyphens replaced with underscores 1`] = ` +exports[`datasource/pypi getReleases process data from simple endpoint with hyphens replaced with underscores 1`] = ` Object { "releases": Array [ Object { @@ -90,7 +90,7 @@ Object { } `; -exports[`datasource/pypi getPkgReleases processes real data 1`] = ` +exports[`datasource/pypi getReleases processes real data 1`] = ` Object { "releases": Array [ Object { @@ -186,7 +186,7 @@ Object { } `; -exports[`datasource/pypi getPkgReleases respects compatibility 1`] = ` +exports[`datasource/pypi getReleases respects compatibility 1`] = ` Object { "releases": Array [ Object { @@ -205,14 +205,14 @@ Object { } `; -exports[`datasource/pypi getPkgReleases returns non-github home_page 1`] = ` +exports[`datasource/pypi getReleases returns non-github home_page 1`] = ` Object { "homepage": "https://microsoft.com", "releases": Array [], } `; -exports[`datasource/pypi getPkgReleases supports custom datasource url 1`] = ` +exports[`datasource/pypi getReleases supports custom datasource url 1`] = ` Array [ Array [ "https://custom.pypi.net/foo/azure-cli-monitor/json", @@ -229,7 +229,7 @@ Array [ ] `; -exports[`datasource/pypi getPkgReleases supports custom datasource url from environmental variable 1`] = ` +exports[`datasource/pypi getReleases supports custom datasource url from environmental variable 1`] = ` Array [ Array [ "https://my.pypi.python/pypi/azure-cli-monitor/json", @@ -246,7 +246,7 @@ Array [ ] `; -exports[`datasource/pypi getPkgReleases supports multiple custom datasource urls 1`] = ` +exports[`datasource/pypi getReleases supports multiple custom datasource urls 1`] = ` Array [ Array [ "https://custom.pypi.net/foo/azure-cli-monitor/json", diff --git a/lib/datasource/pypi/index.spec.ts b/lib/datasource/pypi/index.spec.ts index dbade77233..8b696f5f1b 100644 --- a/lib/datasource/pypi/index.spec.ts +++ b/lib/datasource/pypi/index.spec.ts @@ -20,7 +20,7 @@ const mixedHyphensResponse = fs.readFileSync( ); describe('datasource/pypi', () => { - describe('getPkgReleases', () => { + describe('getReleases', () => { const OLD_ENV = process.env; beforeEach(() => { @@ -40,7 +40,7 @@ describe('datasource/pypi', () => { it('returns null for empty result', async () => { got.mockReturnValueOnce({}); expect( - await pypi.getPkgReleases({ + await pypi.getReleases({ lookupName: 'something', }) ).toBeNull(); @@ -50,7 +50,7 @@ describe('datasource/pypi', () => { throw new Error(); }); expect( - await pypi.getPkgReleases({ + await pypi.getReleases({ lookupName: 'something', }) ).toBeNull(); @@ -60,7 +60,7 @@ describe('datasource/pypi', () => { body: JSON.parse(res1), }); expect( - await pypi.getPkgReleases({ + await pypi.getReleases({ lookupName: 'azure-cli-monitor', }) ).toMatchSnapshot(); @@ -72,7 +72,7 @@ describe('datasource/pypi', () => { const config = { registryUrls: ['https://custom.pypi.net/foo'], }; - await pypi.getPkgReleases({ + await pypi.getReleases({ ...config, lookupName: 'azure-cli-monitor', }); @@ -84,7 +84,7 @@ describe('datasource/pypi', () => { }); const pipIndexUrl = process.env.PIP_INDEX_URL; process.env.PIP_INDEX_URL = 'https://my.pypi.python/pypi/'; - await pypi.getPkgReleases({ + await pypi.getReleases({ lookupName: 'azure-cli-monitor', }); expect(got.mock.calls).toMatchSnapshot(); @@ -103,7 +103,7 @@ describe('datasource/pypi', () => { 'https://third-index/foo', ], }; - await pypi.getPkgReleases({ + await pypi.getReleases({ ...config, lookupName: 'azure-cli-monitor', }); @@ -119,7 +119,7 @@ describe('datasource/pypi', () => { }, }); expect( - await pypi.getPkgReleases({ + await pypi.getReleases({ lookupName: 'something', }) ).toMatchSnapshot(); @@ -134,7 +134,7 @@ describe('datasource/pypi', () => { }, }); expect( - await pypi.getPkgReleases({ + await pypi.getReleases({ lookupName: 'something', }) ).toBeNull(); @@ -158,7 +158,7 @@ describe('datasource/pypi', () => { }, }); expect( - await pypi.getPkgReleases({ + await pypi.getReleases({ compatibility: { python: '2.7' }, lookupName: 'doit', }) @@ -172,7 +172,7 @@ describe('datasource/pypi', () => { registryUrls: ['https://pypi.org/simple/'], }; expect( - await pypi.getPkgReleases({ + await pypi.getReleases({ ...config, compatibility: { python: '2.7' }, lookupName: 'dj-database-url', @@ -187,7 +187,7 @@ describe('datasource/pypi', () => { registryUrls: ['https://some.registry.org/+simple/'], }; expect( - await pypi.getPkgReleases({ + await pypi.getReleases({ ...config, compatibility: { python: '2.7' }, lookupName: 'dj-database-url', @@ -202,7 +202,7 @@ describe('datasource/pypi', () => { registryUrls: ['https://pypi.org/simple/'], }; expect( - await pypi.getPkgReleases({ + await pypi.getReleases({ ...config, compatibility: { python: '2.7' }, lookupName: 'image-collector', @@ -215,7 +215,7 @@ describe('datasource/pypi', () => { registryUrls: ['https://pypi.org/simple/'], }; expect( - await pypi.getPkgReleases({ + await pypi.getReleases({ ...config, compatibility: { python: '2.7' }, lookupName: 'dj-database-url', @@ -230,7 +230,7 @@ describe('datasource/pypi', () => { registryUrls: ['https://pypi.org/simple/'], }; expect( - await pypi.getPkgReleases({ + await pypi.getReleases({ ...config, compatibility: { python: '2.7' }, lookupName: 'dj-database-url', @@ -245,7 +245,7 @@ describe('datasource/pypi', () => { registryUrls: ['https://pypi.org/simple/'], }; expect( - await pypi.getPkgReleases({ + await pypi.getReleases({ ...config, compatibility: { python: '2.7' }, lookupName: 'dj-database-url', diff --git a/lib/datasource/pypi/index.ts b/lib/datasource/pypi/index.ts index bbb7a30884..78548e4c32 100644 --- a/lib/datasource/pypi/index.ts +++ b/lib/datasource/pypi/index.ts @@ -157,7 +157,7 @@ async function getSimpleDependency( } } -export async function getPkgReleases({ +export async function getReleases({ compatibility, lookupName, registryUrls, diff --git a/lib/datasource/readme.md b/lib/datasource/readme.md index 9f81ffa05d..ad8fc50b32 100644 --- a/lib/datasource/readme.md +++ b/lib/datasource/readme.md @@ -2,16 +2,16 @@ Datasources are used in Renovate primarily to fetch released versions of packages. -### getPkgReleases +### getReleases -The minimum exported interface for a datasource is a function called `getPkgReleases` that takes a lookup config as input. +The minimum exported interface for a datasource is a function called `getReleases` that takes a lookup config as input. The config contains: - `lookupName`: the package's full name including scope if present (e.g. `@foo/bar`) - `registryUrls`: an array of registry Urls to try -`getPkgReleases` should return an object containing: +`getReleases` should return an object containing: - `releases`: an array of strings of matched versions. This is the only mandatory field. - `deprecationMessage`: a string description of the package's deprecation notice, if applicable @@ -26,7 +26,7 @@ Datasources that support the concept of digests (e.g. docker digests and git com The `getDigest` function has two inputs: -- `config`: the Renovate config for the package being updated, contains same fields as `getPkgReleases` +- `config`: the Renovate config for the package being updated, contains same fields as `getReleases` - `newValue`: the version or value to retrieve the digest for The `getDigest` function returns a string output representing the digest value. If none is found then a return value of `null` should be returned. diff --git a/lib/datasource/ruby-version/__snapshots__/index.spec.ts.snap b/lib/datasource/ruby-version/__snapshots__/index.spec.ts.snap index 0f9a8fc1fb..bb2ef169b3 100644 --- a/lib/datasource/ruby-version/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/ruby-version/__snapshots__/index.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`datasource/gradle getPkgReleases parses real data 1`] = ` +exports[`datasource/gradle getReleases parses real data 1`] = ` Object { "homepage": "https://www.ruby-lang.org", "releases": Array [ diff --git a/lib/datasource/ruby-version/index.spec.ts b/lib/datasource/ruby-version/index.spec.ts index cfb8e1569a..2f26b3f29b 100644 --- a/lib/datasource/ruby-version/index.spec.ts +++ b/lib/datasource/ruby-version/index.spec.ts @@ -1,6 +1,6 @@ import fs from 'fs'; import _got from '../../util/got'; -import { getPkgReleases } from '.'; +import { getReleases } from '.'; jest.mock('../../util/got'); @@ -12,7 +12,7 @@ const rubyReleasesHtml = fs.readFileSync( ); describe('datasource/gradle', () => { - describe('getPkgReleases', () => { + describe('getReleases', () => { beforeEach(() => { global.repoCache = {}; return global.renovateCache.rmAll(); @@ -21,12 +21,12 @@ describe('datasource/gradle', () => { got.mockReturnValueOnce({ body: rubyReleasesHtml, }); - const res = await getPkgReleases(); + const res = await getReleases(); expect(res).toMatchSnapshot(); }); it('throws for empty result', async () => { got.mockReturnValueOnce({ body: {} }); - await expect(getPkgReleases()).rejects.toThrow(); + await expect(getReleases()).rejects.toThrow(); }); it('throws for 404', async () => { @@ -35,7 +35,7 @@ describe('datasource/gradle', () => { statusCode: 404, }) ); - await expect(getPkgReleases()).rejects.toThrow(); + await expect(getReleases()).rejects.toThrow(); }); }); }); diff --git a/lib/datasource/ruby-version/index.ts b/lib/datasource/ruby-version/index.ts index d449ae2f2c..bc45f3791b 100644 --- a/lib/datasource/ruby-version/index.ts +++ b/lib/datasource/ruby-version/index.ts @@ -10,7 +10,7 @@ const http = new Http(id); const rubyVersionsUrl = 'https://www.ruby-lang.org/en/downloads/releases/'; -export async function getPkgReleases( +export async function getReleases( _config?: GetReleasesConfig ): Promise<ReleaseResult> { // First check the persistent cache diff --git a/lib/datasource/rubygems/__snapshots__/index.spec.ts.snap b/lib/datasource/rubygems/__snapshots__/index.spec.ts.snap index 6ea2eef890..65aba2d23b 100644 --- a/lib/datasource/rubygems/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/rubygems/__snapshots__/index.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`datasource/rubygems getPkgReleases returns a dep for rubygems.org package hit 1`] = ` +exports[`datasource/rubygems getReleases returns a dep for rubygems.org package hit 1`] = ` Object { "name": "1pass", "releases": Array [ @@ -14,7 +14,7 @@ Object { } `; -exports[`datasource/rubygems getPkgReleases uses multiple source urls 1`] = ` +exports[`datasource/rubygems getReleases uses multiple source urls 1`] = ` Object { "changelogUrl": null, "homepage": "http://rubyonrails.org", @@ -2397,7 +2397,7 @@ Object { } `; -exports[`datasource/rubygems getPkgReleases uses rubygems.org if no registry urls were provided 1`] = ` +exports[`datasource/rubygems getReleases uses rubygems.org if no registry urls were provided 1`] = ` Object { "name": "1pass", "releases": Array [ @@ -2411,7 +2411,7 @@ Object { } `; -exports[`datasource/rubygems getPkgReleases works with real data 1`] = ` +exports[`datasource/rubygems getReleases works with real data 1`] = ` Object { "changelogUrl": null, "homepage": "http://rubyonrails.org", diff --git a/lib/datasource/rubygems/index.spec.ts b/lib/datasource/rubygems/index.spec.ts index d1b9f0d465..344fc4dde9 100644 --- a/lib/datasource/rubygems/index.spec.ts +++ b/lib/datasource/rubygems/index.spec.ts @@ -27,7 +27,7 @@ const rubygemsOrgVersions = `created_at: 2017-03-27T04:38:13+00:00 jest.mock('../../util/got'); describe('datasource/rubygems', () => { - describe('getPkgReleases', () => { + describe('getReleases', () => { const SKIP_CACHE = process.env.RENOVATE_SKIP_CACHE; const params = { @@ -42,14 +42,14 @@ describe('datasource/rubygems', () => { it('returns null for missing pkg', async () => { got.mockReturnValueOnce({}); - expect(await rubygems.getPkgReleases(params)).toBeNull(); + expect(await rubygems.getReleases(params)).toBeNull(); }); it('returns null for rubygems.org package miss', async () => { const newparams = { ...params }; newparams.registryUrls = ['https://rubygems.org']; got.mockReturnValueOnce({ body: rubygemsOrgVersions }); - expect(await rubygems.getPkgReleases(newparams)).toBeNull(); + expect(await rubygems.getReleases(newparams)).toBeNull(); }); it('returns a dep for rubygems.org package hit', async () => { @@ -58,7 +58,7 @@ describe('datasource/rubygems', () => { registryUrls: ['https://rubygems.org'], }; got.mockReturnValueOnce({ body: rubygemsOrgVersions }); - const res = await rubygems.getPkgReleases(newparams); + const res = await rubygems.getReleases(newparams); expect(res).not.toBeNull(); expect(res).toMatchSnapshot(); expect( @@ -73,13 +73,13 @@ describe('datasource/rubygems', () => { got.mockReturnValue({ body: rubygemsOrgVersions }); expect( - await rubygems.getPkgReleases({ + await rubygems.getReleases({ ...params, registryUrls: [], }) ).toBeNull(); - const res = await rubygems.getPkgReleases({ + const res = await rubygems.getReleases({ lookupName: '1pass', registryUrls: [], }); @@ -92,7 +92,7 @@ describe('datasource/rubygems', () => { .mockReturnValueOnce({ body: railsInfo }) .mockReturnValueOnce({ body: railsVersions }); - expect(await rubygems.getPkgReleases(params)).toMatchSnapshot(); + expect(await rubygems.getReleases(params)).toMatchSnapshot(); }); it('uses multiple source urls', async () => { @@ -105,12 +105,12 @@ describe('datasource/rubygems', () => { .mockImplementationOnce(() => ({ body: railsInfo })) .mockImplementationOnce(() => ({ body: railsVersions })); - expect(await rubygems.getPkgReleases(params)).toMatchSnapshot(); + expect(await rubygems.getReleases(params)).toMatchSnapshot(); }); it('returns null if mismatched name', async () => { got.mockReturnValueOnce({ body: { ...railsInfo, name: 'oooops' } }); - expect(await rubygems.getPkgReleases(params)).toBeNull(); + expect(await rubygems.getReleases(params)).toBeNull(); }); afterEach(() => { diff --git a/lib/datasource/rubygems/index.ts b/lib/datasource/rubygems/index.ts index c7f56ead18..d4d80f7c2f 100644 --- a/lib/datasource/rubygems/index.ts +++ b/lib/datasource/rubygems/index.ts @@ -1,2 +1,2 @@ -export { getPkgReleases } from './releases'; +export { getReleases } from './releases'; export { id } from './common'; diff --git a/lib/datasource/rubygems/releases.ts b/lib/datasource/rubygems/releases.ts index 017ac04d47..5f558c65a5 100644 --- a/lib/datasource/rubygems/releases.ts +++ b/lib/datasource/rubygems/releases.ts @@ -3,7 +3,7 @@ import { getDependency } from './get'; import { getRubygemsOrgDependency } from './get-rubygems-org'; import { GetReleasesConfig, ReleaseResult } from '../common'; -export async function getPkgReleases({ +export async function getReleases({ lookupName, registryUrls, }: GetReleasesConfig): Promise<ReleaseResult | null> { diff --git a/lib/datasource/sbt-package/index.spec.ts b/lib/datasource/sbt-package/index.spec.ts index 85fe7bd1d2..308ffbaee0 100644 --- a/lib/datasource/sbt-package/index.spec.ts +++ b/lib/datasource/sbt-package/index.spec.ts @@ -1,7 +1,7 @@ import path from 'path'; import fs from 'fs'; import nock from 'nock'; -import { getPkgReleases } from '.'; +import { getReleases } from '.'; import { MAVEN_REPO } from '../maven/common'; import { parseIndexDir, SBT_PLUGINS_REPO } from '../sbt-plugin/util'; @@ -23,7 +23,7 @@ describe('datasource/sbt', () => { expect(parseIndexDir(sbtPluginIndex)).toMatchSnapshot(); }); - describe('getPkgReleases', () => { + describe('getReleases', () => { beforeEach(() => { nock.disableNetConnect(); nock('https://failed_repo') @@ -98,7 +98,7 @@ describe('datasource/sbt', () => { it('returns null in case of errors', async () => { expect( - await getPkgReleases({ + await getReleases({ lookupName: 'org.scalatest:scalatest', registryUrls: ['https://failed_repo/maven'], }) @@ -106,7 +106,7 @@ describe('datasource/sbt', () => { }); it('fetches releases from Maven', async () => { expect( - await getPkgReleases({ + await getReleases({ lookupName: 'org.scalatest:scalatest', registryUrls: [ 'https://failed_repo/maven', @@ -122,7 +122,7 @@ describe('datasource/sbt', () => { releases: [{ version: '1.2.0' }, { version: '1.2.3' }], }); expect( - await getPkgReleases({ + await getReleases({ lookupName: 'org.scalatest:scalatest_2.12', registryUrls: [MAVEN_REPO, SBT_PLUGINS_REPO], }) diff --git a/lib/datasource/sbt-package/index.ts b/lib/datasource/sbt-package/index.ts index caf293892f..4976c2ac8f 100644 --- a/lib/datasource/sbt-package/index.ts +++ b/lib/datasource/sbt-package/index.ts @@ -60,7 +60,7 @@ export async function resolvePackageReleases( return null; } -export async function getPkgReleases({ +export async function getReleases({ lookupName, registryUrls, }: GetReleasesConfig): Promise<ReleaseResult | null> { diff --git a/lib/datasource/sbt-plugin/index.spec.ts b/lib/datasource/sbt-plugin/index.spec.ts index 24ea05d4be..6af5e2064c 100644 --- a/lib/datasource/sbt-plugin/index.spec.ts +++ b/lib/datasource/sbt-plugin/index.spec.ts @@ -1,7 +1,7 @@ import path from 'path'; import fs from 'fs'; import nock from 'nock'; -import { getPkgReleases } from '.'; +import { getReleases } from '.'; import { MAVEN_REPO } from '../maven/common'; import { parseIndexDir, SBT_PLUGINS_REPO } from './util'; @@ -23,7 +23,7 @@ describe('datasource/sbt', () => { expect(parseIndexDir(sbtPluginIndex)).toMatchSnapshot(); }); - describe('getPkgReleases', () => { + describe('getReleases', () => { beforeEach(() => { nock.disableNetConnect(); nock('https://failed_repo') @@ -98,13 +98,13 @@ describe('datasource/sbt', () => { it('returns null in case of errors', async () => { expect( - await getPkgReleases({ + await getReleases({ lookupName: 'org.scalatest:scalatest', registryUrls: ['https://failed_repo/maven'], }) ).toEqual(null); expect( - await getPkgReleases({ + await getReleases({ lookupName: 'org.scalatest:scalaz', registryUrls: [SBT_PLUGINS_REPO], }) @@ -112,7 +112,7 @@ describe('datasource/sbt', () => { }); it('fetches sbt plugins', async () => { expect( - await getPkgReleases({ + await getReleases({ lookupName: 'org.foundweekends:sbt-bintray', registryUrls: [MAVEN_REPO, SBT_PLUGINS_REPO], }) @@ -125,7 +125,7 @@ describe('datasource/sbt', () => { releases: [{ version: '0.5.5' }], }); expect( - await getPkgReleases({ + await getReleases({ lookupName: 'org.foundweekends:sbt-bintray_2.12', registryUrls: [MAVEN_REPO, SBT_PLUGINS_REPO], }) diff --git a/lib/datasource/sbt-plugin/index.ts b/lib/datasource/sbt-plugin/index.ts index 7835a0271b..5626429532 100644 --- a/lib/datasource/sbt-plugin/index.ts +++ b/lib/datasource/sbt-plugin/index.ts @@ -56,7 +56,7 @@ async function resolvePluginReleases( return resolvePackageReleases(rootUrl, artifact, scalaVersion); } -export async function getPkgReleases({ +export async function getReleases({ lookupName, registryUrls: configRegistryUrls, }: GetReleasesConfig): Promise<ReleaseResult | null> { diff --git a/lib/datasource/terraform-module/__snapshots__/index.spec.ts.snap b/lib/datasource/terraform-module/__snapshots__/index.spec.ts.snap index a4699905dd..532181a542 100644 --- a/lib/datasource/terraform-module/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/terraform-module/__snapshots__/index.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`datasource/terraform-module getPkgReleases processes real data 1`] = ` +exports[`datasource/terraform-module getReleases processes real data 1`] = ` Object { "homepage": "https://registry.terraform.io/modules/hashicorp/consul/aws", "name": "hashicorp/consul/aws", @@ -80,7 +80,7 @@ Object { } `; -exports[`datasource/terraform-module getPkgReleases processes with registry in name 1`] = ` +exports[`datasource/terraform-module getReleases processes with registry in name 1`] = ` Object { "homepage": "https://registry.terraform.io/modules/hashicorp/consul/aws", "name": "hashicorp/consul/aws", diff --git a/lib/datasource/terraform-module/index.spec.ts b/lib/datasource/terraform-module/index.spec.ts index a7483e0294..a5d9e06dc5 100644 --- a/lib/datasource/terraform-module/index.spec.ts +++ b/lib/datasource/terraform-module/index.spec.ts @@ -11,7 +11,7 @@ const consulData: any = fs.readFileSync( ); describe('datasource/terraform-module', () => { - describe('getPkgReleases', () => { + describe('getReleases', () => { beforeEach(() => { jest.clearAllMocks(); global.repoCache = {}; @@ -20,7 +20,7 @@ describe('datasource/terraform-module', () => { it('returns null for empty result', async () => { got.mockReturnValueOnce({ body: {} }); expect( - await terraform.getPkgReleases({ + await terraform.getReleases({ lookupName: 'hashicorp/consul/aws', }) ).toBeNull(); @@ -32,7 +32,7 @@ describe('datasource/terraform-module', () => { }) ); expect( - await terraform.getPkgReleases({ + await terraform.getReleases({ lookupName: 'hashicorp/consul/aws', }) ).toBeNull(); @@ -42,7 +42,7 @@ describe('datasource/terraform-module', () => { throw new Error(); }); expect( - await terraform.getPkgReleases({ + await terraform.getReleases({ lookupName: 'hashicorp/consul/aws', }) ).toBeNull(); @@ -51,7 +51,7 @@ describe('datasource/terraform-module', () => { got.mockReturnValueOnce({ body: JSON.parse(consulData), }); - const res = await terraform.getPkgReleases({ + const res = await terraform.getReleases({ lookupName: 'hashicorp/consul/aws', }); expect(res).toMatchSnapshot(); @@ -61,7 +61,7 @@ describe('datasource/terraform-module', () => { got.mockReturnValueOnce({ body: JSON.parse(consulData), }); - const res = await terraform.getPkgReleases({ + const res = await terraform.getReleases({ lookupName: 'registry.terraform.io/hashicorp/consul/aws', }); expect(res).toMatchSnapshot(); @@ -71,7 +71,7 @@ describe('datasource/terraform-module', () => { got.mockReturnValueOnce({ body: JSON.parse(consulData), }); - const res = await terraform.getPkgReleases({ + const res = await terraform.getReleases({ lookupName: 'consul/foo', registryUrls: ['https://terraform.company.com'], }); diff --git a/lib/datasource/terraform-module/index.ts b/lib/datasource/terraform-module/index.ts index 5e44921767..060c675748 100644 --- a/lib/datasource/terraform-module/index.ts +++ b/lib/datasource/terraform-module/index.ts @@ -45,13 +45,13 @@ interface TerraformRelease { } /** - * terraform.getPkgReleases + * terraform.getReleases * * This function will fetch a package from the specified Terraform registry and return all semver versions. * - `sourceUrl` is supported of "source" field is set * - `homepage` is set to the Terraform registry's page if it's on the official main registry */ -export async function getPkgReleases({ +export async function getReleases({ lookupName, registryUrls, }: GetReleasesConfig): Promise<ReleaseResult | null> { diff --git a/lib/datasource/terraform-provider/__snapshots__/index.spec.ts.snap b/lib/datasource/terraform-provider/__snapshots__/index.spec.ts.snap index 30523c271b..c1eed71187 100644 --- a/lib/datasource/terraform-provider/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/terraform-provider/__snapshots__/index.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`datasource/terraform getPkgReleases processes real data 1`] = ` +exports[`datasource/terraform getReleases processes real data 1`] = ` Object { "homepage": "https://registry.terraform.io/providers/hashicorp/azurerm", "name": "hashicorp/azurerm", diff --git a/lib/datasource/terraform-provider/index.spec.ts b/lib/datasource/terraform-provider/index.spec.ts index 1b9155da27..7d61edbc22 100644 --- a/lib/datasource/terraform-provider/index.spec.ts +++ b/lib/datasource/terraform-provider/index.spec.ts @@ -11,7 +11,7 @@ const consulData: any = fs.readFileSync( ); describe('datasource/terraform', () => { - describe('getPkgReleases', () => { + describe('getReleases', () => { beforeEach(() => { jest.clearAllMocks(); global.repoCache = {}; @@ -20,7 +20,7 @@ describe('datasource/terraform', () => { it('returns null for empty result', async () => { got.mockReturnValueOnce({ body: {} }); expect( - await terraformProvider.getPkgReleases({ + await terraformProvider.getReleases({ lookupName: 'azurerm', }) ).toBeNull(); @@ -32,7 +32,7 @@ describe('datasource/terraform', () => { }) ); expect( - await terraformProvider.getPkgReleases({ + await terraformProvider.getReleases({ lookupName: 'azurerm', }) ).toBeNull(); @@ -42,7 +42,7 @@ describe('datasource/terraform', () => { throw new Error(); }); expect( - await terraformProvider.getPkgReleases({ + await terraformProvider.getReleases({ lookupName: 'azurerm', }) ).toBeNull(); @@ -51,7 +51,7 @@ describe('datasource/terraform', () => { got.mockReturnValueOnce({ body: JSON.parse(consulData), }); - const res = await terraformProvider.getPkgReleases({ + const res = await terraformProvider.getReleases({ lookupName: 'azurerm', }); expect(res).toMatchSnapshot(); diff --git a/lib/datasource/terraform-provider/index.ts b/lib/datasource/terraform-provider/index.ts index 480e1d5769..e380a1e537 100644 --- a/lib/datasource/terraform-provider/index.ts +++ b/lib/datasource/terraform-provider/index.ts @@ -15,11 +15,11 @@ interface TerraformProvider { } /** - * terraform-provider.getPkgReleases + * terraform-provider.getReleases * * This function will fetch a provider from the public Terraform registry and return all semver versions. */ -export async function getPkgReleases({ +export async function getReleases({ lookupName, registryUrls, }: GetReleasesConfig): Promise<ReleaseResult | null> { diff --git a/lib/manager/bundler/artifacts.spec.ts b/lib/manager/bundler/artifacts.spec.ts index 22cb8445f6..1b97d2fbf2 100644 --- a/lib/manager/bundler/artifacts.spec.ts +++ b/lib/manager/bundler/artifacts.spec.ts @@ -121,7 +121,7 @@ describe('bundler.updateArtifacts()', () => { platform.getFile.mockResolvedValueOnce('Current Gemfile.lock'); fs.outputFile.mockResolvedValueOnce(null as never); platform.getFile.mockResolvedValueOnce('1.2.0'); - datasource.getPkgReleases.mockResolvedValueOnce({ + datasource.getReleases.mockResolvedValueOnce({ releases: [ { version: '1.0.0' }, { version: '1.2.0' }, @@ -149,7 +149,7 @@ describe('bundler.updateArtifacts()', () => { it('compatibility options', async () => { platform.getFile.mockResolvedValueOnce('Current Gemfile.lock'); fs.outputFile.mockResolvedValueOnce(null as never); - datasource.getPkgReleases.mockResolvedValueOnce({ + datasource.getReleases.mockResolvedValueOnce({ releases: [ { version: '1.0.0' }, { version: '1.2.0' }, @@ -182,7 +182,7 @@ describe('bundler.updateArtifacts()', () => { it('invalid compatibility options', async () => { platform.getFile.mockResolvedValueOnce('Current Gemfile.lock'); fs.outputFile.mockResolvedValueOnce(null as never); - datasource.getPkgReleases.mockResolvedValueOnce({ + datasource.getReleases.mockResolvedValueOnce({ releases: [ { version: '1.0.0' }, { version: '1.2.0' }, @@ -217,7 +217,7 @@ describe('bundler.updateArtifacts()', () => { platform.getFile.mockResolvedValueOnce('Current Gemfile.lock'); fs.outputFile.mockResolvedValueOnce(null as never); platform.getFile.mockResolvedValueOnce('1.2.0'); - datasource.getPkgReleases.mockResolvedValueOnce({ + datasource.getReleases.mockResolvedValueOnce({ releases: [ { version: '1.0.0' }, { version: '1.2.0' }, diff --git a/lib/manager/cocoapods/artifacts.spec.ts b/lib/manager/cocoapods/artifacts.spec.ts index 13726577b0..349d81b175 100644 --- a/lib/manager/cocoapods/artifacts.spec.ts +++ b/lib/manager/cocoapods/artifacts.spec.ts @@ -33,7 +33,7 @@ describe('.updateArtifacts()', () => { env.getChildProcessEnv.mockReturnValue(envMock.basic); setExecConfig(config); - datasource.getPkgReleases.mockResolvedValue({ + datasource.getReleases.mockResolvedValue({ releases: [ { version: '1.2.0' }, { version: '1.2.1' }, @@ -196,7 +196,7 @@ describe('.updateArtifacts()', () => { }); platform.getFile.mockResolvedValueOnce('COCOAPODS: 1.2.4'); - datasource.getPkgReleases.mockResolvedValueOnce({ + datasource.getReleases.mockResolvedValueOnce({ releases: [], }); diff --git a/lib/manager/travis/package.spec.ts b/lib/manager/travis/package.spec.ts index 1c24e908c4..59d0f90e82 100644 --- a/lib/manager/travis/package.spec.ts +++ b/lib/manager/travis/package.spec.ts @@ -1,9 +1,9 @@ import { getPackageUpdates } from './package'; -import { getPkgReleases as _getPkgReleases } from '../../datasource/github-tags'; +import { getReleases as _getReleases } from '../../datasource/github-tags'; import { getConfig } from '../../config/defaults'; const defaultConfig = getConfig(); -const getPkgReleases: any = _getPkgReleases; +const getReleases: any = _getReleases; jest.mock('../../datasource/github-tags'); @@ -38,7 +38,7 @@ describe('lib/manager/travis/package', () => { it('detects pinning', async () => { config.currentValue = ['8.4.0', '10.0.0', '12.0.0']; config.supportPolicy = ['lts']; - getPkgReleases.mockReturnValueOnce({ + getReleases.mockReturnValueOnce({ releases: [ { version: '4.4.4', diff --git a/lib/util/exec/docker/index.ts b/lib/util/exec/docker/index.ts index e3ff78f93f..eec51223d6 100644 --- a/lib/util/exec/docker/index.ts +++ b/lib/util/exec/docker/index.ts @@ -8,7 +8,7 @@ import { } from '../common'; import { logger } from '../../../logger'; import * as versioning from '../../../versioning'; -import { getPkgReleases } from '../../../datasource/docker'; +import { getReleases } from '../../../datasource/docker'; const prefetchedImages = new Set<string>(); @@ -82,7 +82,7 @@ async function getDockerTag( { constraint }, `Found ${scheme} version constraint - checking for a compatible ${lookupName} image to use` ); - const imageReleases = await getPkgReleases({ lookupName }); + const imageReleases = await getReleases({ lookupName }); if (imageReleases && imageReleases.releases) { let versions = imageReleases.releases.map(release => release.version); versions = versions.filter( diff --git a/lib/workers/common.ts b/lib/workers/common.ts index 6bdd60731d..c19b82953b 100644 --- a/lib/workers/common.ts +++ b/lib/workers/common.ts @@ -22,7 +22,6 @@ export interface BranchUpgradeConfig currentDigestShort?: string; currentValue?: string; currentVersion?: string; - endpoint?: string; excludeCommitPaths?: string[]; group?: GroupConfig; diff --git a/lib/workers/pr/changelog/releases.spec.ts b/lib/workers/pr/changelog/releases.spec.ts index a260d75376..d5647b9c82 100644 --- a/lib/workers/pr/changelog/releases.spec.ts +++ b/lib/workers/pr/changelog/releases.spec.ts @@ -43,6 +43,8 @@ describe('workers/pr/changelog/releases', () => { }); it('should contain only stable', async () => { const config = partial<BranchUpgradeConfig>({ + datasource: 'some-datasource', + depName: 'some-depname', versioning: npmVersioning.id, fromVersion: '1.0.0', toVersion: '1.1.0', @@ -53,6 +55,8 @@ describe('workers/pr/changelog/releases', () => { }); it('should contain fromVersion unstable', async () => { const config = partial<BranchUpgradeConfig>({ + datasource: 'some-datasource', + depName: 'some-depname', versioning: npmVersioning.id, fromVersion: '1.0.1-rc0', toVersion: '1.1.0', @@ -63,6 +67,8 @@ describe('workers/pr/changelog/releases', () => { }); it('should contain toVersion unstable', async () => { const config = partial<BranchUpgradeConfig>({ + datasource: 'some-datasource', + depName: 'some-depname', versioning: npmVersioning.id, fromVersion: '1.0.1', toVersion: '1.2.0-rc1', @@ -73,6 +79,8 @@ describe('workers/pr/changelog/releases', () => { }); it('should contain both fromVersion toVersion unstable', async () => { const config = partial<BranchUpgradeConfig>({ + datasource: 'some-datasource', + depName: 'some-depname', versioning: npmVersioning.id, fromVersion: '1.0.1-rc0', toVersion: '1.2.0-rc1', @@ -83,6 +91,8 @@ describe('workers/pr/changelog/releases', () => { }); it('should valueToVersion', async () => { const config = partial<BranchUpgradeConfig>({ + datasource: 'some-datasource', + depName: 'some-depname', versioning: dockerVersioning.id, fromVersion: '1.0.1-rc0', toVersion: '1.2.0-rc0', diff --git a/lib/workers/pr/changelog/releases.ts b/lib/workers/pr/changelog/releases.ts index ba9bbe9edd..e1b7bf1d1b 100644 --- a/lib/workers/pr/changelog/releases.ts +++ b/lib/workers/pr/changelog/releases.ts @@ -1,4 +1,5 @@ import { getPkgReleases, Release } from '../../../datasource'; +import { isGetPkgReleasesConfig } from '../../../datasource/common'; import { logger } from '../../../logger'; import { get, VersioningApi } from '../../../versioning'; import { BranchUpgradeConfig } from '../../common'; @@ -23,6 +24,10 @@ export async function getInRangeReleases( config: BranchUpgradeConfig ): Promise<Release[] | null> { const { versioning, fromVersion, toVersion, depName, datasource } = config; + // istanbul ignore if + if (!isGetPkgReleasesConfig(config)) { + return null; + } try { const pkgReleases = (await getPkgReleases(config)).releases; const version = get(versioning); diff --git a/lib/workers/repository/process/lookup/index.spec.ts b/lib/workers/repository/process/lookup/index.spec.ts index 88c87c4d09..d20f6ebfb4 100644 --- a/lib/workers/repository/process/lookup/index.spec.ts +++ b/lib/workers/repository/process/lookup/index.spec.ts @@ -1098,7 +1098,7 @@ describe('workers/repository/process/lookup', () => { config.depName = 'node'; config.datasource = datasourceDocker.id; config.pinDigests = true; - docker.getPkgReleases.mockResolvedValueOnce({ + docker.getReleases.mockResolvedValueOnce({ releases: [ { version: '8.0.0', @@ -1119,7 +1119,7 @@ describe('workers/repository/process/lookup', () => { config.depName = 'node'; config.versioning = dockerVersioning.id; config.datasource = datasourceDocker.id; - docker.getPkgReleases.mockResolvedValueOnce({ + docker.getReleases.mockResolvedValueOnce({ releases: [ { version: '8.1.0' }, { version: '8.1.5' }, @@ -1141,7 +1141,7 @@ describe('workers/repository/process/lookup', () => { config.depName = 'node'; config.datasource = datasourceDocker.id; config.pinDigests = true; - docker.getPkgReleases.mockResolvedValueOnce({ + docker.getReleases.mockResolvedValueOnce({ releases: [ { version: '8.0.0', @@ -1160,7 +1160,7 @@ describe('workers/repository/process/lookup', () => { config.depName = 'node'; config.datasource = datasourceDocker.id; config.pinDigests = true; - docker.getPkgReleases.mockResolvedValueOnce({ + docker.getReleases.mockResolvedValueOnce({ releases: [ { version: '8.0.0', @@ -1182,7 +1182,7 @@ describe('workers/repository/process/lookup', () => { config.depName = 'node'; config.datasource = datasourceDocker.id; config.pinDigests = true; - docker.getPkgReleases.mockResolvedValueOnce({ + docker.getReleases.mockResolvedValueOnce({ releases: [ { version: '8.0.0', @@ -1205,7 +1205,7 @@ describe('workers/repository/process/lookup', () => { config.datasource = datasourceDocker.id; config.currentDigest = 'sha256:zzzzzzzzzzzzzzz'; config.pinDigests = true; - docker.getPkgReleases.mockResolvedValueOnce({ + docker.getReleases.mockResolvedValueOnce({ releases: [ { version: '8.0.0', @@ -1226,7 +1226,7 @@ describe('workers/repository/process/lookup', () => { config.datasource = datasourceDocker.id; config.currentDigest = 'sha256:zzzzzzzzzzzzzzz'; config.pinDigests = true; - docker.getPkgReleases.mockResolvedValueOnce({ + docker.getReleases.mockResolvedValueOnce({ releases: [ { version: 'alpine', @@ -1247,7 +1247,7 @@ describe('workers/repository/process/lookup', () => { config.depName = 'some-path'; config.versioning = gitVersioning.id; config.datasource = datasourceGitSubmodules.id; - gitSubmodules.getPkgReleases.mockResolvedValueOnce({ + gitSubmodules.getReleases.mockResolvedValueOnce({ releases: [ { version: '4b825dc642cb6eb9a060e54bf8d69288fbee4904', diff --git a/lib/workers/repository/process/lookup/index.ts b/lib/workers/repository/process/lookup/index.ts index dd9a154fc0..9951d2efbb 100644 --- a/lib/workers/repository/process/lookup/index.ts +++ b/lib/workers/repository/process/lookup/index.ts @@ -8,6 +8,7 @@ import { supportsDigests, getDigest, Release, + isGetPkgReleasesConfig, } from '../../../../datasource'; import { LookupUpdate } from './common'; import { RangeConfig } from '../../../../manager/common'; @@ -143,6 +144,12 @@ export async function lookupUpdates( res.skipReason = SkipReason.InvalidValue; } + // istanbul ignore if + if (!isGetPkgReleasesConfig(config)) { + res.skipReason = SkipReason.Unknown; + return res; + } + if (isValid) { const dependency = clone(await getPkgReleases(config)); if (!dependency) { -- GitLab