Skip to content

Commit 0a4a4e2

Browse files
committed
Added “Under udvikling” as allowed “Unreleased” header
1 parent 3751b1e commit 0a4a4e2

File tree

4 files changed

+86
-6
lines changed

4 files changed

+86
-6
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
* [PR-15](https://github.com/itk-dev/gh-itkdev/pull/15)
11+
Added “Under udvikling” as allowed “Unreleased” header
12+
1013
## [v1.0.0] - 2024-11-12
1114

1215
* [PR-11](https://github.com/itk-dev/gh-itkdev/pull/11)

changelog/fuckingchangelog.go

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package changelog
33
import (
44
"bufio"
55
"fmt"
6+
"iter"
67
"log"
78
"os"
89
"regexp"
@@ -11,8 +12,25 @@ import (
1112
"text/template"
1213
)
1314

15+
// https://stackoverflow.com/a/71624929
16+
func Map[T, U any](seq iter.Seq[T], f func(T) U) iter.Seq[U] {
17+
return func(yield func(U) bool) {
18+
for a := range seq {
19+
if !yield(f(a)) {
20+
return
21+
}
22+
}
23+
}
24+
}
25+
1426
func addPullRequest(changelog string, pr pullRequest, itemTemplate string) (string, error) {
15-
headerPattern := regexp.MustCompile(`(?i)^\#+ +\[unreleased\]`)
27+
unreleasedHeaders := []string{"Unreleased", "Under udvikling"}
28+
var quotedHeaders []string
29+
for header := range Map(slices.Values(unreleasedHeaders), regexp.QuoteMeta) {
30+
quotedHeaders = append(quotedHeaders, header)
31+
}
32+
headerPattern := regexp.MustCompile(fmt.Sprintf(`(?i)^\#+ +\[(%s)\]`, strings.Join(quotedHeaders, "|")))
33+
1634
unreleasedHeaderIndex := -1
1735
var lines []string
1836
scanner := bufio.NewScanner(strings.NewReader(changelog))
@@ -28,7 +46,7 @@ func addPullRequest(changelog string, pr pullRequest, itemTemplate string) (stri
2846
}
2947

3048
if unreleasedHeaderIndex < 0 {
31-
return "", fmt.Errorf("cannot find \"Unreleased\" header")
49+
return "", fmt.Errorf("cannot find %s header", strings.Join(unreleasedHeaders, "/"))
3250
}
3351

3452
// Make sure that we have a blank line after the header

changelog/fuckingchangelog_test.go

Lines changed: 62 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package changelog
22

33
import (
4+
"fmt"
45
"testing"
56

67
"github.com/stretchr/testify/assert"
@@ -14,6 +15,7 @@ func TestFuckingChangelog(t *testing.T) {
1415
pullRequest pullRequest
1516
itemTemplate string
1617
expected string
18+
expectedErr error
1719
}{
1820
{
1921
`## [Unreleased]
@@ -29,6 +31,7 @@ func TestFuckingChangelog(t *testing.T) {
2931
* [PR-87](https://example.com/pr/87)
3032
Test
3133
`,
34+
nil,
3235
},
3336

3437
{
@@ -49,6 +52,7 @@ func TestFuckingChangelog(t *testing.T) {
4952
5053
[Unreleased]: https://example.com/
5154
`,
55+
nil,
5256
},
5357

5458
{
@@ -70,6 +74,7 @@ func TestFuckingChangelog(t *testing.T) {
7074
* [PR-42](https://example.com/pr/42)
7175
Added the meaning
7276
`,
77+
nil,
7378
},
7479

7580
{
@@ -88,6 +93,7 @@ func TestFuckingChangelog(t *testing.T) {
8893
- [#87](https://example.com/pr/87): Test
8994
- [#42](https://example.com/pr/42): Added the meaning
9095
`,
96+
nil,
9197
},
9298

9399
{
@@ -111,12 +117,65 @@ func TestFuckingChangelog(t *testing.T) {
111117
112118
- [#42](https://example.com/pr/42): Added the meaning
113119
`,
120+
nil,
121+
},
122+
123+
{
124+
`## [Under udvikling]
125+
`,
126+
pullRequest{
127+
Number: 87,
128+
Title: "Test",
129+
Url: "https://example.com/pr/87",
130+
},
131+
defaultItemTemplate,
132+
`## [Under udvikling]
133+
134+
* [PR-87](https://example.com/pr/87)
135+
Test
136+
`,
137+
nil,
138+
},
139+
140+
{
141+
`## [under udviklinG]
142+
`,
143+
pullRequest{
144+
Number: 87,
145+
Title: "Test",
146+
Url: "https://example.com/pr/87",
147+
},
148+
defaultItemTemplate,
149+
`## [under udviklinG]
150+
151+
* [PR-87](https://example.com/pr/87)
152+
Test
153+
`,
154+
nil,
155+
},
156+
157+
{
158+
`## [We're still working on it]
159+
`,
160+
pullRequest{
161+
Number: 87,
162+
Title: "Test",
163+
Url: "https://example.com/pr/87",
164+
},
165+
defaultItemTemplate,
166+
"",
167+
fmt.Errorf("cannot find Unreleased/Under udvikling header"),
114168
},
115169
}
116170

117171
for _, testCase := range testCases {
118-
actual, _ := addPullRequest(testCase.changelog, testCase.pullRequest, testCase.itemTemplate)
119-
120-
assert.Equal(t, testCase.expected, actual)
172+
actual, err := addPullRequest(testCase.changelog, testCase.pullRequest, testCase.itemTemplate)
173+
if err != nil {
174+
if assert.NotNil(t, testCase.expectedErr) {
175+
assert.Equal(t, testCase.expectedErr.Error(), err.Error())
176+
}
177+
} else {
178+
assert.Equal(t, testCase.expected, actual)
179+
}
121180
}
122181
}

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module github.com/itk-dev/gh-itkdev
22

3-
go 1.22
3+
go 1.23
44

55
require (
66
github.com/cli/go-gh v1.2.1

0 commit comments

Comments
 (0)