diff --git a/lib/is-latest-release.js b/lib/is-latest-release.js new file mode 100644 index 00000000..22f14452 --- /dev/null +++ b/lib/is-latest-release.js @@ -0,0 +1,3 @@ +export default function isLatestRelease({ type, main }) { + return type === "release" && main; +} diff --git a/lib/publish.js b/lib/publish.js index b91c39d1..5d770cb2 100644 --- a/lib/publish.js +++ b/lib/publish.js @@ -11,6 +11,7 @@ import globAssets from "./glob-assets.js"; import resolveConfig from "./resolve-config.js"; import { toOctokitOptions } from "./octokit.js"; import isPrerelease from "./is-prerelease.js"; +import isLatestRelease from "./is-latest-release.js"; const debug = debugFactory("semantic-release:github"); @@ -52,6 +53,7 @@ export default async function publish(pluginConfig, context, { Octokit }) { name: template(releaseNameTemplate)(context), body: template(releaseBodyTemplate)(context), prerelease: isPrerelease(branch), + make_latest: isLatestRelease(branch), }; debug("release object: %O", release); diff --git a/test/is-latest-release.test.js b/test/is-latest-release.test.js new file mode 100644 index 00000000..c871999b --- /dev/null +++ b/test/is-latest-release.test.js @@ -0,0 +1,31 @@ +import test from "ava"; +import isLatestRelease from "../lib/is-latest-release.js"; + +test("Test for empty object", (t) => { + const branch = {}; + t.is(isLatestRelease(branch), false); +}); + +test("Test if type release and main is used correctly", (t) => { + const branch = { + type: "release", + main: true, + }; + t.is(isLatestRelease(branch), true); +}); + +test("Test if type prerelease is used correctly", (t) => { + const branch = { + type: "prerelease", + main: true, + }; + t.is(isLatestRelease(branch), false); +}); + +test("Test if type main property as boolean is used correctly", (t) => { + const branch = { + type: "release", + main: false, + }; + t.is(isLatestRelease(branch), false); +}); diff --git a/test/publish.test.js b/test/publish.test.js index 8b28c037..c97a1b88 100644 --- a/test/publish.test.js +++ b/test/publish.test.js @@ -48,6 +48,7 @@ test("Publish a release without creating discussion", async (t) => { name: nextRelease.name, body: nextRelease.notes, prerelease: false, + make_latest: true, }, }, ); @@ -112,6 +113,7 @@ test("Publish a release and create discussion", async (t) => { name: nextRelease.name, body: nextRelease.notes, prerelease: false, + make_latest: true, discussion_category_name: pluginConfig.discussionCategoryName, }, }, @@ -177,6 +179,7 @@ test("Publish a release on a channel", async (t) => { name: nextRelease.name, body: nextRelease.notes, prerelease: true, + make_latest: false, }, }, ); @@ -207,7 +210,7 @@ test("Publish a release on a channel", async (t) => { t.true(fetch.done()); }); -test("Publish a prerelease wihtout creating discussion", async (t) => { +test("Publish a prerelease without creating discussion", async (t) => { const owner = "test_user"; const repo = "test_repo"; const env = { GITHUB_TOKEN: "github_token" }; @@ -237,6 +240,7 @@ test("Publish a prerelease wihtout creating discussion", async (t) => { name: nextRelease.name, body: nextRelease.notes, prerelease: true, + make_latest: false, }, }, ); @@ -300,6 +304,7 @@ test("Publish a prerelease and create discussion", async (t) => { name: nextRelease.name, body: nextRelease.notes, prerelease: true, + make_latest: false, discussion_category_name: pluginConfig.discussionCategoryName, }, }, @@ -366,6 +371,7 @@ test("Publish a maintenance release", async (t) => { name: nextRelease.name, body: nextRelease.notes, prerelease: false, + make_latest: false, }, }, ); @@ -443,6 +449,7 @@ test("Publish a release with one asset", async (t) => { body: nextRelease.notes, draft: true, prerelease: false, + make_latest: true, }, }, ) @@ -530,6 +537,7 @@ test("Publish a release with one asset and custom github url", async (t) => { body: nextRelease.notes, draft: true, prerelease: false, + make_latest: true, }, }, ) @@ -611,6 +619,7 @@ test("Publish a release with an array of missing assets", async (t) => { body: nextRelease.notes, draft: true, prerelease: false, + make_latest: true, }, }, ) @@ -700,6 +709,7 @@ test("Publish a release with asset and create discussion", async (t) => { body: nextRelease.notes, draft: true, prerelease: false, + make_latest: true, }, }, ) @@ -785,6 +795,7 @@ test("Publish a draft release", async (t) => { body: nextRelease.notes, draft: true, prerelease: false, + make_latest: true, }, }, ); @@ -857,6 +868,7 @@ test("Publish a draft release with one asset", async (t) => { body: nextRelease.notes, draft: true, prerelease: false, + make_latest: true, }, }, ) @@ -929,6 +941,7 @@ test("Publish a release when env.GITHUB_URL is set to https://github.com (Defaul name: nextRelease.name, body: nextRelease.notes, prerelease: false, + make_latest: true, }, }, ); @@ -992,6 +1005,7 @@ test("Publish a custom release body", async (t) => { name: nextRelease.name, body: `To install this run npm install package@${nextRelease.name}\n\n${nextRelease.notes}`, prerelease: false, + make_latest: true, }, }, ); @@ -1055,6 +1069,7 @@ test("Publish a custom release name", async (t) => { name: `omg its the best release: ${nextRelease.name} 🌈🌈`, body: nextRelease.notes, prerelease: false, + make_latest: true, }, }, );