diff --git a/pkg/jsonmessage/jsonmessage.go b/pkg/jsonmessage/jsonmessage.go index 3c4a346e46..5481433c56 100644 --- a/pkg/jsonmessage/jsonmessage.go +++ b/pkg/jsonmessage/jsonmessage.go @@ -189,13 +189,9 @@ func DisplayJSONMessagesStream(in io.Reader, out io.Writer, terminalFd uintptr, if isTerminal { fmt.Fprintf(out, "\n") } - } else { - diff = len(ids) - line } - if isTerminal { - // NOTE: this appears to be necessary even if - // diff == 0. - // [{diff}A = move cursor up diff rows + diff = len(ids) - line + if isTerminal && diff > 0 { fmt.Fprintf(out, "%c[%dA", 27, diff) } } else { @@ -207,10 +203,7 @@ func DisplayJSONMessagesStream(in io.Reader, out io.Writer, terminalFd uintptr, ids = make(map[string]int) } err := jm.Display(out, isTerminal) - if jm.ID != "" && isTerminal { - // NOTE: this appears to be necessary even if - // diff == 0. - // [{diff}B = move cursor down diff rows + if jm.ID != "" && isTerminal && diff > 0 { fmt.Fprintf(out, "%c[%dB", 27, diff) } if err != nil { diff --git a/pkg/jsonmessage/jsonmessage_test.go b/pkg/jsonmessage/jsonmessage_test.go index 479857d904..c6c5b0ed2a 100644 --- a/pkg/jsonmessage/jsonmessage_test.go +++ b/pkg/jsonmessage/jsonmessage_test.go @@ -205,17 +205,17 @@ func TestDisplayJSONMessagesStream(t *testing.T) { // Without progress, with ID "{ \"id\": \"ID\",\"status\": \"status\" }": { "ID: status\n", - fmt.Sprintf("ID: status\n%c[%dB", 27, 0), + fmt.Sprintf("ID: status\n"), }, // With progress "{ \"id\": \"ID\", \"status\": \"status\", \"progress\": \"ProgressMessage\" }": { "ID: status ProgressMessage", - fmt.Sprintf("\n%c[%dAID: status ProgressMessage%c[%dB", 27, 0, 27, 0), + fmt.Sprintf("\n%c[%dAID: status ProgressMessage%c[%dB", 27, 1, 27, 1), }, // With progressDetail "{ \"id\": \"ID\", \"status\": \"status\", \"progressDetail\": { \"Current\": 1} }": { "", // progressbar is disabled in non-terminal - fmt.Sprintf("\n%c[%dA%c[2K\rID: status 1 B\r%c[%dB", 27, 0, 27, 27, 0), + fmt.Sprintf("\n%c[%dA%c[2K\rID: status 1 B\r%c[%dB", 27, 1, 27, 27, 1), }, } for jsonMessage, expectedMessages := range messages {