From 46fe875fcd1c191d5b0a62fa42d1a1aac98acb74 Mon Sep 17 00:00:00 2001 From: Ivan Dlugos <6349682+vaind@users.noreply.github.com> Date: Mon, 17 Oct 2022 21:13:23 +0200 Subject: [PATCH] feat: verify Changelog entry is not added to a released section (#44) --- CHANGELOG.md | 6 ++++++ danger/dangerfile.js | 29 +++++++++++++++++++++-------- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 347abcc..cf6dda2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 2.4.0 + +### Features + +- Danger - check that a changelog entry is not added to an already released section ([#44](https://github.com/getsentry/github-workflows/pull/44)) + ## 2.3.0 ### Features diff --git a/danger/dangerfile.js b/danger/dangerfile.js index e25551b..59872f2 100644 --- a/danger/dangerfile.js +++ b/danger/dangerfile.js @@ -79,19 +79,32 @@ async function checkChangelog() { changelogFile ); - const hasChangelogEntry = RegExp(`#${danger.github.pr.number}\\b`).test( + const changelogMatch = RegExp(`^(.*)\n[^\n]+#${danger.github.pr.number}\\b`, 's').exec( changelogContents ); - if (hasChangelogEntry) { - return; + // check if a changelog entry exists + if (!changelogMatch) { + return reportMissingChangelog(changelogFile); } - // Report missing changelog entry - fail( - "Please consider adding a changelog entry for the next release.", - changelogFile - ); + // Check if the entry is added to an Unreleased section (or rather, check that it's not added to a released one) + const textBeforeEntry = changelogMatch[1] + const section = RegExp('^(## +v?[0-9.]+)([\-\n _]|$)', 'm').exec(textBeforeEntry) + if (section) { + const lineNr = 1 + textBeforeEntry.split(/\r\n|\r|\n/).length + fail( + `The changelog entry seems to be part of an already released section \`${section[1]}\`. + Consider moving the entry to the \`## Unreleased\` section, please.`, + changelogFile, + lineNr + ); + } +} + +/// Report missing changelog entry +function reportMissingChangelog(changelogFile) { + fail("Please consider adding a changelog entry for the next release.", changelogFile); const prTitleFormatted = danger.github.pr.title .split(": ")