@@ -7,6 +7,7 @@ package release
77import (
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