From ea22a1fb8c6980c6e2df48996323925fc81c0528 Mon Sep 17 00:00:00 2001 From: Andele Swierstra Date: Fri, 5 Apr 2024 11:37:06 +0200 Subject: [PATCH 01/18] Add Parser.XUNIT to doFillParserItems --- .../io/jenkins/plugins/coverage/metrics/steps/CoverageTool.java | 1 + 1 file changed, 1 insertion(+) diff --git a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageTool.java b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageTool.java index 207ae9aa..2ee94608 100644 --- a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageTool.java +++ b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageTool.java @@ -152,6 +152,7 @@ public ListBoxModel doFillParserItems() { add(options, Parser.PIT); add(options, Parser.JUNIT); add(options, Parser.NUNIT); + add(options, Parser.XUNIT); return options; } return new ListBoxModel(); From 0f8b6c5526f6655fe78da61bcebd9bf81898f717 Mon Sep 17 00:00:00 2001 From: Andele Swierstra Date: Fri, 12 Apr 2024 11:45:40 +0200 Subject: [PATCH 02/18] Add ParserType enum property to Parser enum, take all test parsers into account --- .../metrics/steps/CoverageRecorder.java | 15 +++-- .../coverage/metrics/steps/CoverageTool.java | 60 ++++++++++++------- 2 files changed, 47 insertions(+), 28 deletions(-) diff --git a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageRecorder.java b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageRecorder.java index 51dcbbff..79324d22 100644 --- a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageRecorder.java +++ b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageRecorder.java @@ -48,6 +48,7 @@ import jenkins.model.Jenkins; import io.jenkins.plugins.coverage.metrics.steps.CoverageTool.Parser; +import io.jenkins.plugins.coverage.metrics.steps.CoverageTool.ParserType; import io.jenkins.plugins.prism.SourceCodeDirectory; import io.jenkins.plugins.prism.SourceCodeRetention; import io.jenkins.plugins.util.AgentFileVisitor.FileVisitorResult; @@ -451,7 +452,7 @@ private void resolveAbsolutePaths(final Node rootNode, final FilePath workspace, private String getIcon() { var icons = tools.stream() .map(CoverageTool::getParser) - .filter(parser -> parser != Parser.JUNIT) + .filter(parser -> parser.getParserType() != ParserType.TEST) .map(Parser::getIcon) .collect(Collectors.toSet()); if (icons.size() == 1) { @@ -537,12 +538,16 @@ private boolean isEmpty(final Map> results) { } private List extractTests(final Map> results) { - if (results.containsKey(Parser.JUNIT)) { - return results.remove(Parser.JUNIT); - } - else { + // return an empty list if there are no test parsers + if (results.keySet().stream().noneMatch(parser -> parser.getParserType() == ParserType.TEST)) { return List.of(); } + + // extract all ModuleNodes from the test parsers + return results.entrySet().stream() + .filter(entry -> entry.getKey().getParserType() == ParserType.TEST) + .flatMap(entry -> entry.getValue().stream()) + .collect(Collectors.toList()); } private ProcessingMode ignoreErrors() { diff --git a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageTool.java b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageTool.java index 2ee94608..0bf19732 100644 --- a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageTool.java +++ b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageTool.java @@ -1,6 +1,9 @@ package io.jenkins.plugins.coverage.metrics.steps; import java.io.Serializable; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; import org.apache.commons.lang3.StringUtils; @@ -24,6 +27,7 @@ import hudson.model.Item; import hudson.util.FormValidation; import hudson.util.ListBoxModel; +import hudson.util.ListBoxModel.Option; import jenkins.model.Jenkins; import io.jenkins.plugins.prism.SourceCodeRetention; @@ -144,22 +148,14 @@ public static class CoverageToolDescriptor extends Descriptor { */ @POST public ListBoxModel doFillParserItems() { - if (JENKINS.hasPermission(Jenkins.READ)) { - ListBoxModel options = new ListBoxModel(); - add(options, Parser.JACOCO); - add(options, Parser.COBERTURA); - add(options, Parser.OPENCOVER); - add(options, Parser.PIT); - add(options, Parser.JUNIT); - add(options, Parser.NUNIT); - add(options, Parser.XUNIT); - return options; + if (!JENKINS.hasPermission(Jenkins.READ)) { + return new ListBoxModel(); } - return new ListBoxModel(); - } - private void add(final ListBoxModel options, final Parser parser) { - options.add(parser.getDisplayName(), parser.name()); + List