From a54c78244e16f8a63e1a93e9852868516a7989fe Mon Sep 17 00:00:00 2001 From: Michael Chambaud Date: Thu, 25 Jul 2024 09:33:48 -0400 Subject: [PATCH 1/2] integrated `make_latest` property of gh api publish --- lib/is-latest-release.js | 3 +++ lib/publish.js | 2 ++ test/is-latest-release.test.js | 31 +++++++++++++++++++++++++++++++ test/publish.test.js | 17 ++++++++++++++++- 4 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 lib/is-latest-release.js create mode 100644 test/is-latest-release.test.js diff --git a/lib/is-latest-release.js b/lib/is-latest-release.js new file mode 100644 index 00000000..117a8a59 --- /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..016f8cc8 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..8c65d64b --- /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); +}); \ No newline at end of file diff --git a/test/publish.test.js b/test/publish.test.js index 8b28c037..011a0e97 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 }, }, ); From fa0edc49aec30f04bbf755fe4a5683365a65c0c6 Mon Sep 17 00:00:00 2001 From: Michael Chambaud Date: Thu, 25 Jul 2024 17:45:15 +0000 Subject: [PATCH 2/2] prettier --- lib/is-latest-release.js | 6 ++-- lib/publish.js | 2 +- test/is-latest-release.test.js | 62 +++++++++++++++++----------------- test/publish.test.js | 24 ++++++------- 4 files changed, 47 insertions(+), 47 deletions(-) diff --git a/lib/is-latest-release.js b/lib/is-latest-release.js index 117a8a59..22f14452 100644 --- a/lib/is-latest-release.js +++ b/lib/is-latest-release.js @@ -1,3 +1,3 @@ -export default function isLatestRelease({ type, main }) { - return type === 'release' && main -} +export default function isLatestRelease({ type, main }) { + return type === "release" && main; +} diff --git a/lib/publish.js b/lib/publish.js index 016f8cc8..5d770cb2 100644 --- a/lib/publish.js +++ b/lib/publish.js @@ -53,7 +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) + 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 index 8c65d64b..c871999b 100644 --- a/test/is-latest-release.test.js +++ b/test/is-latest-release.test.js @@ -1,31 +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); -}); \ No newline at end of file +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 011a0e97..c97a1b88 100644 --- a/test/publish.test.js +++ b/test/publish.test.js @@ -48,7 +48,7 @@ test("Publish a release without creating discussion", async (t) => { name: nextRelease.name, body: nextRelease.notes, prerelease: false, - make_latest: true + make_latest: true, }, }, ); @@ -179,7 +179,7 @@ test("Publish a release on a channel", async (t) => { name: nextRelease.name, body: nextRelease.notes, prerelease: true, - make_latest: false + make_latest: false, }, }, ); @@ -240,7 +240,7 @@ test("Publish a prerelease without creating discussion", async (t) => { name: nextRelease.name, body: nextRelease.notes, prerelease: true, - make_latest: false + make_latest: false, }, }, ); @@ -449,7 +449,7 @@ test("Publish a release with one asset", async (t) => { body: nextRelease.notes, draft: true, prerelease: false, - make_latest: true + make_latest: true, }, }, ) @@ -537,7 +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 + make_latest: true, }, }, ) @@ -619,7 +619,7 @@ test("Publish a release with an array of missing assets", async (t) => { body: nextRelease.notes, draft: true, prerelease: false, - make_latest: true + make_latest: true, }, }, ) @@ -709,7 +709,7 @@ test("Publish a release with asset and create discussion", async (t) => { body: nextRelease.notes, draft: true, prerelease: false, - make_latest: true + make_latest: true, }, }, ) @@ -795,7 +795,7 @@ test("Publish a draft release", async (t) => { body: nextRelease.notes, draft: true, prerelease: false, - make_latest: true + make_latest: true, }, }, ); @@ -868,7 +868,7 @@ test("Publish a draft release with one asset", async (t) => { body: nextRelease.notes, draft: true, prerelease: false, - make_latest: true + make_latest: true, }, }, ) @@ -941,7 +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 + make_latest: true, }, }, ); @@ -1005,7 +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 + make_latest: true, }, }, ); @@ -1069,7 +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 + make_latest: true, }, }, );