aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java5
-rwxr-xr-xsrc/test/shell/integration/experimental_ui_test.sh13
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