diff --git a/lib/content/index.js b/lib/content/index.js index 1e1b6e80..e10cd318 100644 --- a/lib/content/index.js +++ b/lib/content/index.js @@ -199,10 +199,10 @@ module.exports = { }, allowedPackages: [], changelogTypes: [ - { type: 'feat', section: 'Features', hidden: false, collapse: false }, - { type: 'fix', section: 'Bug Fixes', hidden: false, collapse: false }, - { type: 'docs', section: 'Documentation', hidden: false, collapse: false }, - { type: 'deps', section: 'Dependencies', hidden: false, collapse: false }, - { type: 'chore', section: 'Chores', hidden: false, collapse: false }, + { type: 'feat', section: 'Features', hidden: false }, + { type: 'fix', section: 'Bug Fixes', hidden: false }, + { type: 'docs', section: 'Documentation', hidden: false }, + { type: 'deps', section: 'Dependencies', hidden: false }, + { type: 'chore', section: 'Chores', hidden: true }, ], } diff --git a/lib/release/changelog.js b/lib/release/changelog.js index 355edbb7..8358e6c2 100644 --- a/lib/release/changelog.js +++ b/lib/release/changelog.js @@ -29,28 +29,28 @@ class Changelog { } #getEntries (type) { - const section = this.#sections[type] - const entries = this.#entries[type].map(list) - // Ignoring coverage until we use this again - /* istanbul ignore next */ - if (section?.collapse) { - entries.unshift('
Commits\n') - entries.push('\n
') - } - return entries.join('\n') + return this.#entries[type].map(list).join('\n') } toString () { const body = [this.#title] + const includedTypes = [] + for (const type of this.#types) { - const title = this.#titles[type] if (this.#entries[type]?.length) { - body.push( - `### ${title}`, - this.#getEntries(type) - ) + includedTypes.push(type) + body.push(`### ${this.#titles[type]}`, this.#getEntries(type)) } } + + // If every commit is from a hidden section then we return an + // empty string which will skip the release PR being created. + // We do this because we don't want PRs opened if they only contain + // chores but we do want to rebuild existing PRs if chores are added. + if (includedTypes.every((type) => this.#sections[type]?.hidden)) { + return '' + } + return body.join('\n\n').trim() } } diff --git a/release-please-config.json b/release-please-config.json index ca92ecb2..62cd93d9 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -3,32 +3,27 @@ { "type": "feat", "section": "Features", - "hidden": false, - "collapse": false + "hidden": false }, { "type": "fix", "section": "Bug Fixes", - "hidden": false, - "collapse": false + "hidden": false }, { "type": "docs", "section": "Documentation", - "hidden": false, - "collapse": false + "hidden": false }, { "type": "deps", "section": "Dependencies", - "hidden": false, - "collapse": false + "hidden": false }, { "type": "chore", "section": "Chores", - "hidden": false, - "collapse": false + "hidden": true } ], "packages": { diff --git a/tap-snapshots/test/apply/source-snapshots.js.test.cjs b/tap-snapshots/test/apply/source-snapshots.js.test.cjs index c649b4d7..b3271948 100644 --- a/tap-snapshots/test/apply/source-snapshots.js.test.cjs +++ b/tap-snapshots/test/apply/source-snapshots.js.test.cjs @@ -1368,32 +1368,27 @@ release-please-config.json { "type": "feat", "section": "Features", - "hidden": false, - "collapse": false + "hidden": false }, { "type": "fix", "section": "Bug Fixes", - "hidden": false, - "collapse": false + "hidden": false }, { "type": "docs", "section": "Documentation", - "hidden": false, - "collapse": false + "hidden": false }, { "type": "deps", "section": "Dependencies", - "hidden": false, - "collapse": false + "hidden": false }, { "type": "chore", "section": "Chores", - "hidden": false, - "collapse": false + "hidden": true } ], "prerelease-type": "pre", @@ -3031,32 +3026,27 @@ release-please-config.json { "type": "feat", "section": "Features", - "hidden": false, - "collapse": false + "hidden": false }, { "type": "fix", "section": "Bug Fixes", - "hidden": false, - "collapse": false + "hidden": false }, { "type": "docs", "section": "Documentation", - "hidden": false, - "collapse": false + "hidden": false }, { "type": "deps", "section": "Dependencies", - "hidden": false, - "collapse": false + "hidden": false }, { "type": "chore", "section": "Chores", - "hidden": false, - "collapse": false + "hidden": true } ], "prerelease-type": "pre", @@ -4410,32 +4400,27 @@ release-please-config.json { "type": "feat", "section": "Features", - "hidden": false, - "collapse": false + "hidden": false }, { "type": "fix", "section": "Bug Fixes", - "hidden": false, - "collapse": false + "hidden": false }, { "type": "docs", "section": "Documentation", - "hidden": false, - "collapse": false + "hidden": false }, { "type": "deps", "section": "Dependencies", - "hidden": false, - "collapse": false + "hidden": false }, { "type": "chore", "section": "Chores", - "hidden": false, - "collapse": false + "hidden": true } ], "prerelease-type": "pre", diff --git a/test/release/changelog.js b/test/release/changelog.js index 838b0d74..06030bca 100644 --- a/test/release/changelog.js +++ b/test/release/changelog.js @@ -121,6 +121,10 @@ t.test('filters out multiple template oss commits', async t => { const changelog = await mockChangelog({ authors: false, commits: [{ + sha: 'z', + type: 'fix', + bareMessage: 'just a fix', + }, { sha: 'a', type: 'chore', bareMessage: 'postinstall for dependabot template-oss PR', @@ -152,6 +156,8 @@ t.test('filters out multiple template oss commits', async t => { }) t.strictSame(changelog, [ '## [1.0.0](https://github.com/npm/cli/compare/v0.1.0...v1.0.0) (DATE)', + '### Bug Fixes', + '* [`z`](https://github.com/npm/cli/commit/z) just a fix', '### Chores', // eslint-disable-next-line max-len '* [`b`](https://github.com/npm/cli/commit/b) [#101](https://github.com/npm/cli/pull/101) postinstall for dependabot template-oss PR', @@ -159,3 +165,19 @@ t.test('filters out multiple template oss commits', async t => { '* [`c`](https://github.com/npm/cli/commit/c) [#101](https://github.com/npm/cli/pull/101) bump @npmcli/template-oss from 1 to 2', ]) }) + +t.test('empty change log with only chore commits', async t => { + const changelog = await mockChangelog({ + authors: false, + commits: [{ + sha: 'a', + type: 'chore', + bareMessage: 'some chore', + }, { + sha: 'a', + type: 'chore', + bareMessage: 'another chore', + }], + }) + t.strictSame(changelog, []) +})