mirror of
https://github.com/docker/compose.git
synced 2025-07-06 13:24:25 +02:00
Merge pull request #351 from chris-crone/error-progress-fix
Set progress event endTime on error
This commit is contained in:
commit
43d8f2fa18
@ -67,14 +67,17 @@ func (w *ttyWriter) Event(e Event) {
|
|||||||
w.eventIDs = append(w.eventIDs, e.ID)
|
w.eventIDs = append(w.eventIDs, e.ID)
|
||||||
}
|
}
|
||||||
if _, ok := w.events[e.ID]; ok {
|
if _, ok := w.events[e.ID]; ok {
|
||||||
event := w.events[e.ID]
|
last := w.events[e.ID]
|
||||||
if event.Status != Done && e.Status == Done {
|
switch e.Status {
|
||||||
event.stop()
|
case Done, Error:
|
||||||
|
if last.Status != e.Status {
|
||||||
|
last.stop()
|
||||||
}
|
}
|
||||||
event.Status = e.Status
|
}
|
||||||
event.Text = e.Text
|
last.Status = e.Status
|
||||||
event.StatusText = e.StatusText
|
last.Text = e.Text
|
||||||
w.events[e.ID] = event
|
last.StatusText = e.StatusText
|
||||||
|
w.events[e.ID] = last
|
||||||
} else {
|
} else {
|
||||||
e.startTime = time.Now()
|
e.startTime = time.Now()
|
||||||
e.spinner = newSpinner()
|
e.spinner = newSpinner()
|
||||||
|
@ -18,6 +18,7 @@ package progress
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"sync"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -54,3 +55,32 @@ func TestLineText(t *testing.T) {
|
|||||||
out = lineText(ev, 50, lineWidth, true)
|
out = lineText(ev, 50, lineWidth, true)
|
||||||
assert.Equal(t, "\x1b[31m . id Text Status 0.0s\n\x1b[0m", out)
|
assert.Equal(t, "\x1b[31m . id Text Status 0.0s\n\x1b[0m", out)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestErrorEvent(t *testing.T) {
|
||||||
|
w := &ttyWriter{
|
||||||
|
events: map[string]Event{},
|
||||||
|
mtx: &sync.RWMutex{},
|
||||||
|
}
|
||||||
|
e := Event{
|
||||||
|
ID: "id",
|
||||||
|
Text: "Text",
|
||||||
|
Status: Working,
|
||||||
|
StatusText: "Working",
|
||||||
|
startTime: time.Now(),
|
||||||
|
spinner: &spinner{
|
||||||
|
chars: []string{"."},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
// Fire "Working" event and check end time isn't touched
|
||||||
|
w.Event(e)
|
||||||
|
event, ok := w.events[e.ID]
|
||||||
|
assert.True(t, ok)
|
||||||
|
assert.True(t, event.endTime.Equal(time.Time{}))
|
||||||
|
|
||||||
|
// Fire "Error" event and check end time is set
|
||||||
|
e.Status = Error
|
||||||
|
w.Event(e)
|
||||||
|
event, ok = w.events[e.ID]
|
||||||
|
assert.True(t, ok)
|
||||||
|
assert.True(t, event.endTime.After(time.Now().Add(-10*time.Second)))
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user