Skip to content

Commit 94f2cb5

Browse files
committed
progress: Render never started trackers properly
1 parent 5a25275 commit 94f2cb5

File tree

2 files changed

+34
-4
lines changed

2 files changed

+34
-4
lines changed

progress/render.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -408,10 +408,12 @@ func (p *Progress) renderTrackerStatsSpeedInternal(out *strings.Builder, speed s
408408

409409
func (p *Progress) renderTrackerStatsTime(outStats *strings.Builder, t *Tracker, hint renderHint) {
410410
var td, tp time.Duration
411-
if t.IsDone() {
412-
td = t.timeStop.Sub(t.timeStart)
413-
} else if !t.timeStart.IsZero() {
414-
td = time.Since(t.timeStart)
411+
if !t.timeStart.IsZero() {
412+
if t.IsDone() {
413+
td = t.timeStop.Sub(t.timeStart)
414+
} else {
415+
td = time.Since(t.timeStart)
416+
}
415417
}
416418
if hint.isOverallTracker {
417419
tp = p.style.Options.TimeOverallPrecision

progress/render_test.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,34 @@ func TestProgress_generateTrackerStr_Indeterminate(t *testing.T) {
330330
}
331331
}
332332

333+
func TestProgress_RenderNeverStarted(t *testing.T) {
334+
renderOutput := strings.Builder{}
335+
336+
pw := generateWriter()
337+
pw.SetOutputWriter(&renderOutput)
338+
339+
tr := &Tracker{DeferStart: true}
340+
pw.AppendTracker(tr)
341+
342+
go pw.Render()
343+
time.Sleep(renderWaitTime)
344+
tr.MarkAsDone()
345+
pw.Stop()
346+
time.Sleep(time.Second)
347+
348+
expectedOutPatterns := []*regexp.Regexp{
349+
regexp.MustCompile(`\s*\.\.\. {2}\?\?\? {2}\[\.{23}] \[0 in 0s]`),
350+
regexp.MustCompile(`\s*\.\.\. done! \[0 in 0s]`),
351+
}
352+
out := renderOutput.String()
353+
for _, expectedOutPattern := range expectedOutPatterns {
354+
if !expectedOutPattern.MatchString(out) {
355+
assert.Fail(t, "Failed to find a pattern in the Output.", expectedOutPattern.String())
356+
}
357+
}
358+
showOutputOnFailure(t, out)
359+
}
360+
333361
func TestProgress_RenderNothing(t *testing.T) {
334362
renderOutput := outputWriter{}
335363

0 commit comments

Comments
 (0)