diff --git a/src/tasks/createGithubRelease/getNextGitTag.ts b/src/tasks/createGithubRelease/getNextGitTag.ts index c8b2b789..423cb95c 100644 --- a/src/tasks/createGithubRelease/getNextGitTag.ts +++ b/src/tasks/createGithubRelease/getNextGitTag.ts @@ -27,6 +27,10 @@ export function getNextGitTag(releaseDetailsMap: GitTagDetailsMap, isMultiVarian if (variantVersions.length === 0) throw Error("Could not generate git tag. Missing variant or nextVersion"); + // If not multi-variant and only one variant, return v + if (variantVersions.length === 1 && !isMultiVariant) + return `v${variantVersions[0].nextVersion}`; + // If any variant is null, throw an error if (variantVersions.some(({ variant }) => !variant)) throw Error("Could not generate git tag. Missing variant"); @@ -39,9 +43,6 @@ export function getNextGitTag(releaseDetailsMap: GitTagDetailsMap, isMultiVarian .join("_"); } - // Not a multi-variant package - if (variantVersions.length === 1) return `v${variantVersions[0].nextVersion}`; - // Multi-variant package (fallback, should not hit if isMultiVariant is set correctly) return variantVersions .sort((a, b) => (a.variant || "").localeCompare(b.variant || "")) diff --git a/test/tasks/gitTags.test.ts b/test/tasks/gitTags.test.ts index c995bb65..0ef89ba2 100644 --- a/test/tasks/gitTags.test.ts +++ b/test/tasks/gitTags.test.ts @@ -16,6 +16,26 @@ describe("getNextGitTag", () => { expect(result).to.equal("v0.1.2"); }); + it("should not throw an error if single variant is missing (not multi-variant)", () => { + const ctx = { + "geth.dnp.dapnode.eth": { + variant: null, + nextVersion: "0.1.2" + } + }; + expect(() => getNextGitTag(ctx, false)).to.not.throw() + }); + + it("should throw an error if single variant is missing (multi-variant)", () => { + const ctx = { + "geth.dnp.dapnode.eth": { + variant: null, + nextVersion: "0.1.2" + } + }; + expect(() => getNextGitTag(ctx, true)).to.throw("Could not generate git tag. Missing variant"); + }); + it("should format a single-variant package as variant@v if isMultiVariant is true", () => { const ctx = { "gnosis.dnp.dapnode.eth": {