[Retrace] Throw IOException for stack trace file

Bug: 187955695
Change-Id: Ie886608b59e8fca5f7682e01c193ca05f903e265
diff --git a/src/main/java/com/android/tools/r8/retrace/Retrace.java b/src/main/java/com/android/tools/r8/retrace/Retrace.java
index 63d0098..62c04bb 100644
--- a/src/main/java/com/android/tools/r8/retrace/Retrace.java
+++ b/src/main/java/com/android/tools/r8/retrace/Retrace.java
@@ -131,7 +131,7 @@
     try {
       return Files.readAllLines(Paths.get(stackTracePath), Charsets.UTF_8);
     } catch (IOException e) {
-      diagnostics.error(new StringDiagnostic("Could not find stack trace file: " + stackTracePath));
+      diagnostics.error(new ExceptionDiagnostic(e));
       throw new RetraceAbortException();
     }
   }
diff --git a/src/test/java/com/android/tools/r8/retrace/RetraceCommandLineTests.java b/src/test/java/com/android/tools/r8/retrace/RetraceCommandLineTests.java
index cd839f1..c1a704e 100644
--- a/src/test/java/com/android/tools/r8/retrace/RetraceCommandLineTests.java
+++ b/src/test/java/com/android/tools/r8/retrace/RetraceCommandLineTests.java
@@ -54,7 +54,7 @@
 
   private final boolean testExternal;
 
-  @Parameters(name = "{0}")
+  @Parameters(name = "external: {0}")
   public static Boolean[] data() {
     return BooleanUtils.values();
   }
@@ -96,6 +96,13 @@
   }
 
   @Test
+  public void testMissingStackTraceFile() throws IOException {
+    Path mappingFile = folder.newFile("mapping.txt").toPath();
+    Files.write(mappingFile, "foo.bar.baz -> foo:".getBytes());
+    runAbortTest(containsString("NoSuchFileException"), mappingFile.toString(), "stacktrace.txt");
+  }
+
+  @Test
   public void testVerbose() throws IOException {
     FoundMethodVerboseStackTrace stackTrace = new FoundMethodVerboseStackTrace();
     runTest(