Browse Source

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

pkg/jsonmessage: Avoid undefined ANSI escape codes.
Tõnis Tiigi 8 years ago
parent
commit
7aeacd35f2
2 changed files with 6 additions and 13 deletions
  1. 3 10
      pkg/jsonmessage/jsonmessage.go
  2. 3 3
      pkg/jsonmessage/jsonmessage_test.go

+ 3 - 10
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.
-				// <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 {

+ 3 - 3
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 {