aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/FancyTerminalEventHandler.java28
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/LoadStatement.java6
-rw-r--r--src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java2
3 files changed, 26 insertions, 10 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/FancyTerminalEventHandler.java b/src/main/java/com/google/devtools/build/lib/runtime/FancyTerminalEventHandler.java
index a39db67030..a15583ac08 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/FancyTerminalEventHandler.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/FancyTerminalEventHandler.java
@@ -15,6 +15,7 @@ package com.google.devtools.build.lib.runtime;
import com.google.common.base.Splitter;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterators;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.EventKind;
@@ -29,6 +30,7 @@ import java.io.IOException;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
+import java.util.Set;
import java.util.concurrent.ThreadLocalRandom;
import java.util.logging.Logger;
import java.util.regex.Matcher;
@@ -95,6 +97,9 @@ public class FancyTerminalEventHandler extends BlazeCommandEventHandler {
"Checking for outstanding GCard expenses",
"Waiting for workstation CPU temperature to decrease");
+ private static final Set<Character> PUNCTUATION_CHARACTERS =
+ ImmutableSet.<Character>of(',', '.', ':', '?', '!', ';');
+
private final Iterator<String> messageIterator = Iterators.cycle(SPECIAL_MESSAGES);
private volatile boolean trySpecial;
private volatile Instant skipUntil = Instant.now();
@@ -331,8 +336,7 @@ public class FancyTerminalEventHandler extends BlazeCommandEventHandler {
terminal.resetTerminal();
}
writeTimestampAndLocation(event);
- terminal.writeString(event.getMessage());
- terminal.writeString(".");
+ writeStringWithPotentialPeriod(event.getMessage());
crlf();
}
@@ -344,8 +348,7 @@ public class FancyTerminalEventHandler extends BlazeCommandEventHandler {
terminal.writeString("WARNING: ");
terminal.resetTerminal();
writeTimestampAndLocation(warning);
- terminal.writeString(warning.getMessage());
- terminal.writeString(".");
+ writeStringWithPotentialPeriod(warning.getMessage());
crlf();
}
@@ -357,11 +360,24 @@ public class FancyTerminalEventHandler extends BlazeCommandEventHandler {
terminal.writeString(event.getKind() + ": ");
terminal.resetTerminal();
writeTimestampAndLocation(event);
- terminal.writeString(event.getMessage());
- // No period; info messages often end in '...'.
+ writeStringWithPotentialPeriod(event.getMessage());
crlf();
}
+ /**
+ * Writes the given String to the terminal. This method also writes a trailing period if the
+ * message doesn't end with a punctuation character.
+ */
+ private void writeStringWithPotentialPeriod(String message) throws IOException {
+ terminal.writeString(message);
+ if (!message.isEmpty()) {
+ char lastChar = message.charAt(message.length() - 1);
+ if (!PUNCTUATION_CHARACTERS.contains(lastChar)) {
+ terminal.writeString(".");
+ }
+ }
+ }
+
private void subcmd(Event subcmd) throws IOException {
previousLineErasable = false;
if (useColor) {
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/LoadStatement.java b/src/main/java/com/google/devtools/build/lib/syntax/LoadStatement.java
index 6612572dd6..670380c624 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/LoadStatement.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/LoadStatement.java
@@ -74,7 +74,7 @@ public final class LoadStatement extends Statement {
if (current.isPrivate()) {
throw new EvalException(
- getLocation(), "symbol '" + current + "' is private and cannot be imported");
+ getLocation(), "symbol '" + current + "' is private and cannot be imported.");
}
// The key is the original name that was used to define the symbol
// in the loaded bzl file
@@ -114,11 +114,11 @@ public final class LoadStatement extends Statement {
String error = null;
if (pathString.getValue().isEmpty()) {
- error = "Path argument to load() must not be empty";
+ error = "Path argument to load() must not be empty.";
} else if (pathString.getValue().startsWith("//")) {
error =
"First argument of load() is a path, not a label. "
- + "It should start with a single slash if it is an absolute path";
+ + "It should start with a single slash if it is an absolute path.";
}
if (error != null) {
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java b/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java
index 944204944b..e5d676969d 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java
@@ -1042,7 +1042,7 @@ public class ParserTest extends EvaluationTestCase {
private static final String DOUBLE_SLASH_LOAD = "load('//foo/bar/file', 'test')\n";
private static final String DOUBLE_SLASH_ERROR =
"First argument of load() is a path, not a label. It should start with a "
- + "single slash if it is an absolute path";
+ + "single slash if it is an absolute path.";
@Test
public void testLoadDoubleSlashBuild() throws Exception {