Fix jacoco merger
diff --git a/test/dubbo-test-jacoco-merger/src/main/java/org/apache/dubbo/test/JacocoReport.java b/test/dubbo-test-jacoco-merger/src/main/java/org/apache/dubbo/test/JacocoReport.java
index 4915326..d6ac4e2 100644
--- a/test/dubbo-test-jacoco-merger/src/main/java/org/apache/dubbo/test/JacocoReport.java
+++ b/test/dubbo-test-jacoco-merger/src/main/java/org/apache/dubbo/test/JacocoReport.java
@@ -16,12 +16,13 @@
*/
package org.apache.dubbo.test;
-import org.jacoco.cli.internal.Main;
-
import java.io.File;
+import java.io.PrintWriter;
+import java.lang.reflect.Constructor;
import java.util.LinkedList;
import java.util.List;
-import java.util.stream.Stream;
+
+import org.jacoco.cli.internal.Main;
public class JacocoReport {
public static void main(String[] args) throws Exception {
@@ -32,42 +33,43 @@
String dubboRepo = args[1];
List<File> execFiles = loadExecFiles(new File(basePath + File.separator + "target"));
- List<File> classFiles = loadClassFiles(new File(dubboRepo));
- List<File> sourceFiles = loadSourceFiles(new File(dubboRepo));
+ List<File> moduelFiles = loadModuleFiles(new File(dubboRepo));
if (execFiles.isEmpty()) {
System.out.println(basePath + File.separator + "target" + File.separator + "jacoco*.exec" + " does not exist");
return;
}
+ for (File classFile : moduelFiles) {
+ System.out.println("Generating report for " + classFile.getAbsolutePath());
- String[] execs = execFiles.stream()
- .map(File::getAbsolutePath)
- .toArray(String[]::new);
- String[] classes = classFiles.stream()
- .map(File::getAbsolutePath)
- .flatMap(s -> Stream.of("--classfiles", s))
- .toArray(String[]::new);
- String[] sources = sourceFiles.stream()
- .map(File::getAbsolutePath)
- .flatMap(s -> Stream.of("--sourcefiles", s))
- .toArray(String[]::new);
+ String[] execs = execFiles.stream()
+ .map(File::getAbsolutePath)
+ .toArray(String[]::new);
+ String[] classes = new String[]{"--classfiles", classFile.getAbsolutePath() + File.separator + "target" + File.separator + "classes" + File.separator + "org" + File.separator + "apache" + File.separator + "dubbo"};
+ String[] sources = new String[]{"--sourcefiles", classFile.getAbsolutePath() + File.separator + "src" + File.separator + "main" + File.separator + "java"};
- String[] reportArgs = new String[execs.length + classes.length + sources.length + 5];
- reportArgs[0] = "report";
- System.arraycopy(execs, 0, reportArgs, 1, execs.length);
- System.arraycopy(classes, 0, reportArgs, execs.length + 1, classes.length);
- System.arraycopy(sources, 0, reportArgs, execs.length + classes.length + 1, sources.length);
- reportArgs[execs.length + classes.length + sources.length + 1] = "--xml";
- reportArgs[execs.length + classes.length + sources.length + 2] = basePath + File.separator + "target" + File.separator + "report.xml";
- reportArgs[execs.length + classes.length + sources.length + 3] = "--html";
- reportArgs[execs.length + classes.length + sources.length + 4] = basePath + File.separator + "target" + File.separator + "site";
+ String[] reportArgs = new String[execs.length + classes.length + sources.length + 5];
+ reportArgs[0] = "report";
+ System.arraycopy(execs, 0, reportArgs, 1, execs.length);
+ System.arraycopy(classes, 0, reportArgs, execs.length + 1, classes.length);
+ System.arraycopy(sources, 0, reportArgs, execs.length + classes.length + 1, sources.length);
+ reportArgs[execs.length + classes.length + sources.length + 1] = "--xml";
+ reportArgs[execs.length + classes.length + sources.length + 2] = basePath + File.separator + "target" + File.separator + "report.xml";
+ reportArgs[execs.length + classes.length + sources.length + 3] = "--html";
+ reportArgs[execs.length + classes.length + sources.length + 4] = basePath + File.separator + "target" + File.separator + "site";
- Main.main(reportArgs);
+ PrintWriter out = new PrintWriter(System.out, true);
+ PrintWriter err = new PrintWriter(System.err, true);
+ Constructor<Main> declaredConstructor = Main.class.getDeclaredConstructor(String[].class);
+ declaredConstructor.setAccessible(true);
+ int returncode = (declaredConstructor.newInstance((Object) reportArgs)).execute(out, err);
+ System.out.println("Generating report for " + classFile.getAbsolutePath() + " finished with return code " + returncode);
+ }
}
- private static List<File> loadClassFiles(File baseFile) {
+ private static List<File> loadModuleFiles(File baseFile) {
List<File> result = new LinkedList<>();
if (baseFile.isDirectory()) {
if (baseFile.getAbsolutePath().contains("dubbo-demo")) {
@@ -77,20 +79,19 @@
return result;
}
if (new File(baseFile.getAbsolutePath() + File.separator + "target" + File.separator + "classes" + File.separator + "org" + File.separator + "apache" + File.separator + "dubbo").exists()) {
- result.add(new File(baseFile.getAbsolutePath() + File.separator + "target" + File.separator + "classes" + File.separator + "org" + File.separator + "apache" + File.separator + "dubbo"));
+ result.add(new File(baseFile.getAbsolutePath()));
return result;
}
File[] files = baseFile.listFiles();
if (files != null) {
for (File file : files) {
- result.addAll(loadClassFiles(file));
+ result.addAll(loadModuleFiles(file));
}
}
}
return result;
}
-
private static List<File> loadExecFiles(File baseFile) {
List<File> result = new LinkedList<>();
if (baseFile.isDirectory()) {
@@ -105,26 +106,4 @@
}
return result;
}
- private static List<File> loadSourceFiles(File baseFile) {
- List<File> result = new LinkedList<>();
- if (baseFile.isDirectory()) {
- if (baseFile.getAbsolutePath().contains("dubbo-demo")) {
- return result;
- }
- if (baseFile.getAbsolutePath().contains("dubbo-native")) {
- return result;
- }
- if (new File(baseFile.getAbsolutePath() + File.separator + "src" + File.separator + "main" + File.separator + "java").exists()) {
- result.add(new File(baseFile.getAbsolutePath() + File.separator + "src" + File.separator + "main" + File.separator + "java"));
- return result;
- }
- File[] files = baseFile.listFiles();
- if (files != null) {
- for (File file : files) {
- result.addAll(loadSourceFiles(file));
- }
- }
- }
- return result;
- }
}