@release-it/keep-a-changelog 2.2.1 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -2
- package/index.js +18 -10
- package/package.json +5 -5
- package/test.js +54 -28
- package/.prettierrc +0 -7
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Keep-a-changelog plugin for release-it
|
|
2
2
|
|
|
3
|
-
This [release-it plugin](https://github.com/release-it/release-it/blob/master/docs/plugins
|
|
3
|
+
This [release-it plugin](https://github.com/release-it/release-it/blob/master/docs/plugins.md) maintains your
|
|
4
4
|
CHANGELOG.md file according to the [Keep A Changelog](https://keepachangelog.com/) standards.
|
|
5
5
|
|
|
6
6
|
The idea and initial implementation comes [from @eMarek](https://github.com/release-it/release-it/issues/662).
|
|
@@ -23,8 +23,9 @@ In [release-it](https://github.com/release-it/release-it) config:
|
|
|
23
23
|
|
|
24
24
|
| option | default value | description |
|
|
25
25
|
| -------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
26
|
-
| filename | `CHANGELOG.md` | File with changelogs. |
|
|
26
|
+
| filename | `'CHANGELOG.md'` | File with changelogs. |
|
|
27
27
|
| strictLatest | `true` | Entry of latest version must be present in order to get correct changelog. Set this option to `false` if you expect latest version without logs. |
|
|
28
28
|
| addUnreleased | `false` | It leaves "Unreleased" title row if set to `true`. |
|
|
29
29
|
| keepUnreleased | `false` | It leaves "Unreleased" title row unchanged if set to `true`. |
|
|
30
30
|
| addVersionUrl | `false` | Links the version to the according changeset. |
|
|
31
|
+
| head | `'HEAD'` | The git revision the new version tag is compared to in the Unreleased URL. |
|
package/index.js
CHANGED
|
@@ -13,13 +13,14 @@ const getFormattedDate = () => {
|
|
|
13
13
|
class KeepAChangelog extends Plugin {
|
|
14
14
|
async init() {
|
|
15
15
|
await super.init();
|
|
16
|
-
const { filename, strictLatest, addUnreleased, keepUnreleased, addVersionUrl } = this.options;
|
|
16
|
+
const { filename, strictLatest, addUnreleased, keepUnreleased, addVersionUrl, head } = this.options;
|
|
17
17
|
|
|
18
18
|
this.filename = filename || 'CHANGELOG.md';
|
|
19
19
|
this.strictLatest = strictLatest === undefined ? true : Boolean(strictLatest);
|
|
20
20
|
this.addUnreleased = addUnreleased === undefined ? false : Boolean(addUnreleased);
|
|
21
21
|
this.keepUnreleased = keepUnreleased === undefined ? false : Boolean(keepUnreleased);
|
|
22
22
|
this.addVersionUrl = addVersionUrl === undefined ? false : Boolean(addVersionUrl);
|
|
23
|
+
this.head = head || 'HEAD';
|
|
23
24
|
|
|
24
25
|
this.changelogPath = path.resolve(this.filename);
|
|
25
26
|
this.changelogContent = fs.readFileSync(this.changelogPath, 'utf-8');
|
|
@@ -34,6 +35,12 @@ class KeepAChangelog extends Plugin {
|
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
getChangelog(latestVersion) {
|
|
38
|
+
const { isIncrement } = this.config;
|
|
39
|
+
// Return the unchanged changelog content when no increment is made
|
|
40
|
+
if (!isIncrement) {
|
|
41
|
+
return this.changelogContent;
|
|
42
|
+
}
|
|
43
|
+
|
|
37
44
|
const { changelog } = this.getContext();
|
|
38
45
|
if (changelog) return changelog;
|
|
39
46
|
|
|
@@ -72,10 +79,11 @@ class KeepAChangelog extends Plugin {
|
|
|
72
79
|
const repositoryUrl = `https://${repo.host}/${repo.repository}`;
|
|
73
80
|
|
|
74
81
|
// Add or update the Unreleased link
|
|
75
|
-
const unreleasedUrl = `${repositoryUrl}/compare/${tagName}
|
|
82
|
+
const unreleasedUrl = `${repositoryUrl}/compare/${tagName}...${this.head}`;
|
|
76
83
|
const unreleasedLink = `[Unreleased]: ${unreleasedUrl}`;
|
|
77
|
-
|
|
78
|
-
|
|
84
|
+
const hasUnreleasedLink = /^\[(Unreleased)\]\: .*$/im;
|
|
85
|
+
if (hasUnreleasedLink.test(updatedChangelog)) {
|
|
86
|
+
updatedChangelog = updatedChangelog.replace(hasUnreleasedLink, '[$1]: ' + unreleasedUrl);
|
|
79
87
|
} else {
|
|
80
88
|
updatedChangelog = `${updatedChangelog}${this.EOL}${this.EOL}${unreleasedLink}`;
|
|
81
89
|
}
|
|
@@ -87,25 +95,25 @@ class KeepAChangelog extends Plugin {
|
|
|
87
95
|
if (updatedChangelog.includes(latestVersionLink)) {
|
|
88
96
|
return updatedChangelog.replace(latestVersionLink, `${releaseLink}${this.EOL}${latestVersionLink}`);
|
|
89
97
|
} else {
|
|
90
|
-
return `${updatedChangelog}${this.EOL}${releaseLink}
|
|
98
|
+
return `${updatedChangelog}${this.EOL}${releaseLink}`;
|
|
91
99
|
}
|
|
92
100
|
}
|
|
93
101
|
|
|
94
102
|
beforeRelease() {
|
|
95
103
|
const { addUnreleased, keepUnreleased, addVersionUrl } = this;
|
|
96
|
-
const { isDryRun } = this.config;
|
|
97
|
-
if (isDryRun || keepUnreleased) return;
|
|
104
|
+
const { isDryRun, isIncrement } = this.config;
|
|
105
|
+
if (isDryRun || keepUnreleased || !isIncrement) return;
|
|
98
106
|
const { version } = this.getContext();
|
|
99
107
|
const formattedDate = getFormattedDate();
|
|
100
|
-
const unreleasedTitle = addUnreleased ? this.unreleasedTitle : '';
|
|
101
|
-
const releaseTitle = `${unreleasedTitle}
|
|
108
|
+
const unreleasedTitle = addUnreleased ? this.unreleasedTitle + this.EOL + this.EOL : '';
|
|
109
|
+
const releaseTitle = `${unreleasedTitle}## [${version}] - ${formattedDate}`;
|
|
102
110
|
let changelog = this.changelogContent.replace(this.unreleasedTitle, releaseTitle);
|
|
103
111
|
|
|
104
112
|
if (addVersionUrl) {
|
|
105
113
|
changelog = this.addVersionUrls(changelog);
|
|
106
114
|
}
|
|
107
115
|
|
|
108
|
-
fs.writeFileSync(this.changelogPath, changelog + this.EOL);
|
|
116
|
+
fs.writeFileSync(this.changelogPath, changelog.trim() + this.EOL);
|
|
109
117
|
}
|
|
110
118
|
}
|
|
111
119
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@release-it/keep-a-changelog",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"description": "Keep-a-changelog plugin for release-it",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -33,12 +33,12 @@
|
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"bron": "^1.1.1",
|
|
36
|
-
"mock-fs": "^
|
|
37
|
-
"release-it": "^14.
|
|
38
|
-
"sinon": "^
|
|
36
|
+
"mock-fs": "^5.0.0",
|
|
37
|
+
"release-it": "^14.8.0",
|
|
38
|
+
"sinon": "^11.1.1"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
|
-
"release-it": "^14.
|
|
41
|
+
"release-it": "^14.8.0"
|
|
42
42
|
},
|
|
43
43
|
"engines": {
|
|
44
44
|
"node": ">=10"
|
package/test.js
CHANGED
|
@@ -10,23 +10,27 @@ const initialDryRunFileContents =
|
|
|
10
10
|
'\n\n## [Unreleased]\n\n* Item A\n* Item B\n\n## [1.0.0] - 2020-05-02\n\n* Item C\n* Item D';
|
|
11
11
|
|
|
12
12
|
mock({
|
|
13
|
-
'./CHANGELOG-FOO.md': '
|
|
14
|
-
'./CHANGELOG-
|
|
15
|
-
'./CHANGELOG-EMPTY.md': '
|
|
16
|
-
'./CHANGELOG-FULL.md':
|
|
13
|
+
'./CHANGELOG-FOO.md': '## [FOO]\n\n* Item A\n* Item B',
|
|
14
|
+
'./CHANGELOG-MISSING.md': '## [Unreleased]\n\n* Item A\n* Item B',
|
|
15
|
+
'./CHANGELOG-EMPTY.md': '## [Unreleased]\n\n\n\n## [1.0.0]\n\n* Item A\n* Item B',
|
|
16
|
+
'./CHANGELOG-FULL.md':
|
|
17
|
+
'# Changelog\n\n## [Unreleased]\n\n* Item A\n* Item B\n\n## [1.0.0] - 2020-05-02\n\n* Item C\n* Item D',
|
|
18
|
+
'./CHANGELOG-NO-STRICT.md': '## [Unreleased]\n\n* Item A\n* Item B\n\n## [1.0.0] - 2020-05-02\n\n* Item C\n* Item D',
|
|
17
19
|
'./CHANGELOG-DRYRUN.md': initialDryRunFileContents,
|
|
18
|
-
'./CHANGELOG-LESS_NEW_LINES.md':
|
|
19
|
-
'\n\n## [Unreleased]\n* Item A\n* Item B\n## [1.0.0] - 2020-05-02\n* Item C\n* Item D',
|
|
20
|
+
'./CHANGELOG-LESS_NEW_LINES.md': '## [Unreleased]\n* Item A\n* Item B\n## [1.0.0] - 2020-05-02\n* Item C\n* Item D',
|
|
20
21
|
'./CHANGELOG-EOL.md':
|
|
21
22
|
'\r\n\r\n## [Unreleased]\r\n\r\n* Item A\r\n* Item B\r\n\r\n## [1.0.0] - 2020-05-02\r\n\r\n* Item C\r\n* Item D',
|
|
23
|
+
'./CHANGELOG-UNRELEASED.md': '## [Unreleased]\n\n* Item A\n* Item B\n\n## [1.0.0] - 2020-05-02\n\n* Item C\n* Item D',
|
|
22
24
|
'./CHANGELOG-VERSION_URL.md':
|
|
23
|
-
'
|
|
25
|
+
'## [Unreleased]\n\n* Item A\n* Item B\n\n## [1.0.0] - 2020-05-02\n\n* Item C\n* Item D\n\n[Unreleased]: https://github.com/release-it/release-it/compare/1.0.0..HEAD\n[1.0.0]: https://github.com/release-it/release-it/compare/0.0.0...1.0.0',
|
|
26
|
+
'./CHANGELOG-VERSION_URL_HEAD.md':
|
|
27
|
+
'## [Unreleased]\n\n* Item A\n* Item B\n\n## [1.0.0] - 2020-05-02\n\n* Item C\n* Item D\n\n[Unreleased]: https://github.com/release-it/release-it/compare/1.0.0..main\n[1.0.0]: https://github.com/release-it/release-it/compare/0.0.0...1.0.0',
|
|
24
28
|
'./CHANGELOG-VERSION_URL_UNRELEASED.md':
|
|
25
|
-
'
|
|
29
|
+
'## [Unreleased]\n\n* Item A\n* Item B\n\n## [1.0.0] - 2020-05-02\n\n* Item C\n* Item D\n\n[Unreleased]: https://github.com/user/project/compare/1.0.0..HEAD\n[1.0.0]: https://github.com/user/project/compare/0.0.0...1.0.0',
|
|
26
30
|
'./CHANGELOG-VERSION_URL_NEW.md': '## [Unreleased]\n\n* Item A\n* Item B'
|
|
27
31
|
});
|
|
28
32
|
|
|
29
|
-
const readFile = file => fs.readFileSync(file).toString()
|
|
33
|
+
const readFile = file => fs.readFileSync(file).toString();
|
|
30
34
|
|
|
31
35
|
const namespace = 'keep-a-changelog';
|
|
32
36
|
|
|
@@ -48,13 +52,17 @@ test('should throw for empty "unreleased" section', async t => {
|
|
|
48
52
|
await assert.rejects(runTasks(plugin), /There are no entries under "Unreleased" section in CHANGELOG-EMPTY\.md/);
|
|
49
53
|
});
|
|
50
54
|
|
|
55
|
+
test('should not throw for empty "unreleased" section when no-increment flag is set', async t => {
|
|
56
|
+
const options = { increment: false, [namespace]: { filename: 'CHANGELOG-EMPTY.md' } };
|
|
57
|
+
const plugin = factory(Plugin, { namespace, options });
|
|
58
|
+
await runTasks(plugin);
|
|
59
|
+
assert.equal(plugin.getChangelog(), readFile('./CHANGELOG-EMPTY.md'));
|
|
60
|
+
});
|
|
61
|
+
|
|
51
62
|
test('should throw for missing section for previous release', async t => {
|
|
52
|
-
const options = { [namespace]: { filename: 'CHANGELOG-
|
|
63
|
+
const options = { [namespace]: { filename: 'CHANGELOG-MISSING.md' } };
|
|
53
64
|
const plugin = factory(Plugin, { namespace, options });
|
|
54
|
-
await assert.rejects(
|
|
55
|
-
runTasks(plugin),
|
|
56
|
-
/Missing section for previous release \("1\.0\.0"\) in CHANGELOG-UNRELEASED\.md/
|
|
57
|
-
);
|
|
65
|
+
await assert.rejects(runTasks(plugin), /Missing section for previous release \("1\.0\.0"\) in CHANGELOG-MISSING\.md/);
|
|
58
66
|
});
|
|
59
67
|
|
|
60
68
|
test('should find very first changelog with disabled strict latest option', async t => {
|
|
@@ -71,17 +79,17 @@ test('should write changelog', async t => {
|
|
|
71
79
|
assert.equal(plugin.getChangelog(), '* Item A\n* Item B');
|
|
72
80
|
assert.match(
|
|
73
81
|
readFile('./CHANGELOG-FULL.md'),
|
|
74
|
-
|
|
82
|
+
/^# Changelog\n\n## \[1\.0\.1] - [0-9]{4}-[0-9]{2}-[0-9]{2}\n\n\* Item A\n\* Item B\n\n## \[1\.0\.0] - 2020-05-02\n\n\* Item C\n*\* Item D\n$/
|
|
75
83
|
);
|
|
76
84
|
});
|
|
77
85
|
|
|
78
|
-
test('should write changelog even with `strictLatest:
|
|
79
|
-
const options = { [namespace]: { filename: 'CHANGELOG-
|
|
86
|
+
test('should write changelog even with `strictLatest: false`', async t => {
|
|
87
|
+
const options = { [namespace]: { filename: 'CHANGELOG-NO-STRICT.md', strictLatest: false } };
|
|
80
88
|
const plugin = factory(Plugin, { namespace, options });
|
|
81
89
|
await runTasks(plugin);
|
|
82
90
|
assert.equal(plugin.getChangelog(), '* Item A\n* Item B');
|
|
83
91
|
assert.match(
|
|
84
|
-
readFile('./CHANGELOG-
|
|
92
|
+
readFile('./CHANGELOG-NO-STRICT.md'),
|
|
85
93
|
/## \[1\.0\.1] - [0-9]{4}-[0-9]{2}-[0-9]{2}\n\n\* Item A\n\* Item B\n\n## \[1\.0\.0] - 2020-05-02\n\n\* Item C\n*\* Item D/
|
|
86
94
|
);
|
|
87
95
|
});
|
|
@@ -90,14 +98,14 @@ test('should not write changelog in dry run', async t => {
|
|
|
90
98
|
const options = { 'dry-run': true, [namespace]: { filename: 'CHANGELOG-DRYRUN.md' } };
|
|
91
99
|
const plugin = factory(Plugin, { namespace, options });
|
|
92
100
|
await runTasks(plugin);
|
|
93
|
-
assert.equal(
|
|
101
|
+
assert.equal(readFile('./CHANGELOG-DRYRUN.md'), initialDryRunFileContents);
|
|
94
102
|
});
|
|
95
103
|
|
|
96
104
|
test('should not write changelog with keep unreleased option', async t => {
|
|
97
105
|
const options = { [namespace]: { filename: 'CHANGELOG-DRYRUN.md', keepUnreleased: true } };
|
|
98
106
|
const plugin = factory(Plugin, { namespace, options });
|
|
99
107
|
await runTasks(plugin);
|
|
100
|
-
assert.equal(
|
|
108
|
+
assert.equal(readFile('./CHANGELOG-DRYRUN.md'), initialDryRunFileContents);
|
|
101
109
|
});
|
|
102
110
|
|
|
103
111
|
test('should find changelog even if less new lines is used', async t => {
|
|
@@ -107,29 +115,29 @@ test('should find changelog even if less new lines is used', async t => {
|
|
|
107
115
|
assert.equal(plugin.getChangelog(), '* Item A\n* Item B');
|
|
108
116
|
});
|
|
109
117
|
|
|
110
|
-
test('should write changelog
|
|
118
|
+
test('should write changelog with different EOL', async t => {
|
|
111
119
|
const options = { [namespace]: { filename: 'CHANGELOG-EOL.md' } };
|
|
112
120
|
const plugin = factory(Plugin, { namespace, options });
|
|
113
121
|
await runTasks(plugin);
|
|
114
122
|
assert.equal(plugin.getChangelog(), '* Item A\r\n* Item B');
|
|
115
123
|
assert.match(
|
|
116
124
|
readFile('./CHANGELOG-EOL.md'),
|
|
117
|
-
/^## \[1\.0\.1] - [0-9]{4}-[0-9]{2}-[0-9]{2}\r\n\r\n\* Item A\r\n\* Item B\r\n\r\n## \[1\.0\.0] - 2020-05-02\r\n\r\n\* Item C\r\n*\* Item D/
|
|
125
|
+
/^## \[1\.0\.1] - [0-9]{4}-[0-9]{2}-[0-9]{2}\r\n\r\n\* Item A\r\n\* Item B\r\n\r\n## \[1\.0\.0] - 2020-05-02\r\n\r\n\* Item C\r\n*\* Item D\r\n/
|
|
118
126
|
);
|
|
119
127
|
});
|
|
120
128
|
|
|
121
129
|
test('should write changelog and add unreleased section', async t => {
|
|
122
|
-
const options = { [namespace]: { filename: 'CHANGELOG-
|
|
130
|
+
const options = { [namespace]: { filename: 'CHANGELOG-UNRELEASED.md', addUnreleased: true } };
|
|
123
131
|
const plugin = factory(Plugin, { namespace, options });
|
|
124
132
|
await runTasks(plugin);
|
|
125
133
|
assert.equal(plugin.getChangelog(), '* Item A\n* Item B');
|
|
126
134
|
assert.match(
|
|
127
|
-
readFile('./CHANGELOG-
|
|
135
|
+
readFile('./CHANGELOG-UNRELEASED.md'),
|
|
128
136
|
/^## \[Unreleased]\n\n## \[1\.0\.1] - [0-9]{4}-[0-9]{2}-[0-9]{2}\n\n\* Item A\n\* Item B\n\n## \[1\.0\.0] - 2020-05-02\n\n\* Item C\n*\* Item D/
|
|
129
137
|
);
|
|
130
138
|
});
|
|
131
139
|
|
|
132
|
-
test('should add
|
|
140
|
+
test('should add links to the end of the file', async t => {
|
|
133
141
|
const options = { [namespace]: { filename: 'CHANGELOG-VERSION_URL.md', addVersionUrl: true } };
|
|
134
142
|
const plugin = factory(Plugin, { namespace, options });
|
|
135
143
|
plugin.config.setContext({
|
|
@@ -143,7 +151,25 @@ test('should add unreleased section and links to the end of the file', async t =
|
|
|
143
151
|
assert.equal(plugin.getChangelog(), '* Item A\n* Item B');
|
|
144
152
|
assert.match(
|
|
145
153
|
readFile('./CHANGELOG-VERSION_URL.md'),
|
|
146
|
-
/^## \[1\.0\.1] - [0-9]{4}-[0-9]{2}-[0-9]{2}\n\n\* Item A\n\* Item B\n\n## \[1\.0\.0] - 2020-05-02\n\n\* Item C\n*\* Item D\n\n\[Unreleased]: https:\/\/github\.com\/release-it\/release-it\/compare\/1\.0\.1\.\.\.HEAD\n\[1\.0\.1]: https:\/\/github\.com\/release-it\/release-it\/compare\/1\.0\.0\.\.\.1\.0\.1\n\[1\.0\.0]: https:\/\/github\.com\/release-it\/release-it\/compare\/0\.0\.0\.\.\.1\.0\.0
|
|
154
|
+
/^## \[1\.0\.1] - [0-9]{4}-[0-9]{2}-[0-9]{2}\n\n\* Item A\n\* Item B\n\n## \[1\.0\.0] - 2020-05-02\n\n\* Item C\n*\* Item D\n\n\[Unreleased]: https:\/\/github\.com\/release-it\/release-it\/compare\/1\.0\.1\.\.\.HEAD\n\[1\.0\.1]: https:\/\/github\.com\/release-it\/release-it\/compare\/1\.0\.0\.\.\.1\.0\.1\n\[1\.0\.0]: https:\/\/github\.com\/release-it\/release-it\/compare\/0\.0\.0\.\.\.1\.0\.0\n$/
|
|
155
|
+
);
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
test('should add links with custom head to the end of the file', async t => {
|
|
159
|
+
const options = { [namespace]: { filename: 'CHANGELOG-VERSION_URL_HEAD.md', addVersionUrl: true, head: 'main' } };
|
|
160
|
+
const plugin = factory(Plugin, { namespace, options });
|
|
161
|
+
plugin.config.setContext({
|
|
162
|
+
latestTag: '1.0.0',
|
|
163
|
+
repo: {
|
|
164
|
+
host: 'github.com',
|
|
165
|
+
repository: 'release-it/release-it'
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
await runTasks(plugin);
|
|
169
|
+
assert.equal(plugin.getChangelog(), '* Item A\n* Item B');
|
|
170
|
+
assert.match(
|
|
171
|
+
readFile('./CHANGELOG-VERSION_URL_HEAD.md'),
|
|
172
|
+
/^## \[1\.0\.1] - [0-9]{4}-[0-9]{2}-[0-9]{2}\n\n\* Item A\n\* Item B\n\n## \[1\.0\.0] - 2020-05-02\n\n\* Item C\n*\* Item D\n\n\[Unreleased]: https:\/\/github\.com\/release-it\/release-it\/compare\/1\.0\.1\.\.\.main\n\[1\.0\.1]: https:\/\/github\.com\/release-it\/release-it\/compare\/1\.0\.0\.\.\.1\.0\.1\n\[1\.0\.0]: https:\/\/github\.com\/release-it\/release-it\/compare\/0\.0\.0\.\.\.1\.0\.0\n$/
|
|
147
173
|
);
|
|
148
174
|
});
|
|
149
175
|
|
|
@@ -163,7 +189,7 @@ test('should add unreleased section and links to the end of the file', async t =
|
|
|
163
189
|
assert.equal(plugin.getChangelog(), '* Item A\n* Item B');
|
|
164
190
|
assert.match(
|
|
165
191
|
readFile('./CHANGELOG-VERSION_URL_UNRELEASED.md'),
|
|
166
|
-
/^## \[Unreleased]\n\n## \[1\.0\.1] - [0-9]{4}-[0-9]{2}-[0-9]{2}\n\n\* Item A\n\* Item B\n\n## \[1\.0\.0] - 2020-05-02\n\n\* Item C\n*\* Item D\n\n\[Unreleased]: https:\/\/github\.com\/user\/project\/compare\/1\.0\.1\.\.\.HEAD\n\[1\.0\.1]: https:\/\/github\.com\/user\/project\/compare\/1\.0\.0\.\.\.1\.0\.1\n\[1\.0\.0]: https:\/\/github\.com\/user\/project\/compare\/0\.0\.0\.\.\.1\.0\.0/
|
|
192
|
+
/^## \[Unreleased]\n\n## \[1\.0\.1] - [0-9]{4}-[0-9]{2}-[0-9]{2}\n\n\* Item A\n\* Item B\n\n## \[1\.0\.0] - 2020-05-02\n\n\* Item C\n*\* Item D\n\n\[Unreleased]: https:\/\/github\.com\/user\/project\/compare\/1\.0\.1\.\.\.HEAD\n\[1\.0\.1]: https:\/\/github\.com\/user\/project\/compare\/1\.0\.0\.\.\.1\.0\.1\n\[1\.0\.0]: https:\/\/github\.com\/user\/project\/compare\/0\.0\.0\.\.\.1\.0\.0\n/
|
|
167
193
|
);
|
|
168
194
|
});
|
|
169
195
|
|
|
@@ -184,6 +210,6 @@ test('should add link to the end of a new changelog', async t => {
|
|
|
184
210
|
assert.equal(plugin.getChangelog(), '* Item A\n* Item B');
|
|
185
211
|
assert.match(
|
|
186
212
|
readFile('./CHANGELOG-VERSION_URL_NEW.md'),
|
|
187
|
-
/^## \[1\.0\.0] - [0-9]{4}-[0-9]{2}-[0-9]{2}\n\n\* Item A\n\* Item B\n\n\[Unreleased]: https:\/\/github\.com\/user\/project\/compare\/1\.0\.0\.\.\.HEAD\n\[1.0.0]: https:\/\/github\.com\/user\/project\/compare\/0\.0\.0\.\.\.1\.0\.0
|
|
213
|
+
/^## \[1\.0\.0] - [0-9]{4}-[0-9]{2}-[0-9]{2}\n\n\* Item A\n\* Item B\n\n\[Unreleased]: https:\/\/github\.com\/user\/project\/compare\/1\.0\.0\.\.\.HEAD\n\[1.0.0]: https:\/\/github\.com\/user\/project\/compare\/0\.0\.0\.\.\.1\.0\.0\n$/
|
|
188
214
|
);
|
|
189
215
|
});
|