Skip to content

Commit

Permalink
fix(release): strip prefix before comparing version
Browse files Browse the repository at this point in the history
  • Loading branch information
neilime committed Oct 24, 2022
1 parent 6df64e4 commit 26471cd
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 4 deletions.
13 changes: 10 additions & 3 deletions lib/releases.js
Expand Up @@ -5,11 +5,17 @@ const { getVersionInfo } = require('./versions')
const { template } = require('./template')
const { log } = require('./log')

const sortReleases = (releases) => {
const sortReleases = (releases, tagPrefix) => {
// For semver, we find the greatest release number
// For non-semver, we use the most recently merged
try {
return releases.sort((r1, r2) => compareVersions(r1.tag_name, r2.tag_name))
const tagPrefixRexExp = new RegExp(`^${regexEscape(tagPrefix)}`)
return releases.sort((r1, r2) =>
compareVersions(
r1.tag_name.replace(tagPrefixRexExp, ''),
r2.tag_name.replace(tagPrefixRexExp, '')
)
)
} catch {
return releases.sort(
(r1, r2) => new Date(r1.created_at) - new Date(r2.created_at)
Expand Down Expand Up @@ -57,7 +63,8 @@ const findReleases = async ({
? commitishFilteredReleases.filter((r) => r.tag_name.startsWith(tagPrefix))
: commitishFilteredReleases
const sortedPublishedReleases = sortReleases(
filteredReleases.filter((r) => !r.draft)
filteredReleases.filter((r) => !r.draft),
tagPrefix
)
const draftRelease = filteredReleases.find((r) => r.draft)
const lastRelease =
Expand Down
44 changes: 43 additions & 1 deletion test/releases.test.js
@@ -1,4 +1,4 @@
const { generateChangeLog } = require('../lib/releases')
const { generateChangeLog, findReleases } = require('../lib/releases')
const { DEFAULT_CONFIG } = require('../lib/default-config')

const pullRequests = [
Expand Down Expand Up @@ -234,4 +234,46 @@ describe('releases', () => {
`)
})
})

describe('findReleases', () => {
it('should retrieve last release respecting semver, stripped prefix', async () => {
const paginate = jest.fn().mockResolvedValue([
{
tag_name: 'test-1.0.1',
target_commitish: 'master',
created_at: new Date('2022-01-01'),
},
{
tag_name: 'test-1.0.0',
target_commitish: 'master',
created_at: new Date('2022-02-01'),
},
])

const context = {
log: {
info: jest.fn(),
},
repo: jest.fn(),
payload: {
repository: 'test',
},
octokit: {
paginate,
repos: { listReleases: { endpoint: { merge: jest.fn() } } },
},
}
const targetCommitish = 'refs/heads/master'
const filterByCommitish = ''
const tagPrefix = 'test-'

const { lastRelease } = await findReleases({
context,
targetCommitish,
filterByCommitish,
tagPrefix,
})
expect(lastRelease.tag_name).toEqual('test-1.0.1')
})
})
})

0 comments on commit 26471cd

Please sign in to comment.