@release-it/keep-a-changelog 2.2.1 → 2.2.2
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/index.js +4 -4
- package/package.json +1 -1
- package/test.js +27 -28
package/index.js
CHANGED
|
@@ -87,7 +87,7 @@ class KeepAChangelog extends Plugin {
|
|
|
87
87
|
if (updatedChangelog.includes(latestVersionLink)) {
|
|
88
88
|
return updatedChangelog.replace(latestVersionLink, `${releaseLink}${this.EOL}${latestVersionLink}`);
|
|
89
89
|
} else {
|
|
90
|
-
return `${updatedChangelog}${this.EOL}${releaseLink}
|
|
90
|
+
return `${updatedChangelog}${this.EOL}${releaseLink}`;
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
|
|
@@ -97,15 +97,15 @@ class KeepAChangelog extends Plugin {
|
|
|
97
97
|
if (isDryRun || keepUnreleased) return;
|
|
98
98
|
const { version } = this.getContext();
|
|
99
99
|
const formattedDate = getFormattedDate();
|
|
100
|
-
const unreleasedTitle = addUnreleased ? this.unreleasedTitle : '';
|
|
101
|
-
const releaseTitle = `${unreleasedTitle}
|
|
100
|
+
const unreleasedTitle = addUnreleased ? this.unreleasedTitle + this.EOL + this.EOL : '';
|
|
101
|
+
const releaseTitle = `${unreleasedTitle}## [${version}] - ${formattedDate}`;
|
|
102
102
|
let changelog = this.changelogContent.replace(this.unreleasedTitle, releaseTitle);
|
|
103
103
|
|
|
104
104
|
if (addVersionUrl) {
|
|
105
105
|
changelog = this.addVersionUrls(changelog);
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
-
fs.writeFileSync(this.changelogPath, changelog + this.EOL);
|
|
108
|
+
fs.writeFileSync(this.changelogPath, changelog.trim() + this.EOL);
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
111
|
|
package/package.json
CHANGED
package/test.js
CHANGED
|
@@ -10,23 +10,25 @@ 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',
|
|
24
26
|
'./CHANGELOG-VERSION_URL_UNRELEASED.md':
|
|
25
|
-
'
|
|
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/user/project/compare/1.0.0..HEAD\n[1.0.0]: https://github.com/user/project/compare/0.0.0...1.0.0',
|
|
26
28
|
'./CHANGELOG-VERSION_URL_NEW.md': '## [Unreleased]\n\n* Item A\n* Item B'
|
|
27
29
|
});
|
|
28
30
|
|
|
29
|
-
const readFile = file => fs.readFileSync(file).toString()
|
|
31
|
+
const readFile = file => fs.readFileSync(file).toString();
|
|
30
32
|
|
|
31
33
|
const namespace = 'keep-a-changelog';
|
|
32
34
|
|
|
@@ -49,12 +51,9 @@ test('should throw for empty "unreleased" section', async t => {
|
|
|
49
51
|
});
|
|
50
52
|
|
|
51
53
|
test('should throw for missing section for previous release', async t => {
|
|
52
|
-
const options = { [namespace]: { filename: 'CHANGELOG-
|
|
54
|
+
const options = { [namespace]: { filename: 'CHANGELOG-MISSING.md' } };
|
|
53
55
|
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
|
-
);
|
|
56
|
+
await assert.rejects(runTasks(plugin), /Missing section for previous release \("1\.0\.0"\) in CHANGELOG-MISSING\.md/);
|
|
58
57
|
});
|
|
59
58
|
|
|
60
59
|
test('should find very first changelog with disabled strict latest option', async t => {
|
|
@@ -71,17 +70,17 @@ test('should write changelog', async t => {
|
|
|
71
70
|
assert.equal(plugin.getChangelog(), '* Item A\n* Item B');
|
|
72
71
|
assert.match(
|
|
73
72
|
readFile('./CHANGELOG-FULL.md'),
|
|
74
|
-
|
|
73
|
+
/^# 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
74
|
);
|
|
76
75
|
});
|
|
77
76
|
|
|
78
|
-
test('should write changelog even with `strictLatest:
|
|
79
|
-
const options = { [namespace]: { filename: 'CHANGELOG-
|
|
77
|
+
test('should write changelog even with `strictLatest: false`', async t => {
|
|
78
|
+
const options = { [namespace]: { filename: 'CHANGELOG-NO-STRICT.md', strictLatest: false } };
|
|
80
79
|
const plugin = factory(Plugin, { namespace, options });
|
|
81
80
|
await runTasks(plugin);
|
|
82
81
|
assert.equal(plugin.getChangelog(), '* Item A\n* Item B');
|
|
83
82
|
assert.match(
|
|
84
|
-
readFile('./CHANGELOG-
|
|
83
|
+
readFile('./CHANGELOG-NO-STRICT.md'),
|
|
85
84
|
/## \[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
85
|
);
|
|
87
86
|
});
|
|
@@ -90,14 +89,14 @@ test('should not write changelog in dry run', async t => {
|
|
|
90
89
|
const options = { 'dry-run': true, [namespace]: { filename: 'CHANGELOG-DRYRUN.md' } };
|
|
91
90
|
const plugin = factory(Plugin, { namespace, options });
|
|
92
91
|
await runTasks(plugin);
|
|
93
|
-
assert.equal(
|
|
92
|
+
assert.equal(readFile('./CHANGELOG-DRYRUN.md'), initialDryRunFileContents);
|
|
94
93
|
});
|
|
95
94
|
|
|
96
95
|
test('should not write changelog with keep unreleased option', async t => {
|
|
97
96
|
const options = { [namespace]: { filename: 'CHANGELOG-DRYRUN.md', keepUnreleased: true } };
|
|
98
97
|
const plugin = factory(Plugin, { namespace, options });
|
|
99
98
|
await runTasks(plugin);
|
|
100
|
-
assert.equal(
|
|
99
|
+
assert.equal(readFile('./CHANGELOG-DRYRUN.md'), initialDryRunFileContents);
|
|
101
100
|
});
|
|
102
101
|
|
|
103
102
|
test('should find changelog even if less new lines is used', async t => {
|
|
@@ -107,29 +106,29 @@ test('should find changelog even if less new lines is used', async t => {
|
|
|
107
106
|
assert.equal(plugin.getChangelog(), '* Item A\n* Item B');
|
|
108
107
|
});
|
|
109
108
|
|
|
110
|
-
test('should write changelog
|
|
109
|
+
test('should write changelog with different EOL', async t => {
|
|
111
110
|
const options = { [namespace]: { filename: 'CHANGELOG-EOL.md' } };
|
|
112
111
|
const plugin = factory(Plugin, { namespace, options });
|
|
113
112
|
await runTasks(plugin);
|
|
114
113
|
assert.equal(plugin.getChangelog(), '* Item A\r\n* Item B');
|
|
115
114
|
assert.match(
|
|
116
115
|
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/
|
|
116
|
+
/^## \[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
117
|
);
|
|
119
118
|
});
|
|
120
119
|
|
|
121
120
|
test('should write changelog and add unreleased section', async t => {
|
|
122
|
-
const options = { [namespace]: { filename: 'CHANGELOG-
|
|
121
|
+
const options = { [namespace]: { filename: 'CHANGELOG-UNRELEASED.md', addUnreleased: true } };
|
|
123
122
|
const plugin = factory(Plugin, { namespace, options });
|
|
124
123
|
await runTasks(plugin);
|
|
125
124
|
assert.equal(plugin.getChangelog(), '* Item A\n* Item B');
|
|
126
125
|
assert.match(
|
|
127
|
-
readFile('./CHANGELOG-
|
|
126
|
+
readFile('./CHANGELOG-UNRELEASED.md'),
|
|
128
127
|
/^## \[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
128
|
);
|
|
130
129
|
});
|
|
131
130
|
|
|
132
|
-
test('should add
|
|
131
|
+
test('should add links to the end of the file', async t => {
|
|
133
132
|
const options = { [namespace]: { filename: 'CHANGELOG-VERSION_URL.md', addVersionUrl: true } };
|
|
134
133
|
const plugin = factory(Plugin, { namespace, options });
|
|
135
134
|
plugin.config.setContext({
|
|
@@ -143,7 +142,7 @@ test('should add unreleased section and links to the end of the file', async t =
|
|
|
143
142
|
assert.equal(plugin.getChangelog(), '* Item A\n* Item B');
|
|
144
143
|
assert.match(
|
|
145
144
|
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
|
|
145
|
+
/^## \[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$/
|
|
147
146
|
);
|
|
148
147
|
});
|
|
149
148
|
|
|
@@ -163,7 +162,7 @@ test('should add unreleased section and links to the end of the file', async t =
|
|
|
163
162
|
assert.equal(plugin.getChangelog(), '* Item A\n* Item B');
|
|
164
163
|
assert.match(
|
|
165
164
|
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/
|
|
165
|
+
/^## \[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
166
|
);
|
|
168
167
|
});
|
|
169
168
|
|
|
@@ -184,6 +183,6 @@ test('should add link to the end of a new changelog', async t => {
|
|
|
184
183
|
assert.equal(plugin.getChangelog(), '* Item A\n* Item B');
|
|
185
184
|
assert.match(
|
|
186
185
|
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
|
|
186
|
+
/^## \[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
187
|
);
|
|
189
188
|
});
|