Merge "Add extensive logging for debugging"
diff --git a/src/test/java/com/android/tools/r8/RunExamplesAndroidOTest.java b/src/test/java/com/android/tools/r8/RunExamplesAndroidOTest.java
index 5fa4cf3..3042cbe 100644
--- a/src/test/java/com/android/tools/r8/RunExamplesAndroidOTest.java
+++ b/src/test/java/com/android/tools/r8/RunExamplesAndroidOTest.java
@@ -606,7 +606,7 @@
             output.replace("\r", "").equals(javaResult.stdout.replace("\r", "")));
       }
     } catch (Throwable t) {
-      assert expectedToFail;
+      assert expectedToFail && !ToolHelper.compareAgaintsGoldenFiles();
     }
   }
 
diff --git a/src/test/java/com/android/tools/r8/ToolHelper.java b/src/test/java/com/android/tools/r8/ToolHelper.java
index f73f198..4f8b2e3 100644
--- a/src/test/java/com/android/tools/r8/ToolHelper.java
+++ b/src/test/java/com/android/tools/r8/ToolHelper.java
@@ -713,6 +713,12 @@
       return DexVm.ART_DEFAULT;
     } else {
       DexVm artVersionEnum = DexVm.fromShortName(artVersion);
+      if (artVersionEnum == null
+          && !artVersion.endsWith(Kind.HOST.toString())
+          && !artVersion.endsWith(Kind.TARGET.toString())) {
+        // Default to host Art/Dalvik when not specified.
+        artVersionEnum = DexVm.fromShortName(artVersion + '_' + Kind.HOST.toString());
+      }
       if (artVersionEnum == null) {
         throw new RuntimeException("Unsupported Art version " + artVersion);
       } else {
diff --git a/src/test/java/com/android/tools/r8/naming/retrace/StackTrace.java b/src/test/java/com/android/tools/r8/naming/retrace/StackTrace.java
index 68e09c1..3270e48 100644
--- a/src/test/java/com/android/tools/r8/naming/retrace/StackTrace.java
+++ b/src/test/java/com/android/tools/r8/naming/retrace/StackTrace.java
@@ -123,7 +123,8 @@
     List<StackTraceLine> stackTraceLines = new ArrayList<>();
     List<String> stderrLines = StringUtils.splitLines(stderr);
 
-    // A Dalvik stacktrace looks like this:
+    // A Dalvik stacktrace looks like this (apparently the bottom frame
+    // "dalvik.system.NativeStart.main" is not always present)
     // W(209693) threadid=1: thread exiting with uncaught exception (group=0xf616cb20)  (dalvikvm)
     // java.lang.NullPointerException
     // \tat com.android.tools.r8.naming.retrace.Main.a(:133)
@@ -143,8 +144,9 @@
     // \tat com.android.tools.r8.naming.retrace.Main.a(:156)
     // \tat com.android.tools.r8.naming.retrace.Main.main(:162)
     int last = stderrLines.size();
-    if (ToolHelper.getDexVm().isOlderThanOrEqual(DexVm.ART_4_4_4_HOST)) {
-      // Skip the bottom frame "dalvik.system.NativeStart.main".
+    // Skip the bottom frame "dalvik.system.NativeStart.main" if present.
+    if (ToolHelper.getDexVm().isOlderThanOrEqual(DexVm.ART_4_4_4_HOST)
+        && stderrLines.get(last - 1).contains("dalvik.system.NativeStart.main")) {
       last--;
     }
     // Take all lines from the bottom starting with "\tat ".