diff --git a/src/io/flutter/run/coverage/FlutterCoverageRunner.java b/src/io/flutter/run/coverage/FlutterCoverageRunner.java index c9863a279f..5fccb9dc7b 100644 --- a/src/io/flutter/run/coverage/FlutterCoverageRunner.java +++ b/src/io/flutter/run/coverage/FlutterCoverageRunner.java @@ -6,8 +6,12 @@ package io.flutter.run.coverage; import com.intellij.coverage.CoverageEngine; +import com.intellij.coverage.CoverageLoadErrorReporter; +import com.intellij.coverage.CoverageLoadingResult; import com.intellij.coverage.CoverageRunner; import com.intellij.coverage.CoverageSuite; +import com.intellij.coverage.FailedCoverageLoadingResult; +import com.intellij.coverage.SuccessCoverageLoadingResult; import com.intellij.openapi.diagnostic.Logger; import com.intellij.rt.coverage.data.ProjectData; import io.flutter.FlutterBundle; @@ -21,26 +25,29 @@ public class FlutterCoverageRunner extends CoverageRunner { private static final String ID = "FlutterCoverageRunner"; private static final @NotNull Logger LOG = Logger.getInstance(FlutterCoverageRunner.class.getName()); - @Nullable @Override - public ProjectData loadCoverageData(@NotNull final File sessionDataFile, @Nullable CoverageSuite baseCoverageSuite) { + public @NotNull CoverageLoadingResult loadCoverageData(@NotNull final File sessionDataFile, + @Nullable CoverageSuite baseCoverageSuite, + @NotNull CoverageLoadErrorReporter reporter) { if (!(baseCoverageSuite instanceof FlutterCoverageSuite)) { - return null; + return new FailedCoverageLoadingResult("Flutter coverage suite is not a FlutterCoverageSuite"); } return doLoadCoverageData(sessionDataFile, (FlutterCoverageSuite)baseCoverageSuite); } - @Nullable - private static ProjectData doLoadCoverageData(@NotNull final File sessionDataFile, @NotNull final FlutterCoverageSuite coverageSuite) { + private static @NotNull CoverageLoadingResult doLoadCoverageData(@NotNull final File sessionDataFile, + @NotNull final FlutterCoverageSuite coverageSuite) { final ProjectData projectData = new ProjectData(); try { LcovInfo.readInto(projectData, sessionDataFile); } catch (IOException ex) { LOG.warn(FlutterBundle.message("coverage.data.not.read", sessionDataFile.getAbsolutePath())); - return null; } - return projectData; + if (projectData == null) { + return new FailedCoverageLoadingResult("Flutter coverage data could not be read"); + } + return new SuccessCoverageLoadingResult(projectData); } @NotNull