diff options
author | 2016-04-11 09:03:16 +0000 | |
---|---|---|
committer | 2016-04-11 11:23:40 +0000 | |
commit | bc205aac1ca1a70fcc6a3ad3fe2b8db684fce5a1 (patch) | |
tree | a8ede7b08b94e2c52c661bb895b298bd3099cd7b /src | |
parent | 48237a6ddb273911873391c19f7a922c5278ea85 (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.java | 13 | ||||
-rwxr-xr-x | src/test/shell/integration/experimental_ui_test.sh | 7 |
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 |