92 lines
3.3 KiB
JavaScript
92 lines
3.3 KiB
JavaScript
import { test, given } from 'sazerac'
|
|
import { _applyFilter, _getLatestRelease } from './github-common-release.js'
|
|
|
|
describe('GithubRelease', function () {
|
|
test(_getLatestRelease, () => {
|
|
const releaseFixture = [
|
|
{ tag_name: 'cheese', prerelease: false }, // any old string
|
|
{ tag_name: 'v1.2', prerelease: false }, // semver release
|
|
{ tag_name: 'v1.3-beta3', prerelease: true }, // semver pre-release
|
|
]
|
|
given({
|
|
releases: releaseFixture,
|
|
sort: 'semver',
|
|
includePrereleases: true,
|
|
}).expect({ tag_name: 'v1.3-beta3', prerelease: true })
|
|
given({
|
|
releases: releaseFixture,
|
|
sort: 'semver',
|
|
includePrereleases: false,
|
|
}).expect({ tag_name: 'v1.2', prerelease: false })
|
|
given({
|
|
releases: releaseFixture,
|
|
sort: 'date',
|
|
includePrereleases: true,
|
|
}).expect({ tag_name: 'cheese', prerelease: false })
|
|
given({
|
|
releases: releaseFixture,
|
|
sort: 'date',
|
|
includePrereleases: false,
|
|
}).expect({ tag_name: 'cheese', prerelease: false })
|
|
|
|
// if there are only pre-releases to choose from
|
|
// return a pre-release anyway in preference to nothing
|
|
given({
|
|
releases: [{ tag_name: '1.2.0-beta', prerelease: true }],
|
|
sort: 'semver',
|
|
includePrereleases: false,
|
|
}).expect({ tag_name: '1.2.0-beta', prerelease: true })
|
|
given({
|
|
releases: [{ tag_name: '1.2.0-beta', prerelease: true }],
|
|
sort: 'date',
|
|
includePrereleases: false,
|
|
}).expect({ tag_name: '1.2.0-beta', prerelease: true })
|
|
})
|
|
|
|
test(_applyFilter, () => {
|
|
const releases = [
|
|
{ name: 'release/1.1.0', tag_name: 'tag/1.1.0', prerelease: false },
|
|
{ name: 'release/1.2.0', tag_name: 'tag/1.2.0', prerelease: false },
|
|
{
|
|
name: 'release/server-2022-01-01',
|
|
tag_name: 'tag/server-2022-01-01',
|
|
prerelease: false,
|
|
},
|
|
]
|
|
|
|
given({ releases, filter: undefined }).expect(releases)
|
|
given({ releases, filter: '' }).expect(releases)
|
|
given({ releases, filter: '*' }).expect(releases)
|
|
given({ releases, filter: '!*' }).expect([])
|
|
given({ releases, filter: 'foo' }).expect([])
|
|
given({ releases, filter: 'release/server-*' }).expect([
|
|
{
|
|
name: 'release/server-2022-01-01',
|
|
tag_name: 'tag/server-2022-01-01',
|
|
prerelease: false,
|
|
},
|
|
])
|
|
given({ releases, filter: '!release/server-*' }).expect([
|
|
{ name: 'release/1.1.0', tag_name: 'tag/1.1.0', prerelease: false },
|
|
{ name: 'release/1.2.0', tag_name: 'tag/1.2.0', prerelease: false },
|
|
])
|
|
|
|
given({ releases, displayName: 'tag', filter: undefined }).expect(releases)
|
|
given({ releases, displayName: 'tag', filter: '' }).expect(releases)
|
|
given({ releases, displayName: 'tag', filter: '*' }).expect(releases)
|
|
given({ releases, displayName: 'tag', filter: '!*' }).expect([])
|
|
given({ releases, displayName: 'tag', filter: 'foo' }).expect([])
|
|
given({ releases, displayName: 'tag', filter: 'tag/server-*' }).expect([
|
|
{
|
|
name: 'release/server-2022-01-01',
|
|
tag_name: 'tag/server-2022-01-01',
|
|
prerelease: false,
|
|
},
|
|
])
|
|
given({ releases, displayName: 'tag', filter: '!tag/server-*' }).expect([
|
|
{ name: 'release/1.1.0', tag_name: 'tag/1.1.0', prerelease: false },
|
|
{ name: 'release/1.2.0', tag_name: 'tag/1.2.0', prerelease: false },
|
|
])
|
|
})
|
|
})
|