Merge pull request #28238 from ijc25/jsonmessage-urxvt-corruption

pkg/jsonmessage: Avoid undefined ANSI escape codes.
This commit is contained in:
Tõnis Tiigi 2016-11-10 17:07:01 -08:00 committed by GitHub
commit 7aeacd35f2
2 changed files with 6 additions and 13 deletions

View File

@ -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.
// <ESC>[{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.
// <ESC>[{diff}B = move cursor down diff rows
if jm.ID != "" && isTerminal && diff > 0 {
fmt.Fprintf(out, "%c[%dB", 27, diff)
}
if err != nil {

View File

@ -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 {