Skip to content

Commit 87bfe02

Browse files
authored
Backport to v1.12 for go-gitea#12341 - Release date fix (go-gitea#12351)
* Backport for Issue go-gitea#12341 PR go-gitea#12343 - Release date fix * Adds sleep for comparing times * Fixes imports * Fixes tests
1 parent 9bac656 commit 87bfe02

File tree

2 files changed

+152
-1
lines changed

2 files changed

+152
-1
lines changed

services/release/release.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,14 @@ func createTag(gitRepo *git.Repository, rel *models.Release) error {
4646
rel.Publisher, rel.Repo, git.TagPrefix+rel.TagName,
4747
git.EmptySHA, commit.ID.String(), repository.NewPushCommits())
4848
notification.NotifyCreateRef(rel.Publisher, rel.Repo, "tag", git.TagPrefix+rel.TagName)
49+
rel.CreatedUnix = timeutil.TimeStampNow()
4950
}
5051
commit, err := gitRepo.GetTagCommit(rel.TagName)
5152
if err != nil {
5253
return fmt.Errorf("GetTagCommit: %v", err)
5354
}
5455

5556
rel.Sha1 = commit.ID.String()
56-
rel.CreatedUnix = timeutil.TimeStampNow()
5757
rel.NumCommits, err = commit.CommitsCount()
5858
if err != nil {
5959
return fmt.Errorf("CommitsCount: %v", err)

services/release/release_test.go

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ package release
77
import (
88
"path/filepath"
99
"testing"
10+
"time"
1011

1112
"code.gitea.io/gitea/models"
1213
"code.gitea.io/gitea/modules/git"
@@ -101,3 +102,153 @@ func TestRelease_Create(t *testing.T) {
101102
IsTag: true,
102103
}, nil))
103104
}
105+
106+
func TestRelease_Update(t *testing.T) {
107+
assert.NoError(t, models.PrepareTestDatabase())
108+
109+
user := models.AssertExistsAndLoadBean(t, &models.User{ID: 2}).(*models.User)
110+
repo := models.AssertExistsAndLoadBean(t, &models.Repository{ID: 1}).(*models.Repository)
111+
repoPath := models.RepoPath(user.Name, repo.Name)
112+
113+
gitRepo, err := git.OpenRepository(repoPath)
114+
assert.NoError(t, err)
115+
defer gitRepo.Close()
116+
117+
// Test a changed release
118+
assert.NoError(t, CreateRelease(gitRepo, &models.Release{
119+
RepoID: repo.ID,
120+
PublisherID: user.ID,
121+
TagName: "v1.1.1",
122+
Target: "master",
123+
Title: "v1.1.1 is released",
124+
Note: "v1.1.1 is released",
125+
IsDraft: false,
126+
IsPrerelease: false,
127+
IsTag: false,
128+
}, nil))
129+
release, err := models.GetRelease(repo.ID, "v1.1.1")
130+
assert.NoError(t, err)
131+
releaseCreatedUnix := release.CreatedUnix
132+
time.Sleep(2 * time.Second) // sleep 2 seconds to ensure a different timestamp
133+
release.Note = "Changed note"
134+
assert.NoError(t, UpdateRelease(user, gitRepo, release, nil))
135+
release, err = models.GetReleaseByID(release.ID)
136+
assert.NoError(t, err)
137+
assert.Equal(t, int64(releaseCreatedUnix), int64(release.CreatedUnix))
138+
139+
// Test a changed draft
140+
assert.NoError(t, CreateRelease(gitRepo, &models.Release{
141+
RepoID: repo.ID,
142+
PublisherID: user.ID,
143+
TagName: "v1.2.1",
144+
Target: "65f1bf2",
145+
Title: "v1.2.1 is draft",
146+
Note: "v1.2.1 is draft",
147+
IsDraft: true,
148+
IsPrerelease: false,
149+
IsTag: false,
150+
}, nil))
151+
release, err = models.GetRelease(repo.ID, "v1.2.1")
152+
assert.NoError(t, err)
153+
releaseCreatedUnix = release.CreatedUnix
154+
time.Sleep(2 * time.Second) // sleep 2 seconds to ensure a different timestamp
155+
release.Title = "Changed title"
156+
assert.NoError(t, UpdateRelease(user, gitRepo, release, nil))
157+
release, err = models.GetReleaseByID(release.ID)
158+
assert.NoError(t, err)
159+
assert.Less(t, int64(releaseCreatedUnix), int64(release.CreatedUnix))
160+
161+
// Test a changed pre-release
162+
assert.NoError(t, CreateRelease(gitRepo, &models.Release{
163+
RepoID: repo.ID,
164+
PublisherID: user.ID,
165+
TagName: "v1.3.1",
166+
Target: "65f1bf2",
167+
Title: "v1.3.1 is pre-released",
168+
Note: "v1.3.1 is pre-released",
169+
IsDraft: false,
170+
IsPrerelease: true,
171+
IsTag: false,
172+
}, nil))
173+
release, err = models.GetRelease(repo.ID, "v1.3.1")
174+
assert.NoError(t, err)
175+
releaseCreatedUnix = release.CreatedUnix
176+
time.Sleep(2 * time.Second) // sleep 2 seconds to ensure a different timestamp
177+
release.Title = "Changed title"
178+
release.Note = "Changed note"
179+
assert.NoError(t, UpdateRelease(user, gitRepo, release, nil))
180+
release, err = models.GetReleaseByID(release.ID)
181+
assert.NoError(t, err)
182+
assert.Equal(t, int64(releaseCreatedUnix), int64(release.CreatedUnix))
183+
}
184+
185+
func TestRelease_createTag(t *testing.T) {
186+
assert.NoError(t, models.PrepareTestDatabase())
187+
188+
user := models.AssertExistsAndLoadBean(t, &models.User{ID: 2}).(*models.User)
189+
repo := models.AssertExistsAndLoadBean(t, &models.Repository{ID: 1}).(*models.Repository)
190+
repoPath := models.RepoPath(user.Name, repo.Name)
191+
192+
gitRepo, err := git.OpenRepository(repoPath)
193+
assert.NoError(t, err)
194+
defer gitRepo.Close()
195+
196+
// Test a changed release
197+
release := &models.Release{
198+
RepoID: repo.ID,
199+
PublisherID: user.ID,
200+
TagName: "v2.1.1",
201+
Target: "master",
202+
Title: "v2.1.1 is released",
203+
Note: "v2.1.1 is released",
204+
IsDraft: false,
205+
IsPrerelease: false,
206+
IsTag: false,
207+
}
208+
assert.NoError(t, createTag(gitRepo, release))
209+
assert.NotEmpty(t, release.CreatedUnix)
210+
releaseCreatedUnix := release.CreatedUnix
211+
time.Sleep(2 * time.Second) // sleep 2 seconds to ensure a different timestamp
212+
release.Note = "Changed note"
213+
assert.NoError(t, createTag(gitRepo, release))
214+
assert.Equal(t, int64(releaseCreatedUnix), int64(release.CreatedUnix))
215+
216+
// Test a changed draft
217+
release = &models.Release{
218+
RepoID: repo.ID,
219+
PublisherID: user.ID,
220+
TagName: "v2.2.1",
221+
Target: "65f1bf2",
222+
Title: "v2.2.1 is draft",
223+
Note: "v2.2.1 is draft",
224+
IsDraft: true,
225+
IsPrerelease: false,
226+
IsTag: false,
227+
}
228+
assert.NoError(t, createTag(gitRepo, release))
229+
releaseCreatedUnix = release.CreatedUnix
230+
time.Sleep(2 * time.Second) // sleep 2 seconds to ensure a different timestamp
231+
release.Title = "Changed title"
232+
assert.NoError(t, createTag(gitRepo, release))
233+
assert.Less(t, int64(releaseCreatedUnix), int64(release.CreatedUnix))
234+
235+
// Test a changed pre-release
236+
release = &models.Release{
237+
RepoID: repo.ID,
238+
PublisherID: user.ID,
239+
TagName: "v2.3.1",
240+
Target: "65f1bf2",
241+
Title: "v2.3.1 is pre-released",
242+
Note: "v2.3.1 is pre-released",
243+
IsDraft: false,
244+
IsPrerelease: true,
245+
IsTag: false,
246+
}
247+
assert.NoError(t, createTag(gitRepo, release))
248+
releaseCreatedUnix = release.CreatedUnix
249+
time.Sleep(2 * time.Second) // sleep 2 seconds to ensure a different timestamp
250+
release.Title = "Changed title"
251+
release.Note = "Changed note"
252+
assert.NoError(t, createTag(gitRepo, release))
253+
assert.Equal(t, int64(releaseCreatedUnix), int64(release.CreatedUnix))
254+
}

0 commit comments

Comments
 (0)