Skip to content

Commit e2d78f6

Browse files
committed
Remove pre-releases from release_notes
Initially the release notes were being generated from the current tagged release (n) and the n-1 release, irrespective of whether n-1 was a full release. This change causes `getWorkingReleases()` to ignore any previous releases where `PreRelease` is set to `true`. The processing beyond this determination will continue to consider all commits between the two identified points, resulting in a fuller set of changes for a full release where Pre-Releases have occured in between. Signed-off-by: Richard Gee <richard@technologee.co.uk>
1 parent 0ef9a3d commit e2d78f6

File tree

3 files changed

+79
-8
lines changed

3 files changed

+79
-8
lines changed

USER_GUIDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ This file enables Derek usage for `rgee0` and `alexellis`, it also turns on all
5151

5252
### Feature: `release_notes`
5353

54-
Derek will collate closed PRs since the last release and then put together a summary and set it for your release text body.
54+
Derek will collate closed PRs since the previous full release and then put together a summary and set it for your release text body.
5555

5656
Example from [openfaas/faas-cli](https://github.com/openfaas/faas-cli/releases/tag/0.9.5):
5757

handler/release_handler.go

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -172,19 +172,29 @@ func buildClosedPRs(client *github.Client, workingReleases WorkingRelease, owner
172172
func getWorkingReleases(releases []*github.RepositoryRelease, owner, repo, tag string) WorkingRelease {
173173
rel := WorkingRelease{}
174174

175-
var count int
176-
var r *github.RepositoryRelease
175+
//var position int
176+
//var r *github.RepositoryRelease
177177

178-
for count, r = range releases {
178+
for position, r := range releases {
179179
if r.GetTagName() == tag {
180180
rel.CurrentDate = r.CreatedAt.Time
181181
rel.CurrentTag = tag
182182
rel.CurrentRelease = r
183183

184-
if count+1 < len(releases) {
185-
prior := releases[count+1]
186-
rel.PreviousDate = prior.CreatedAt.Time
187-
rel.PreviousTag = prior.GetTagName()
184+
prevRel := position + 1
185+
186+
for prevRel < len(releases) {
187+
188+
prior := releases[prevRel]
189+
190+
if !*prior.Prerelease {
191+
rel.PreviousDate = prior.CreatedAt.Time
192+
rel.PreviousTag = prior.GetTagName()
193+
break
194+
}
195+
196+
prevRel++
197+
188198
}
189199

190200
break

handler/release_handler_test.go

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,19 +77,22 @@ func Test_getWorkingReleases_TwoReleases(t *testing.T) {
7777
repo := "derek"
7878
tag := "0.2.0"
7979
lastTag := "0.1.0"
80+
prerelease := false
8081

8182
releases := []*github.RepositoryRelease{
8283
&github.RepositoryRelease{
8384
TagName: &tag,
8485
CreatedAt: &github.Timestamp{
8586
Time: time.Now(),
8687
},
88+
Prerelease: &prerelease,
8789
},
8890
&github.RepositoryRelease{
8991
TagName: &lastTag,
9092
CreatedAt: &github.Timestamp{
9193
Time: time.Now().Add(time.Hour * -1),
9294
},
95+
Prerelease: &prerelease,
9396
},
9497
}
9598
workingReleases := getWorkingReleases(releases, owner, repo, tag)
@@ -120,13 +123,15 @@ func Test_getWorkingReleases_OneRelease(t *testing.T) {
120123
owner := "alexellis"
121124
repo := "derek"
122125
tag := "0.2.0"
126+
prerelease := false
123127

124128
releases := []*github.RepositoryRelease{
125129
&github.RepositoryRelease{
126130
TagName: &tag,
127131
CreatedAt: &github.Timestamp{
128132
Time: time.Now(),
129133
},
134+
Prerelease: &prerelease,
130135
},
131136
}
132137
workingReleases := getWorkingReleases(releases, owner, repo, tag)
@@ -203,3 +208,59 @@ func Test_includeCommit_WithinCurrentRange(t *testing.T) {
203208
t.Fail()
204209
}
205210
}
211+
212+
func Test_getWorkingReleases_ThreeReleasesOnePreRelease(t *testing.T) {
213+
owner := "alexellis"
214+
repo := "derek"
215+
tag := "0.2.0"
216+
midTag := "0.1.5"
217+
midPreRelease := true
218+
lastTag := "0.1.0"
219+
preRelease := false
220+
221+
releases := []*github.RepositoryRelease{
222+
&github.RepositoryRelease{
223+
TagName: &tag,
224+
CreatedAt: &github.Timestamp{
225+
Time: time.Now(),
226+
},
227+
Prerelease: &preRelease,
228+
},
229+
&github.RepositoryRelease{
230+
TagName: &midTag,
231+
CreatedAt: &github.Timestamp{
232+
Time: time.Now().Add(time.Hour * -1),
233+
},
234+
Prerelease: &midPreRelease,
235+
},
236+
&github.RepositoryRelease{
237+
TagName: &lastTag,
238+
CreatedAt: &github.Timestamp{
239+
Time: time.Now().Add(time.Hour * -2),
240+
},
241+
Prerelease: &preRelease,
242+
},
243+
}
244+
workingReleases := getWorkingReleases(releases, owner, repo, tag)
245+
246+
gotCurrentDate := workingReleases.CurrentDate
247+
wantCurrentDate := releases[0].GetCreatedAt().Time
248+
249+
if gotCurrentDate != wantCurrentDate {
250+
t.Errorf("current date, got: %s, want: %s", gotCurrentDate, wantCurrentDate)
251+
}
252+
253+
gotPreviousDate := workingReleases.PreviousDate
254+
wantPreviousDate := releases[2].GetCreatedAt().Time
255+
256+
if gotPreviousDate != wantPreviousDate {
257+
t.Errorf("previous date, got: %s, want: %s", gotPreviousDate, wantPreviousDate)
258+
}
259+
260+
gotPreviousTag := workingReleases.PreviousTag
261+
wantPreviousTag := *releases[2].TagName
262+
263+
if gotPreviousTag != wantPreviousTag {
264+
t.Errorf("previous tag, got: %s, want: %s", gotPreviousTag, wantPreviousTag)
265+
}
266+
}

0 commit comments

Comments
 (0)