Skip to content

Commit 80219d2

Browse files
authored
Merge pull request #6 from Gusto/rc-fix-prerelease-version
fix(prepare): use correct version for prereleases
2 parents db9aa06 + 039f996 commit 80219d2

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

src/__tests__/prepare.test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ describe('when the version.rb contains a prerelease version', () => {
5555
expect(versionContents).toEqual(`# frozen_string_literal: true
5656
5757
module TestGem
58-
VERSION = '1.0.0-alpha.1'
58+
VERSION = '1.0.0.alpha.1'
5959
end
6060
`);
6161
});

src/__tests__/verifyConditions.test.js

+13-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ describe('when the gemspec has no name defined', () => {
4848
});
4949
});
5050

51-
it('finds the version file', async () => {
51+
it('verifies the version file', async () => {
5252
const { versionFile } = await verifyConditions(
5353
{},
5454
{ cwd: validCwd, env: defaultEnv },
@@ -57,6 +57,18 @@ it('finds the version file', async () => {
5757
expect(versionFile).toEqual('lib/test-gem/version.rb');
5858
});
5959

60+
describe('when the existing version file contains a prerelease version', () => {
61+
it('verifies the version file', async () => {
62+
const cwd = path.resolve(__dirname, './fixtures/prerelease');
63+
const { versionFile } = await verifyConditions(
64+
{},
65+
{ cwd, env: defaultEnv },
66+
{ credentialsFile },
67+
);
68+
expect(versionFile).toEqual('lib/test-gem/version.rb');
69+
});
70+
});
71+
6072
describe('when there is no version file', () => {
6173
it('throws an error', async () => {
6274
const cwd = path.resolve(__dirname, './fixtures/no-version-file');

src/prepare.js

+6-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,12 @@ const { VERSION_REGEX } = require('./common');
66
const writeVersion = async ({ versionFile, nextVersion, logger, cwd }) => {
77
const fullVersionPath = path.resolve(cwd, versionFile);
88
const versionContents = await readFile(fullVersionPath, 'utf8');
9-
const newContents = versionContents.replace(VERSION_REGEX, `$1${nextVersion}$2`);
9+
const newContents = versionContents.replace(
10+
VERSION_REGEX,
11+
// Rubygems replaces all `-` with `.pre.`, which causes odd version differences between tags/releases
12+
// and the published gem version. Replacing `-` with `.` is a smaller difference.
13+
`$1${nextVersion.replace('-', '.')}$2`,
14+
);
1015
logger.log('Writing version %s to `%s`', nextVersion, versionFile);
1116
await writeFile(fullVersionPath, newContents, 'utf8');
1217
};

0 commit comments

Comments
 (0)