Skylark error messages now include a stack trace.
This means that some tests had to be changed from using exact equality of error messages to working with contains() / startsWith().
--
MOS_MIGRATED_REVID=100923593
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/EvalException.java b/src/main/java/com/google/devtools/build/lib/syntax/EvalException.java
index 361ce9f..32f289b 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/EvalException.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/EvalException.java
@@ -70,7 +70,7 @@
if (message == null) {
message = "";
}
- if (cause != null) {
+ if (cause != null && !message.contains(cause.getMessage())) {
message = message + (message.isEmpty() ? "" : ": ") + cause.getMessage();
}
if (message.isEmpty()) {
@@ -92,7 +92,16 @@
return (getLocation() == null ? "" : getLocation()) + ": "
+ (message == null ? "" : message + "\n")
+ (dueToIncompleteAST ? "due to incomplete AST\n" : "")
- + (getCause() != null && getCause().getMessage() != null ? getCause().getMessage() : "");
+ + getCauseMessage();
+ }
+
+ private String getCauseMessage() {
+ Throwable cause = getCause();
+ if (cause == null) {
+ return "";
+ }
+ String causeMessage = cause.getMessage();
+ return (causeMessage == null || message.contains(causeMessage)) ? "" : causeMessage;
}
/**