diff --git a/lib/datasource/__snapshots__/metadata.spec.ts.snap b/lib/datasource/__snapshots__/metadata.spec.ts.snap index 0a7dc8acb2ab67a537f8288d51ad0905fe424ac7..767923b21214386eb49eb55c76dbf51d092484cc 100644 --- a/lib/datasource/__snapshots__/metadata.spec.ts.snap +++ b/lib/datasource/__snapshots__/metadata.spec.ts.snap @@ -81,6 +81,21 @@ Object { } `; +exports[`datasource/metadata Should handle non-url 1`] = ` +Object { + "releases": Array [ + Object { + "releaseTimestamp": "2020-02-14T13:12:00", + "version": "5.7.0", + }, + Object { + "releaseTimestamp": "2020-02-14T10:04:00", + "version": "5.6.1", + }, + ], +} +`; + exports[`datasource/metadata Should handle parsing of sourceUrls correctly 1`] = ` Object { "releases": Array [ diff --git a/lib/datasource/metadata.spec.ts b/lib/datasource/metadata.spec.ts index f45c9d4d60b1cbf3d33f7239b028857afcaf1d5f..59de291111a08dd136bcce0848d30e3ce322015c 100644 --- a/lib/datasource/metadata.spec.ts +++ b/lib/datasource/metadata.spec.ts @@ -119,6 +119,23 @@ describe('datasource/metadata', () => { addMetaData(dep, datasource, lookupName); expect(dep).toMatchSnapshot(); }); + it('Should handle non-url', () => { + const dep = { + sourceUrl: 'not-a-url', + releases: [ + { version: '5.7.0', releaseTimestamp: '2020-02-14T13:12:00' }, + { + version: '5.6.1', + releaseTimestamp: '2020-02-14T10:04:00', + }, + ], + }; + const datasource = datasourceNpm.id; + const lookupName = 'dropzone'; + + addMetaData(dep, datasource, lookupName); + expect(dep).toMatchSnapshot(); + }); it('Should handle parsing/converting of GitHub sourceUrls with http and www correctly', () => { const dep = { diff --git a/lib/datasource/metadata.ts b/lib/datasource/metadata.ts index bb8a2ccc4bd10421b7bc4827f5f10667fcac68b1..071bf0a820b87427886b3f93d1be550492923a7c 100644 --- a/lib/datasource/metadata.ts +++ b/lib/datasource/metadata.ts @@ -133,18 +133,21 @@ export function addMetaData( }); extraBaseUrls.push('gitlab.com'); if (dep.sourceUrl) { - if (URL.parse(dep.sourceUrl).hostname?.includes('gitlab')) { + const parsedUrl = URL.parse(dep.sourceUrl); + if (parsedUrl?.hostname) { + let massagedUrl; + if (parsedUrl.hostname.includes('gitlab')) { + massagedUrl = massageGitlabUrl(dep.sourceUrl); + } else { + massagedUrl = massageGithubUrl(dep.sourceUrl); + } // try massaging it dep.sourceUrl = - parse(massageGitlabUrl(dep.sourceUrl), { + parse(massagedUrl, { extraBaseUrls, }) || dep.sourceUrl; } else { - // try massaging it - dep.sourceUrl = - parse(massageGithubUrl(dep.sourceUrl), { - extraBaseUrls, - }) || dep.sourceUrl; + delete dep.sourceUrl; } }