diff --git a/lib/util/url.spec.ts b/lib/util/url.spec.ts index 0ed4143cb69c55a7715345c0505e2c8d9c515986..e1ed216102e3be2602453dd433e47d1abc0535b8 100644 --- a/lib/util/url.spec.ts +++ b/lib/util/url.spec.ts @@ -116,6 +116,7 @@ describe('util/url', () => { expect(url?.protocol).toBe('https:'); expect(url?.host).toBe('github.com'); expect(url?.pathname).toBe('/renovatebot/renovate'); + expect(parseUrl(url)).toBe(url); }); it('trimTrailingSlash', () => { diff --git a/lib/util/url.ts b/lib/util/url.ts index 49d92dc0de91a8c3a948abe2515de4385946966f..d9886939dc1dd3f67ed5a4869a9c7330e867051f 100644 --- a/lib/util/url.ts +++ b/lib/util/url.ts @@ -97,11 +97,15 @@ export function isHttpUrl(url: unknown): boolean { } } -export function parseUrl(url: string | undefined | null): URL | null { +export function parseUrl(url: URL | string | undefined | null): URL | null { if (!url) { return null; } + if (url instanceof URL) { + return url; + } + try { return new URL(url); } catch {