aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Klaus Aehlig <aehlig@google.com>2016-04-11 09:03:16 +0000
committerGravatar Lukacs Berki <lberki@google.com>2016-04-11 11:23:40 +0000
commitbc205aac1ca1a70fcc6a3ad3fe2b8db684fce5a1 (patch)
treea8ede7b08b94e2c52c661bb895b298bd3099cd7b /src
parent48237a6ddb273911873391c19f7a922c5278ea85 (diff)
experimental UI: only wrap lines if curses are used
Lines are wrapped in the progress bar to reliably know how many lines we'll eventually have to erase (there are a couple of reasons for this; for example, the information about the terminal width often is unreliable). So, if we don't erase lines anyway, we can as well let the terminal break lines. -- Change-Id: Id20806e6d53bfeccc781200eeac96acf48a74b1d Reviewed-on: https://bazel-review.googlesource.com/#/c/3292 MOS_MIGRATED_REVID=119510906
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java13
-rwxr-xr-xsrc/test/shell/integration/experimental_ui_test.sh7
2 files changed, 16 insertions, 4 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 e13b75b834..e4b0128e3a 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
@@ -27,6 +27,7 @@ import com.google.devtools.build.lib.pkgcache.LoadingPhaseCompleteEvent;
import com.google.devtools.build.lib.skyframe.LoadingPhaseStartedEvent;
import com.google.devtools.build.lib.util.Clock;
import com.google.devtools.build.lib.util.io.AnsiTerminal;
+import com.google.devtools.build.lib.util.io.AnsiTerminalWriter;
import com.google.devtools.build.lib.util.io.LineCountingAnsiTerminalWriter;
import com.google.devtools.build.lib.util.io.LineWrappingAnsiTerminalWriter;
import com.google.devtools.build.lib.util.io.OutErr;
@@ -243,10 +244,14 @@ public class ExperimentalEventHandler extends BlazeCommandEventHandler {
}
private void addProgressBar() throws IOException {
- LineCountingAnsiTerminalWriter terminalWriter = new LineCountingAnsiTerminalWriter(terminal);
- stateTracker.writeProgressBar(
- new LineWrappingAnsiTerminalWriter(terminalWriter, terminalWidth - 1));
+ LineCountingAnsiTerminalWriter countingTerminalWriter =
+ new LineCountingAnsiTerminalWriter(terminal);
+ AnsiTerminalWriter terminalWriter = countingTerminalWriter;
+ if (cursorControl) {
+ terminalWriter = new LineWrappingAnsiTerminalWriter(terminalWriter, terminalWidth - 1);
+ }
+ stateTracker.writeProgressBar(terminalWriter);
terminalWriter.newline();
- numLinesProgressBar = terminalWriter.getWrittenLines();
+ numLinesProgressBar = countingTerminalWriter.getWrittenLines();
}
}
diff --git a/src/test/shell/integration/experimental_ui_test.sh b/src/test/shell/integration/experimental_ui_test.sh
index df8e6c84c1..e411b53904 100755
--- a/src/test/shell/integration/experimental_ui_test.sh
+++ b/src/test/shell/integration/experimental_ui_test.sh
@@ -80,6 +80,13 @@ function test_basic_progress_no_curses() {
expect_log $'\x1b\[32m'
}
+function test_no_curses_no_linebreak() {
+ bazel test --experimental_ui --curses=no --color=yes --terminal_columns=9 \
+ pkg:true 2>$TEST_log || fail "bazel test failed"
+ # expect a long-ish status line
+ expect_log '\[[0-9,]* / [0-9,]*\]......'
+}
+
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