@@ -7,6 +7,7 @@ package release
7
7
import (
8
8
"path/filepath"
9
9
"testing"
10
+ "time"
10
11
11
12
"code.gitea.io/gitea/models"
12
13
"code.gitea.io/gitea/modules/git"
@@ -101,3 +102,153 @@ func TestRelease_Create(t *testing.T) {
101
102
IsTag : true ,
102
103
}, nil ))
103
104
}
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