diff options
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java | 5 | ||||
-rwxr-xr-x | src/test/shell/integration/experimental_ui_test.sh | 13 |
2 files changed, 18 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java b/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java index cfa284f7d9..e13b75b834 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java @@ -42,6 +42,7 @@ import java.util.logging.Logger; public class ExperimentalEventHandler extends BlazeCommandEventHandler { private static Logger LOG = Logger.getLogger(ExperimentalEventHandler.class.getName()); + private final boolean cursorControl; private final AnsiTerminal terminal; private final boolean debugAllEvents; private final ExperimentalStateTracker stateTracker; @@ -54,6 +55,7 @@ public class ExperimentalEventHandler extends BlazeCommandEventHandler { public ExperimentalEventHandler( OutErr outErr, BlazeCommandEventHandler.Options options, Clock clock) { super(outErr, options); + this.cursorControl = options.useCursorControl(); this.terminal = new AnsiTerminal(outErr.getErrorStream()); this.terminalWidth = (options.terminalColumns > 0 ? options.terminalColumns : 80); this.debugAllEvents = options.experimentalUiDebugAllEvents; @@ -224,6 +226,9 @@ public class ExperimentalEventHandler extends BlazeCommandEventHandler { } private void clearProgressBar() throws IOException { + if (!cursorControl) { + return; + } for (int i = 0; i < numLinesProgressBar; i++) { terminal.cr(); terminal.cursorUp(1); diff --git a/src/test/shell/integration/experimental_ui_test.sh b/src/test/shell/integration/experimental_ui_test.sh index eea40c0cc8..df8e6c84c1 100755 --- a/src/test/shell/integration/experimental_ui_test.sh +++ b/src/test/shell/integration/experimental_ui_test.sh @@ -67,6 +67,19 @@ function test_basic_progress() { expect_log $'\x1b\[1A\x1b\[K' } +function test_basic_progress_no_curses() { + bazel test --experimental_ui --curses=no --color=yes pkg:true 2>$TEST_log \ + || fail "bazel test failed" + # some progress indicator is shown + expect_log '\[[0-9,]* / [0-9,]*\]' + # cursor is not moved up + expect_not_log $'\x1b\[1A' + # no line is deleted + expect_not_log $'\x1b\[K' + # but some green color is used + expect_log $'\x1b\[32m' +} + function test_pass() { bazel test --experimental_ui --curses=yes --color=yes pkg:true >$TEST_log || fail "bazel test failed" # PASS is written in green on the same line as the test target |