Skip to content

Commit 5ecfa2e

Browse files
authored
Merge pull request #8 from kf6kjg/fix_542
fix: Combining both release-as and prerelease now doesn't break package
2 parents d2491bc + dc34a9c commit 5ecfa2e

File tree

2 files changed

+40
-2
lines changed

2 files changed

+40
-2
lines changed

lib/lifecycles/bump.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ async function Bump (args, version) {
2727
const release = await bumpVersion(args.releaseAs, version, args)
2828
if (!args.firstRelease) {
2929
const releaseType = getReleaseType(args.prerelease, release.releaseType, version)
30-
newVersion = semver.valid(releaseType) || semver.inc(version, releaseType, args.prerelease)
30+
const releaseTypeAsVersion = releaseType === 'pre' + release.releaseType ? semver.valid(release.releaseType + '-' + args.prerelease + '.0') : semver.valid(releaseType)
31+
32+
newVersion = releaseTypeAsVersion || semver.inc(version, releaseType, args.prerelease)
3133
updateConfigs(args, newVersion)
3234
} else {
3335
checkpoint(args, 'skip version bump on first release', [], chalk.red(figures.cross))

test/core.spec.js

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ const stdMocks = require('std-mocks')
1313
const cli = require('../command')
1414
const formatCommitMessage = require('../lib/format-commit-message')
1515

16-
require('chai').should()
16+
const should = require('chai').should()
1717

1818
// set by mock()
1919
let standardVersion
@@ -364,6 +364,42 @@ describe('cli', function () {
364364
await exec('--release-as 200.0.0-amazing')
365365
getPackageVersion().should.equal('200.0.0-amazing')
366366
})
367+
368+
it('releases as 100.0.0 with prerelease amazing', async function () {
369+
mock({
370+
bump: 'patch',
371+
fs: { 'CHANGELOG.md': 'legacy header format<a name="1.0.0">\n' },
372+
pkg: {
373+
version: '1.0.0'
374+
}
375+
})
376+
await exec('--release-as 100.0.0 --prerelease amazing')
377+
should.equal(getPackageVersion(), '100.0.0-amazing.0')
378+
})
379+
380+
it('release 100.0.0 with prerelease amazing bumps build', async function () {
381+
mock({
382+
bump: 'patch',
383+
fs: { 'CHANGELOG.md': 'legacy header format<a name="100.0.0-amazing.0">\n' },
384+
pkg: {
385+
version: '100.0.0-amazing.0'
386+
}
387+
})
388+
await exec('--release-as 100.0.0 --prerelease amazing')
389+
should.equal(getPackageVersion(), '100.0.0-amazing.1')
390+
})
391+
392+
it('release 100.0.0-amazing.0 with prerelease amazing bumps build', async function () {
393+
mock({
394+
bump: 'patch',
395+
fs: { 'CHANGELOG.md': 'legacy header format<a name="100.0.0-amazing.0">\n' },
396+
pkg: {
397+
version: '100.0.0-amazing.0'
398+
}
399+
})
400+
await exec('--release-as 100.0.0-amazing.0 --prerelease amazing')
401+
should.equal(getPackageVersion(), '100.0.0-amazing.1')
402+
})
367403
})
368404

369405
it('creates a prerelease with a new minor version after two prerelease patches', async function () {

0 commit comments

Comments
 (0)