Skip to content

Commit 0e384c6

Browse files
ethantkoeniglafriks
authored andcommitted
Check ignored errors for issue and milestone count (#3213)
1 parent 9a0e2a8 commit 0e384c6

File tree

3 files changed

+57
-21
lines changed

3 files changed

+57
-21
lines changed

models/issue_milestone.go

Lines changed: 34 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -165,31 +165,33 @@ func UpdateMilestone(m *Milestone) error {
165165
return updateMilestone(x, m)
166166
}
167167

168-
func countRepoMilestones(e Engine, repoID int64) int64 {
169-
count, _ := e.
168+
func countRepoMilestones(e Engine, repoID int64) (int64, error) {
169+
return e.
170170
Where("repo_id=?", repoID).
171171
Count(new(Milestone))
172-
return count
173172
}
174173

175-
func countRepoClosedMilestones(e Engine, repoID int64) int64 {
176-
closed, _ := e.
174+
func countRepoClosedMilestones(e Engine, repoID int64) (int64, error) {
175+
return e.
177176
Where("repo_id=? AND is_closed=?", repoID, true).
178177
Count(new(Milestone))
179-
return closed
180178
}
181179

182180
// CountRepoClosedMilestones returns number of closed milestones in given repository.
183-
func CountRepoClosedMilestones(repoID int64) int64 {
181+
func CountRepoClosedMilestones(repoID int64) (int64, error) {
184182
return countRepoClosedMilestones(x, repoID)
185183
}
186184

187185
// MilestoneStats returns number of open and closed milestones of given repository.
188-
func MilestoneStats(repoID int64) (open int64, closed int64) {
189-
open, _ = x.
186+
func MilestoneStats(repoID int64) (open int64, closed int64, err error) {
187+
open, err = x.
190188
Where("repo_id=? AND is_closed=?", repoID, false).
191189
Count(new(Milestone))
192-
return open, CountRepoClosedMilestones(repoID)
190+
if err != nil {
191+
return 0, 0, nil
192+
}
193+
closed, err = CountRepoClosedMilestones(repoID)
194+
return open, closed, err
193195
}
194196

195197
// ChangeMilestoneStatus changes the milestone open/closed status.
@@ -210,8 +212,17 @@ func ChangeMilestoneStatus(m *Milestone, isClosed bool) (err error) {
210212
return err
211213
}
212214

213-
repo.NumMilestones = int(countRepoMilestones(sess, repo.ID))
214-
repo.NumClosedMilestones = int(countRepoClosedMilestones(sess, repo.ID))
215+
numMilestones, err := countRepoMilestones(sess, repo.ID)
216+
if err != nil {
217+
return err
218+
}
219+
numClosedMilestones, err := countRepoClosedMilestones(sess, repo.ID)
220+
if err != nil {
221+
return err
222+
}
223+
repo.NumMilestones = int(numMilestones)
224+
repo.NumClosedMilestones = int(numClosedMilestones)
225+
215226
if _, err = sess.ID(repo.ID).Cols("num_milestones, num_closed_milestones").Update(repo); err != nil {
216227
return err
217228
}
@@ -324,8 +335,17 @@ func DeleteMilestoneByRepoID(repoID, id int64) error {
324335
return err
325336
}
326337

327-
repo.NumMilestones = int(countRepoMilestones(sess, repo.ID))
328-
repo.NumClosedMilestones = int(countRepoClosedMilestones(sess, repo.ID))
338+
numMilestones, err := countRepoMilestones(sess, repo.ID)
339+
if err != nil {
340+
return err
341+
}
342+
numClosedMilestones, err := countRepoClosedMilestones(sess, repo.ID)
343+
if err != nil {
344+
return err
345+
}
346+
repo.NumMilestones = int(numMilestones)
347+
repo.NumClosedMilestones = int(numClosedMilestones)
348+
329349
if _, err = sess.ID(repo.ID).Cols("num_milestones, num_closed_milestones").Update(repo); err != nil {
330350
return err
331351
}

models/issue_milestone_test.go

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -146,39 +146,51 @@ func TestCountRepoMilestones(t *testing.T) {
146146
assert.NoError(t, PrepareTestDatabase())
147147
test := func(repoID int64) {
148148
repo := AssertExistsAndLoadBean(t, &Repository{ID: repoID}).(*Repository)
149-
assert.EqualValues(t, repo.NumMilestones, countRepoMilestones(x, repoID))
149+
count, err := countRepoMilestones(x, repoID)
150+
assert.NoError(t, err)
151+
assert.EqualValues(t, repo.NumMilestones, count)
150152
}
151153
test(1)
152154
test(2)
153155
test(3)
154-
assert.EqualValues(t, 0, countRepoMilestones(x, NonexistentID))
156+
157+
count, err := countRepoMilestones(x, NonexistentID)
158+
assert.NoError(t, err)
159+
assert.EqualValues(t, 0, count)
155160
}
156161

157162
func TestCountRepoClosedMilestones(t *testing.T) {
158163
assert.NoError(t, PrepareTestDatabase())
159164
test := func(repoID int64) {
160165
repo := AssertExistsAndLoadBean(t, &Repository{ID: repoID}).(*Repository)
161-
assert.EqualValues(t, repo.NumClosedMilestones, CountRepoClosedMilestones(repoID))
166+
count, err := CountRepoClosedMilestones(repoID)
167+
assert.NoError(t, err)
168+
assert.EqualValues(t, repo.NumClosedMilestones, count)
162169
}
163170
test(1)
164171
test(2)
165172
test(3)
166-
assert.EqualValues(t, 0, countRepoMilestones(x, NonexistentID))
173+
174+
count, err := CountRepoClosedMilestones(NonexistentID)
175+
assert.NoError(t, err)
176+
assert.EqualValues(t, 0, count)
167177
}
168178

169179
func TestMilestoneStats(t *testing.T) {
170180
assert.NoError(t, PrepareTestDatabase())
171181
test := func(repoID int64) {
172182
repo := AssertExistsAndLoadBean(t, &Repository{ID: repoID}).(*Repository)
173-
open, closed := MilestoneStats(repoID)
183+
open, closed, err := MilestoneStats(repoID)
184+
assert.NoError(t, err)
174185
assert.EqualValues(t, repo.NumMilestones-repo.NumClosedMilestones, open)
175186
assert.EqualValues(t, repo.NumClosedMilestones, closed)
176187
}
177188
test(1)
178189
test(2)
179190
test(3)
180191

181-
open, closed := MilestoneStats(NonexistentID)
192+
open, closed, err := MilestoneStats(NonexistentID)
193+
assert.NoError(t, err)
182194
assert.EqualValues(t, 0, open)
183195
assert.EqualValues(t, 0, closed)
184196
}

routers/repo/issue.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1067,7 +1067,11 @@ func Milestones(ctx *context.Context) {
10671067
ctx.Data["PageIsMilestones"] = true
10681068

10691069
isShowClosed := ctx.Query("state") == "closed"
1070-
openCount, closedCount := models.MilestoneStats(ctx.Repo.Repository.ID)
1070+
openCount, closedCount, err := models.MilestoneStats(ctx.Repo.Repository.ID)
1071+
if err != nil {
1072+
ctx.Handle(500, "MilestoneStats", err)
1073+
return
1074+
}
10711075
ctx.Data["OpenCount"] = openCount
10721076
ctx.Data["ClosedCount"] = closedCount
10731077

0 commit comments

Comments
 (0)