diff --git a/src/utils.ts b/src/utils.ts index 2c9c5ea..7a12cfb 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -8,7 +8,7 @@ export const truthy = Boolean as unknown as ( export function getHomepageURL({ raw: manifest }: Manifest): string | null { const repo = manifest.repository - const repoURL = !repo + const repoURL = manifest.homepage ? manifest.homepage : typeof repo === "string" ? repo diff --git a/test/specs/url.spec.ts b/test/specs/url.spec.ts index 539b1c7..a58c773 100644 --- a/test/specs/url.spec.ts +++ b/test/specs/url.spec.ts @@ -34,30 +34,44 @@ test.describe("yarn outdated --url", () => { const getURL = (raw: Record) => getHomepageURL({ raw } as Manifest) + // npm expect(getURL({ repository: "npm/npm" })).toBe("https://github.com/npm/npm") + + // GitHub expect(getURL({ repository: "https://github.com/user/repo.git" })).toBe( "https://github.com/user/repo" ) expect(getURL({ repository: "github:mskelton/yarn-plugin-outdated" })).toBe( "https://github.com/mskelton/yarn-plugin-outdated" ) - expect(getURL({ repository: "bitbucket:user/repo" })).toBe( - "https://bitbucket.org/user/repo" - ) - expect(getURL({ repository: "gitlab:user/repo" })).toBe( - "https://gitlab.com/user/repo" - ) expect(getURL({ repository: "git://github.com/user/repo.git" })).toBe( "https://github.com/user/repo" ) expect(getURL({ repository: "git@github.com:user/repo.git" })).toBe( "https://github.com/user/repo" ) + + // BitBucket + expect(getURL({ repository: "bitbucket:user/repo" })).toBe( + "https://bitbucket.org/user/repo" + ) + + // GitLab + expect(getURL({ repository: "gitlab:user/repo" })).toBe( + "https://gitlab.com/user/repo" + ) + + // Other expect(getURL({ homepage: "https://foo.com" })).toBe("https://foo.com") expect(getURL({ homepage: "http://foo.com" })).toBe("http://foo.com") expect(getURL({ repository: { url: "http://foo.com" } })).toBe( "http://foo.com" ) + + // Prefer homepage over repository + expect( + getURL({ homepage: "http://foo.com", repository: "http://bar.com" }) + ).toBe("http://foo.com") }) test.describe("when outdatedIncludeURL config is true", () => {