Skip to content

Commit f6b51b8

Browse files
authored
Misc changes to coverage (flutter#5522)
1 parent 9a456c6 commit f6b51b8

File tree

4 files changed

+36
-9
lines changed

4 files changed

+36
-9
lines changed

resources/META-INF/flutter-coverage.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<idea-plugin>
2-
<extensions defaultExtensionNs="com.intellij">
2+
<extensions defaultExtensionNs="disable.com.intellij">
33
<programRunner implementation="io.flutter.run.coverage.FlutterCoverageProgramRunner"/>
44
<coverageEngine implementation="io.flutter.run.coverage.FlutterCoverageEngine"/>
55
<coverageRunner implementation="io.flutter.run.coverage.FlutterCoverageRunner"/>

src/io/flutter/run/coverage/FlutterCoverageEnabledConfiguration.java

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import com.intellij.execution.configurations.RunConfigurationBase;
1111
import com.intellij.execution.configurations.coverage.CoverageEnabledConfiguration;
1212
import com.intellij.openapi.application.ModalityState;
13+
import com.intellij.openapi.diagnostic.Logger;
14+
import com.intellij.openapi.vfs.VirtualFile;
1315
import com.intellij.ui.GuiUtils;
1416
import io.flutter.FlutterBundle;
1517
import io.flutter.pub.PubRoot;
@@ -20,27 +22,39 @@
2022
import java.util.List;
2123

2224
public class FlutterCoverageEnabledConfiguration extends CoverageEnabledConfiguration {
25+
private static final Logger LOG = Logger.getInstance(FlutterCoverageEnabledConfiguration.class.getName());
2326

2427
public FlutterCoverageEnabledConfiguration(@NotNull RunConfigurationBase<?> configuration) {
2528
super(configuration);
2629
super.setCoverageRunner(CoverageRunner.getInstance(FlutterCoverageRunner.class));
27-
final List<PubRoot> roots = PubRoots.forProject(configuration.getProject());
28-
if (roots.isEmpty()) {
29-
throw new RuntimeException(FlutterBundle.message("project.root.not.found"));
30-
}
31-
myCoverageFilePath = roots.get(0).getRoot().getCanonicalPath() + "/coverage/lcov.info";
30+
createCoverageFile();
3231
GuiUtils.invokeLaterIfNeeded(
3332
() -> setCurrentCoverageSuite(CoverageDataManager.getInstance(configuration.getProject()).addCoverageSuite(this)),
3433
ModalityState.any());
3534
}
3635

36+
@Override
37+
protected String createCoverageFile() {
38+
if (myCoverageFilePath == null) {
39+
final List<PubRoot> roots = PubRoots.forProject(getConfiguration().getProject());
40+
if (roots.isEmpty()) {
41+
throw new RuntimeException(FlutterBundle.message("project.root.not.found"));
42+
}
43+
final VirtualFile root = roots.get(0).getRoot();
44+
myCoverageFilePath = root.getPath() + "/coverage/lcov.info";
45+
}
46+
return myCoverageFilePath;
47+
}
48+
49+
@Override
3750
public void setCoverageRunner(@Nullable final CoverageRunner coverageRunner) {
3851
// Save and restore myCoverageFilePath because the super method clears it.
3952
final String path = myCoverageFilePath;
4053
super.setCoverageRunner(coverageRunner);
4154
myCoverageFilePath = path;
4255
}
4356

57+
@Override
4458
public void coverageRunnerExtensionRemoved(@NotNull CoverageRunner runner) {
4559
final String path = myCoverageFilePath;
4660
super.coverageRunnerExtensionRemoved(runner);

src/io/flutter/run/coverage/FlutterCoverageProgramRunner.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import com.intellij.execution.ui.RunContentDescriptor;
2323
import com.intellij.openapi.application.ApplicationManager;
2424
import com.intellij.openapi.diagnostic.Logger;
25+
import com.intellij.openapi.vfs.LocalFileSystem;
26+
import com.intellij.openapi.vfs.VfsUtil;
2527
import io.flutter.FlutterBundle;
2628
import io.flutter.run.test.TestConfig;
2729
import org.jetbrains.annotations.NonNls;
@@ -79,6 +81,9 @@ private static void processCoverage(ExecutionEnvironment env) {
7981
if (configuration.getCoverageFilePath() == null) return;
8082

8183
final Path path = Paths.get(configuration.getCoverageFilePath());
84+
final Path cov = path.getParent();
85+
VfsUtil.markDirtyAndRefresh(false, false, true, LocalFileSystem.getInstance().findFileByPath(cov.getParent().toString()));
86+
VfsUtil.markDirtyAndRefresh(false, true, true, LocalFileSystem.getInstance().findFileByPath(cov.toString()));
8287
if (Files.exists(path)) {
8388
@Nullable final RunnerSettings settings = env.getRunnerSettings();
8489
if (settings != null) {

src/io/flutter/run/coverage/LcovInfo.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
*/
66
package io.flutter.run.coverage;
77

8+
import com.intellij.openapi.diagnostic.Logger;
9+
import com.intellij.openapi.util.SystemInfo;
810
import com.intellij.rt.coverage.data.ClassData;
911
import com.intellij.rt.coverage.data.LineData;
1012
import com.intellij.rt.coverage.data.ProjectData;
@@ -22,6 +24,7 @@
2224
import java.util.stream.Stream;
2325

2426
public class LcovInfo {
27+
private static final Logger LOG = Logger.getInstance(LcovInfo.class.getName());
2528

2629
private static final String FILE_LABEL = "SF:";
2730
private static final String DATA_LABEL = "DA:";
@@ -58,7 +61,7 @@ public static void readInto(ProjectData data, File file) throws IOException {
5861
final LineData lineData = new LineData(line.lineNum, null);
5962
lineData.setHits(line.execCount);
6063
lines[line.lineNum] = lineData;
61-
//classData.registerMethodSignature(lineData);
64+
classData.registerMethodSignature(lineData);
6265
}
6366
classData.setLines(lines);
6467
}
@@ -96,7 +99,8 @@ private void addLineCount(String data) {
9699
private static int safelyParse(String val) {
97100
try {
98101
return Integer.parseInt(val);
99-
} catch (NumberFormatException ex) {
102+
}
103+
catch (NumberFormatException ex) {
100104
return 0;
101105
}
102106
}
@@ -107,7 +111,11 @@ private void storeLineCounts() {
107111
}
108112

109113
private static String fullPath(String path) {
110-
return new File(path).getAbsolutePath();
114+
String absPath = new File(path).getAbsolutePath();
115+
if (SystemInfo.isWindows) {
116+
absPath = absPath.replaceAll("\\\\", "/");
117+
}
118+
return absPath;
111119
}
112120

113121
private static class LineCount {

0 commit comments

Comments
 (0)