Skip to content

Commit 3d6235b

Browse files
authored
Merge pull request #7 from rimi-itk/hotfix/changelog-release
Fixed URL parsing
2 parents d90b785 + d64befd commit 3d6235b

File tree

3 files changed

+58
-26
lines changed

3 files changed

+58
-26
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-7](https://github.com/rimi-itk/gh-itkdev/pull/7)
11+
Fixed URL parsing
12+
1013
## [v0.0.1] - 2024-04-03
1114

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

changelog/release.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ func createReleaseBranch(release string, base string) (string, error) {
2727
func updateReleaseChangelog(changelog string, release string) (string, error) {
2828
headerPattern := regexp.MustCompile(`(?i)^\#+ +\[unreleased\]`)
2929
unreleasedHeaderIndex := -1
30-
linkUnreleasedPattern := regexp.MustCompile(`(?i)^\[unreleased\]: (.+)`)
30+
// Match a URL on the form scheme://domain/user/repo
31+
linkUnreleasedPattern := regexp.MustCompile(`(?i)^\[unreleased\]: (?P<url>[a-z]+?://[^/]+/(?P<user>[^/]+)/(?P<repo>[^/]+))`)
3132
linkUnreleasedIndex := -1
3233

3334
var lines []string
@@ -62,7 +63,9 @@ func updateReleaseChangelog(changelog string, release string) (string, error) {
6263
if err != nil {
6364
return "", fmt.Errorf("invalid url: %s", match[1])
6465
}
65-
url.Path = fmt.Sprintf("compare/%s...HEAD", release)
66+
67+
path := url.Path
68+
url.Path = fmt.Sprintf("%s/compare/%s...HEAD", path, release)
6669
unreleasedLink := fmt.Sprintf("[Unreleased]: %s", url)
6770

6871
if insertIndex < len(lines) {
@@ -75,9 +78,9 @@ func updateReleaseChangelog(changelog string, release string) (string, error) {
7578
} else {
7679
log.Fatalf("cannot find previous version from %q", line)
7780
}
78-
url.Path = fmt.Sprintf("compare/%s...%s", previousRelease, release)
81+
url.Path = fmt.Sprintf("%s/compare/%s...%s", path, previousRelease, release)
7982
} else {
80-
url.Path = fmt.Sprintf("releases/tag/%s", release)
83+
url.Path = fmt.Sprintf("%s/releases/tag/%s", path, release)
8184
}
8285

8386
releaseLink := fmt.Sprintf("[%s]: %s", release, url)

changelog/release_test.go

Lines changed: 48 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,86 +13,112 @@ func TestRelease(t *testing.T) {
1313
changelog string
1414
release string
1515
expected string
16+
errorText string
1617
}{
1718
{
1819
`## [Unreleased]
1920
20-
[Unreleased]: https://example.com/
21+
[Unreleased]: https://git.example.com
2122
`,
2223
"v0.0.0",
2324
`## [Unreleased]
2425
2526
## [v0.0.0] - %TODAY%
2627
27-
[Unreleased]: https://example.com/compare/v0.0.0...HEAD
28-
[v0.0.0]: https://example.com/releases/tag/v0.0.0
28+
[Unreleased]: https://git.example.com/compare/v0.0.0...HEAD
29+
[v0.0.0]: https://git.example.com/releases/tag/v0.0.0
2930
`,
31+
"cannot find \"Unreleased\" link",
3032
},
3133

3234
{
3335
`## [Unreleased]
3436
35-
* [PR-42](https://example.com/pr/42)
37+
[Unreleased]: https://git.example.com/user/repo/
38+
`,
39+
"v0.0.0",
40+
`## [Unreleased]
41+
42+
## [v0.0.0] - %TODAY%
43+
44+
[Unreleased]: https://git.example.com/user/repo/compare/v0.0.0...HEAD
45+
[v0.0.0]: https://git.example.com/user/repo/releases/tag/v0.0.0
46+
`,
47+
"",
48+
},
49+
50+
{
51+
`## [Unreleased]
52+
53+
* [PR-42](https://git.example.com/user/repo/pr/42)
3654
Added the meaning
3755
3856
## [v0.0.0] - 2001-01-01
3957
40-
[Unreleased]: https://example.com/compare/v0.0.0...HEAD
41-
[v0.0.0]: https://example.com/releases/tag/v0.0.0
58+
[Unreleased]: https://git.example.com/user/repo/compare/v0.0.0...HEAD
59+
[v0.0.0]: https://git.example.com/user/repo/releases/tag/v0.0.0
4260
`,
4361
"v0.1.0",
4462
`## [Unreleased]
4563
4664
## [v0.1.0] - %TODAY%
4765
48-
* [PR-42](https://example.com/pr/42)
66+
* [PR-42](https://git.example.com/user/repo/pr/42)
4967
Added the meaning
5068
5169
## [v0.0.0] - 2001-01-01
5270
53-
[Unreleased]: https://example.com/compare/v0.1.0...HEAD
54-
[v0.1.0]: https://example.com/compare/v0.0.0...v0.1.0
55-
[v0.0.0]: https://example.com/releases/tag/v0.0.0
71+
[Unreleased]: https://git.example.com/user/repo/compare/v0.1.0...HEAD
72+
[v0.1.0]: https://git.example.com/user/repo/compare/v0.0.0...v0.1.0
73+
[v0.0.0]: https://git.example.com/user/repo/releases/tag/v0.0.0
5674
`,
75+
"",
5776
},
5877

5978
{
6079
`## [Unreleased]
6180
62-
* [PR-42](https://example.com/pr/42)
81+
* [PR-42](https://git.example.com/user/repo/pr/42)
6382
Added the meaning
6483
6584
## [v0.1.0] - 2002-01-01
6685
6786
## [v0.0.0] - 2001-01-01
6887
69-
[Unreleased]: https://example.com/compare/v0.1.0...HEAD
70-
[v0.1.0]: https://example.com/compare/v0.0.0...v0.1.0
71-
[v0.0.0]: https://example.com/releases/tag/v0.0.0
88+
[Unreleased]: https://git.example.com/user/repo/compare/v0.1.0...HEAD
89+
[v0.1.0]: https://git.example.com/user/repo/compare/v0.0.0...v0.1.0
90+
[v0.0.0]: https://git.example.com/user/repo/releases/tag/v0.0.0
7291
`,
7392
"v0.1.1",
7493
`## [Unreleased]
7594
7695
## [v0.1.1] - %TODAY%
7796
78-
* [PR-42](https://example.com/pr/42)
97+
* [PR-42](https://git.example.com/user/repo/pr/42)
7998
Added the meaning
8099
81100
## [v0.1.0] - 2002-01-01
82101
83102
## [v0.0.0] - 2001-01-01
84103
85-
[Unreleased]: https://example.com/compare/v0.1.1...HEAD
86-
[v0.1.1]: https://example.com/compare/v0.1.0...v0.1.1
87-
[v0.1.0]: https://example.com/compare/v0.0.0...v0.1.0
88-
[v0.0.0]: https://example.com/releases/tag/v0.0.0
104+
[Unreleased]: https://git.example.com/user/repo/compare/v0.1.1...HEAD
105+
[v0.1.1]: https://git.example.com/user/repo/compare/v0.1.0...v0.1.1
106+
[v0.1.0]: https://git.example.com/user/repo/compare/v0.0.0...v0.1.0
107+
[v0.0.0]: https://git.example.com/user/repo/releases/tag/v0.0.0
89108
`,
109+
"",
90110
},
91111
}
92112

93113
for _, testCase := range testCases {
94-
actual, _ := updateReleaseChangelog(testCase.changelog, testCase.release)
95-
96-
assert.Equal(t, strings.ReplaceAll(testCase.expected, "%TODAY%", time.Now().Format("2006-01-02")), actual)
114+
actual, err := updateReleaseChangelog(testCase.changelog, testCase.release)
115+
116+
if testCase.errorText != "" {
117+
assert.NotNil(t, err)
118+
assert.EqualError(t, err, testCase.errorText)
119+
} else {
120+
assert.Nil(t, err)
121+
assert.Equal(t, strings.ReplaceAll(testCase.expected, "%TODAY%", time.Now().Format("2006-01-02")), actual)
122+
}
97123
}
98124
}

0 commit comments

Comments
 (0)