diff --git a/lib/datasource/cdnjs/__snapshots__/index.spec.ts.snap b/lib/datasource/cdnjs/__snapshots__/index.spec.ts.snap index 6f4c23d99650b62aff8e4919eeb8ecec264db42e..9aeb0456a20721cb57dbc68a18cbdedf0024a3a8 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 4a387baa45b3acf310573f5bd30eec8bccf1c603..e147ed0f552b907c0435186dc9c719af3dc75023 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 eb37fc211a8ca8b7630aedc8f23633e367c2ab05..b7ef9be6c49ef1cd5f4dafd8c56536a1b5d148ca 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 d4c12a676fe10f592897eab75c3c0e1e6445366f..e3702ba38f29ddb51e0dbadcb662d3f87c5c947d 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 5d98d165718bfbdc539424097a4c8bf1018a899b..2080dcc171aa48acbbfe241e85c4e1dfd7b97203 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 9dd47f443dce31d57a265374ca781a5ea9cdf2e0..176ab304c9652aa83ebe6b9a98e7e34b72f84b23 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 519daf8b43ed267deb1617598ea2b665eb6c4d9f..785724fdf651bab3af89e47e9fee22e67e7a9043 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 198c90be543326bed79d1d06654df93a2af94e04..f293d01d44538373549879efa18fdf524ee39022 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 3e63fdb88d926df9e978e77a17d68c43fffe946e..e4a63bb018002150d005f8ff31d36e9ecc14f5bc 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 edbe714f0b7d7adac0c145014fc4f2d349294caf..7b2bdd691972dea9f9dfe042203ff6e835dc4cb7 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 da12801f3fac6c7e387432bc1beb0d00a25393c8..7f13447ea0f33f2e10a55142db1f784e7ea43324 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 75b4ecf98acf27610de6fb2b148440348bdd2334..e6eaa4628d79ecb2c1c3d967a8cf19b7bead872a 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 05a7b84b7b1a076345c0ad58fb7cf106788bc4f1..9d12ed7da6624a7c4e4fbc1aa117611f199ac15d 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 c4afc6a3cd8360932e3b699f94edfc41ac6356d5..21b827a2d9f9b36b8e53baab55bbecf806df8bec 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 ba46fcb022db78c95f1833d51b49a50cf25146da..a902d97f704d80ac7c00bf060d43bcba139c3acc 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 f4a2d53c1a83f83845449cad1a458cea1148586d..d25c4aa61013bb09300993b0900ed03c6f4a9376 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 1466081d0432a4374fe07e9d34e03b6399c93945..018f1c6772b17f2cb6a522dc2124e5869321d862 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 d0bc09825145671928b6f3e9489e758a0fe0713b..56277e3f7dd4455fefbe9bbed9bdb01c5ae9f73d 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 1c611332e06e43ad2675d2d94cc3490f48a04397..ddba901f603d083d90519e189e0015b45a257cb1 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 5f4a697c541e96c5a854cee93f7faffff5239a28..ddcbb50869d674431810b3c610997e492d724ee3 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 007d26c24b60d883eefc69c80d41f973a9149bb1..b40c894683479d8fbbd63cb71062d9d62e9a8a38 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 94392a72970af1418f7b39b762cca0d61b218527..e3100080001561951595d15d1c4ba13443c89bde 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 b4544ba763a996daf23aebdcd7073233e4b03f8e..3ec77f6047f18c5e0f483cce72bb5923de279784 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 8e19d6e1c4721c0ff2eeacdcc5fe1a34decb32d9..b1272f5b915e97433250fd564ef68d3ec78d7a80 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 02b192b992d55e44ff23e1b30e676a939eb632b0..8dc8261265de82ccc86eb6587b50294741c717c5 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 326ad0ee45c5fb3a40cbbef20d5256e1e82e748f..527501df58e700dfd56c7c52d8aa7b4d6f890f7d 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 aaad1a536a09bee8246846aa9b180a1f98774167..1655cd3bf64d69ce1dec4b524387437943f21888 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 9cfcf220602f0827a1f5f2fe1b29ef55e725094a..05ae4ce3eae25477bd388c8bd328a79717fb3d2a 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 bf29c12e1019850a4673af97f650e0cb504122e7..7e30e3139bc727c515853144a0b983f624b9b854 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 30dfbb2b29b594d33104c9c39e184b01d44d1f35..baa74f48de909855cc7a72e957f522c9f234a56b 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 dc086e5a74c0062bbd7ae6d329eba009ecbe822c..1087ee071f7b2aa52df0eda563d42a504c4aca7b 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 f5bf3271a4a1f5472e54e6f7d967090befe2ad87..1e688a0e2ee5cb5222e839cef3d193d9d90c3855 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 e6242afb3a7bfabd14d4496390ca43841f835fdf..5b3c72a5cde2f175638a7db222f1a598e856e0f4 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 8e31730d71d8d74e730bd41c214de694631e83ef..ad579a5007b40c2b3c53f7be9744e90b8646d5b1 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 ecd8ea975d42b9b1978c5fc35694ece49d90c0fa..aa9db33c4c50b8acb9cde7a123aa8b3cf0b29316 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 49fb650f701f7f0edc206a68f32e5ac7fa8f0edd..23f7351972fd642b3d1fe35fad63e2cf541a9f1b 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 9e22603806c7c8e4cea5eac064c4d0d92b7b7f47..e0fa9d3a2d87b932425d930a7c58da9bfb836630 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 580f6a186c2ef1e7082c78562b5c0b2ae1e06697..e29bfcf08e6e7ca6b8766b0d61c8460c79e99b48 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 3fc7b7cfe7142a03d329910ae9c93f44bb5911dd..5c7e2eeea6957b7b80636c06522b2ed52085bf97 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 2b7bbbdbc1e46a8f6618e640ca5c506951a731b7..1b15ff6f2e1c41f0b18acc85251842dfc969bd61 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 eb677ee4f3309ad58e2d6901bc95e673b1421198..668e54458d8bccb5c864d52f1d2c052d06840bb9 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 f55cd760874357523696d8ef0f6412a090313d89..0a165808e61b8b09fa47a9da840058fd4a82a1a2 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 79dd1d8f946e6de99baedef7108768d48ed3b0f1..9653258d71d89c18a6fa3bc8b38a3036b92f0288 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 717c6ad314ffc724d5ca062db0a0ff57a2880071..746f8c86d50a84c26f802704969be551d8a57e13 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 82b80a3631c0fed8b2c98bea9f396a97d00609b1..52f40e43e9ab3d44a3dcf1dbd814056e8226ad01 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 c899da639520be7b3b81c5c8d3b4a7ca6c49e822..2a42acdd1228d0b86627293d3a8e8476ab80c369 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 c21dd3f5035ef42bc247baa281093fd49eaf779b..9c93c8756477d536dbecb36c989430169dd3012b 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 902a899ea01c8375d9030b9309ce1d960f3aa08b..66be8f70945c4dab00789afb3deef7cd05f1ad24 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 d9866922c4c2bd5241a68d513accfcd201d9ee7a..606041136da752b5d59388d771e4e9d6c4e089ee 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 3c0f080db4c45ad80e5a50a4b83fa6e1c8e4a7c4..f90e4c03be14e2c9210b33dc46f06c085b3aded3 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 581567bfeb448513f247ddd09966ad6150fc2ecb..1b704b89b246ff359ea5074bf7cf72281449dc86 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 0c30b13a372381a965847cccc345c24295d4c827..5fa8ac0e3b2f1b91637d5c630f76bd97138109a7 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 092cac6bb6ef22265770af6d71a1efa2be336381..727148a4ccb989c9e4825843ce0596611cc39906 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 86b765dc93ea18a5771f1502e4d09da69a73c851..fceb7e94d38eea744b1f84d7a07f99ddeaf9cfad 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 75d57e170a892a1171787d5df06c9005f98e6f4d..d1fb91e5b5817de22f4b7da6277c14f76064ce08 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 b586007736630bddfc2dcd14e9fc2064e23eb86b..7451fb7e7d0fae06dc5217c3a32243e33d6d39c4 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 b491e0793cc255e12a2e48d3759cec9ca3282f4e..ea5da05f9554b012207739c96faf41b5a402040f 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 9d7388966bae10a939d9458f5a9d791176301415..22495ee099e2454806ade5e245a210aab55cfe89 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 0f6e830772f6a06aba12e382b4f185324d019008..5cae6de70ce742ad483b2ff7a73b5e9512fb80ad 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 e3d8f2f2a6a099bff55b03b468f38783450eba6b..1f206ddf19a9e598f1bf22d36ad3bc03a350088b 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 0755d2a4aab6e9d676f36222f2678b52beeb62a8..a4b10883ea5cec347f4a2fbf57699e67afa0d5c4 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 b0a3e4651e7b3106551b1e191a894782d1bebac5..1fbbb09b08f1f57823c754fe0d335d77f53cb956 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 e39c0a9e0febbbf167bf05e42a8d8579dd9d431e..e41dcbc50cce2e1863ab18baa9f51e657dd6988a 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 7e9db5af862af329a8c41aeabadd3c1d26b92b7f..c13442397bcf94ef9b3b83da6a23cc03947d1e64 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 dbade772330baf64301eb4c77f40b57b5c7c3cf7..8b696f5f1be4a692c897d3708c9a53806a8d99c5 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 bbb7a308840de341d3a6e59098ad76a3bb1b8d10..78548e4c326884a697bc57960e03a2637c8c5a76 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 9f81ffa05d73bdd94bb3cd870a4cf2535391ceaa..ad8fc50b3277cfaa67b566f0ba0c6d5b0cc7789b 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 0f9a8fc1fba5ea5a5fdd85a993f9b66ec563db88..bb2ef169b30c173d14a36524e1b5bba5fb43cbb9 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 cfb8e1569a98fb27ca6dfb52833efce3089e97f8..2f26b3f29b0207b951d403d099b812ebf43df425 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 d449ae2f2c9854adeb35ee5ceff377ff6810cc3c..bc45f3791b6d9bf33cfe8e85a1a0f2cf3074689f 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 6ea2eef890c302e3fb4d45f0ba0862785deb11e1..65aba2d23b9b186bba4a2c56e7a8bf6e43d730ed 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 d1b9f0d46596597be4f3deca19e127581e77d0b4..344fc4dde9d09566a7d737a56169e794615cdc33 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 c7f56ead1810b0a51cfc0d954b0ef656e8ac3b21..d4d80f7c2f2a81b4ab1448405c325c8cb8abdd45 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 017ac04d47edf257c9c8a55446d8d6ecf31055ef..5f558c65a508c16b6cf517a32ad9385e3184749d 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 85fe7bd1d281a722a95dd235d60f5ebddf398b81..308ffbaee005f039b5698826d23381238a0d6bd5 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 caf293892f5b348ad9a07f7be07142a6ce9ef586..4976c2ac8f957e2620adb07c942db97a444ee6d8 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 24ea05d4beda887b4169bb9498e25faf3f912040..6af5e2064c5e8328372d2f5c7ddc0d0a5e8f752f 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 7835a0271b1e95c30bd80efdb98a103f320be2b9..56264295321d8f0ff6aad8dc1297c41b973d977c 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 a4699905dda97fad8c13e834d686b0d6363d39b3..532181a5425acd2268077ac504e45972d93cbafe 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 a7483e0294060d140d37ba6f63b4d027a59ea984..a5d9e06dc5bd510ea09f36774fadf2d7200c1522 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 5e44921767307caf6001839a6adc03730b38474e..060c675748c9b994a6868bc35e6d270af98aeab2 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 30523c271b71392d141bd27a7c7521dde0fd0f66..c1eed711879019adc5963af146cd454b8755d8ec 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 1b9155da27953da0418d0c09ebb192737ef970a2..7d61edbc22f52a2fa3b02e29b92c07ff8844c596 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 480e1d5769286c461dfd6a6d82bbb828f867a458..e380a1e537c4280ab6301ef807e1918946026066 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 22cb8445f696c09b31e56293805762d1b5850bb5..1b97d2fbf2fdaf43973ba1dd788f063b31fe3bb0 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 13726577b00cb9f0d6ed34a33c0700a0bd76b814..349d81b1758c173457f70e25aab174bf942b2491 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 1c24e908c426fe2f5efb9fecb05db87787d566d8..59d0f90e82d816f68bb5b98162c700d68da83e7a 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 e3ff78f93ffe70d9aabafc49174aef52942e3393..eec51223d610c206da8f1d9e2e044fa43a971320 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 6bdd60731dc8c7b40f800cba59f82edc3b6bedf3..c19b82953b9807608cc8327407d8469336082c05 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 a260d7537690f4270f34b175a28dbb80dcbef729..d5647b9c820d259baa8ecc6e24be354c79f6c275 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 ba9bbe9edde30c9b1abdd2b2d355b6739309c4ca..e1b7bf1d1bb8bdbf41c59ec543bebab1e2d180e8 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 88c87c4d09b8fe47eeb800c2c8012c97c778c8d8..d20f6ebfb46a15212988b3baf1a0ef694a363399 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 dd9a154fc0966215a7cda788b1d28c7d8498f9c6..9951d2efbb7da099c9bacd3687bc157f60d494dd 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) {