diff --git a/CHANGELOG.md b/CHANGELOG.md index f6c0970..b583cbe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,11 @@ Project versioning adheres to [Semantic Versioning](http://semver.org/). Commit convention is based on [Conventional Commits](http://conventionalcommits.org). Change log format is based on [Keep a Changelog](http://keepachangelog.com/). +## [Unreleased] + +### Changed +- Allow unreleased CHANGELOG section if all subsections are empty + ## [5.0.0](https://github.com/hypermodules/gh-release/compare/v4.0.5-beta.0...v5.0.0) - 2021-01-16 - A release of 4.0.5-beta.0 as a breaking change diff --git a/bin/lib/get-defaults.js b/bin/lib/get-defaults.js index 5dc4b9e..596bc74 100644 --- a/bin/lib/get-defaults.js +++ b/bin/lib/get-defaults.js @@ -33,7 +33,7 @@ function getDefaults (workPath, isEnterprise, callback) { ? release.title.toLowerCase().indexOf('unreleased') !== -1 : false }).filter(function (release) { - return !!release.body + return Object.values(release.parsed).flat().length > 0 }) if (unreleased.length > 0) { diff --git a/test/fixtures/unreleased-empty-subsections/CHANGELOG.md b/test/fixtures/unreleased-empty-subsections/CHANGELOG.md new file mode 100644 index 0000000..f8ee752 --- /dev/null +++ b/test/fixtures/unreleased-empty-subsections/CHANGELOG.md @@ -0,0 +1,17 @@ +## [Unreleased] + +### Added + +### Changed + +### Removed + +### Deprecated + +### Fixed + +### Security + + +## 1.0.0 +- bananas diff --git a/test/fixtures/unreleased-empty-subsections/package.json b/test/fixtures/unreleased-empty-subsections/package.json new file mode 100644 index 0000000..058fe24 --- /dev/null +++ b/test/fixtures/unreleased-empty-subsections/package.json @@ -0,0 +1,8 @@ +{ + "name": "gh-release-test", + "version": "1.0.0", + "repository": { + "type": "git", + "url": "https://github.com/bcomnes/gh-release-test.git" + } +} diff --git a/test/get-defaults-test.js b/test/get-defaults-test.js index f4a60bc..075d81b 100644 --- a/test/get-defaults-test.js +++ b/test/get-defaults-test.js @@ -55,6 +55,15 @@ test('get-defaults supports package.json with an enterprise repo', function (t) }) }) +test('get-defaults allows CHANGELOGs with empty fixtures', function (t) { + t.plan(3) + getDefaults(path.join(__dirname, 'fixtures/unreleased-empty-subsections'), true, function (err, defaults) { + t.equal(err, null, 'error should be null') + t.equal(defaults.owner, 'bcomnes', 'gets owner from package.json') + t.equal(defaults.repo, 'gh-release-test', 'gets repo from package.json') + }) +}) + test('get-defaults errors out with an invalid repository URL', function (t) { t.plan(1) getDefaults(path.join(__dirname, 'fixtures/invalid-repo'), false, function (err, defaults) { diff --git a/test/index.js b/test/index.js index 2742138..2d0ac12 100644 --- a/test/index.js +++ b/test/index.js @@ -58,3 +58,13 @@ test('should allow empty unreleased sections', function (t) { t.notEqual(err.message, errStr) }) }) + +test('should allow empty unreleased sub-sections', function (t) { + const errStr = 'Unreleased changes detected in CHANGELOG.md, aborting' + t.plan(1) + ghRelease({ + workpath: fixture('unreleased-empty-subsections') + }, function (err, result) { + t.notEqual(err.message, errStr) + }) +})