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;
   }
 
   /**