This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/dubbo-integration-cases.git
The following commit(s) were added to refs/heads/main by this push:
new 8d6d45a2 Fix jacoco merger
8d6d45a2 is described below
commit 8d6d45a27259d21e5fbcc6749343506578258931
Author: Albumen Kevin <[email protected]>
AuthorDate: Fri Dec 6 20:43:09 2024 +0800
Fix jacoco merger
---
.../java/org/apache/dubbo/test/JacocoReport.java | 83 ++++++++--------------
1 file changed, 31 insertions(+), 52 deletions(-)
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 4915326f..b2c54930 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 @@ public class JacocoReport {
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] =
classFile.getAbsolutePath() + File.separator + "target" + File.separator +
"report.xml";
+ reportArgs[execs.length + classes.length + sources.length + 3] =
"--html";
+ reportArgs[execs.length + classes.length + sources.length + 4] =
classFile.getAbsolutePath() + 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 @@ public class JacocoReport {
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 @@ public class JacocoReport {
}
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;
- }
}