forked from sindresorhus/np
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrelease-task-helper.js
61 lines (53 loc) · 1.39 KB
/
release-task-helper.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import test from 'ava';
import sinon from 'sinon';
import esmock from 'esmock';
const verifyRelease = test.macro(async (t, {oldVersion, newVersion, prefixes = {}, like}) => {
const repoUrl = 'https://github.com/sindresorhus/np';
/** @type {import('../source/release-task-helper.js')} */
const {default: releaseTaskHelper} = await esmock('../source/release-task-helper.js', import.meta.url, {
open: sinon.stub(),
'../source/util.js': {
getTagVersionPrefix: async () => prefixes.tag ?? 'v',
getPreReleasePrefix: async () => prefixes.preRelease ?? '',
},
'new-github-release-url': options_ => t.like(options_, {repoUrl, ...like}),
});
await releaseTaskHelper(
{version: newVersion, repoUrl, releaseNotes: sinon.stub()},
{version: oldVersion},
);
});
// TODO: test `body`
test('main', verifyRelease, {
oldVersion: '1.0.0',
newVersion: '1.1.0',
like: {
tag: 'v1.1.0',
isPrerelease: false,
},
});
test('handles increment as new version', verifyRelease, {
oldVersion: '1.0.0',
newVersion: 'minor',
like: {
tag: 'v1.1.0',
isPrerelease: false,
},
});
test('uses resolved prefix', verifyRelease, {
oldVersion: '1.0.0',
newVersion: '1.1.0',
prefixes: {tag: 'ver'},
like: {
tag: 'ver1.1.0',
},
});
test('prerelease', verifyRelease, {
oldVersion: '1.0.0',
newVersion: 'prerelease',
prefixes: {preRelease: 'beta'},
like: {
tag: 'v1.0.1-beta.0',
isPrerelease: true,
},
});