Skip to content

Commit

Permalink
progress: fix overall tracker disappears in corner case (#246)
Browse files Browse the repository at this point in the history
  • Loading branch information
iyear committed Nov 28, 2022
1 parent 43456ae commit 72834de
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 0 deletions.
9 changes: 9 additions & 0 deletions progress/progress.go
Expand Up @@ -77,6 +77,15 @@ func (p *Progress) AppendTracker(t *Tracker) {
}
p.overallTracker.start()
}

// corner case: overall tracker is done, but new tracker is being added. We should recover it.
// issue: #245
if p.overallTracker.IsDone() {
p.overallTracker.mutex.Lock()
p.overallTracker.done = false
p.overallTracker.mutex.Unlock()
}

p.trackersInQueueMutex.Lock()
p.trackersInQueue = append(p.trackersInQueue, t)
p.trackersInQueueMutex.Unlock()
Expand Down
8 changes: 8 additions & 0 deletions progress/progress_test.go
Expand Up @@ -238,3 +238,11 @@ func TestProgress_Style(t *testing.T) {
assert.NotNil(t, p.Style())
assert.Equal(t, StyleDefault.Name, p.Style().Name)
}

func TestProgress_OverallTrackerDisappearsCase(t *testing.T) {
p := &Progress{}
p.overallTracker = &Tracker{Total: 1, done: true}
p.AppendTracker(&Tracker{Total: 1})

assert.Equal(t, false, p.overallTracker.IsDone())
}

0 comments on commit 72834de

Please sign in to comment.