diff --git a/plugin/pom.xml b/plugin/pom.xml index ebf837a81..48a126b28 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -5,7 +5,7 @@ org.jvnet.hudson.plugins analysis-pom - 5.31.0 + 5.32.0 diff --git a/plugin/src/main/java/io/jenkins/plugins/coverage/model/CoverageBuildAction.java b/plugin/src/main/java/io/jenkins/plugins/coverage/model/CoverageBuildAction.java index 7b199f2ee..76bce08cf 100644 --- a/plugin/src/main/java/io/jenkins/plugins/coverage/model/CoverageBuildAction.java +++ b/plugin/src/main/java/io/jenkins/plugins/coverage/model/CoverageBuildAction.java @@ -33,7 +33,6 @@ */ @SuppressWarnings("PMD.GodClass") public class CoverageBuildAction extends BuildAction implements HealthReportingAction, StaplerProxy { - /** Relative URL to the details of the code coverage results. */ public static final String DETAILS_URL = "coverage"; /** The coverage report icon. */ @@ -51,9 +50,14 @@ public class CoverageBuildAction extends BuildAction implements He private final String referenceBuildId; // since 3.0.0 + /** The delta of this build's coverages with respect to the reference build. */ private SortedMap difference; + /** The coverages filtered by changed lines of the associated change request. */ + // FIXME: actually we need the coverages? private SortedMap changeCoverage; + /** The delta of the coverages of the associated change request with respect to the reference build. */ private SortedMap changeCoverageDifference; + /** The indirect coverage changes of the associated change request with respect to the reference build. */ private SortedMap indirectCoverageChanges; @SuppressWarnings("unused") @@ -86,13 +90,13 @@ public CoverageBuildAction(final Run owner, final CoverageNode result, fin * @param referenceBuildId * the ID of the reference build * @param delta - * the delta coverage with respect to the reference build + * delta of this build's coverages with respect to the reference build * @param changeCoverage - * the change coverage with respect to the reference build + * the coverages filtered by changed lines of the associated change request * @param changeCoverageDifference - * the change coverage delta with respect to the reference build + * the delta of the coverages of the associated change request with respect to the reference build * @param indirectCoverageChanges - * the indirect coverage changes with respect to the reference build + * the indirect coverage changes of the associated change request with respect to the reference build */ @SuppressWarnings("checkstyle:ParameterNumber") public CoverageBuildAction(final Run owner, final CoverageNode result, @@ -112,7 +116,8 @@ public CoverageBuildAction(final Run owner, final CoverageNode result, final SortedMap delta, final SortedMap changeCoverage, final SortedMap changeCoverageDifference, - final SortedMap indirectCoverageChanges, final boolean canSerialize) { + final SortedMap indirectCoverageChanges, + final boolean canSerialize) { super(owner, result, canSerialize); lineCoverage = result.getCoverage(CoverageMetric.LINE); @@ -130,8 +135,7 @@ public CoverageBuildAction(final Run owner, final CoverageNode result, protected Object readResolve() { if (difference == null) { difference = StreamEx.of(delta.entrySet()) - .toSortedMap(Entry::getKey, - e -> CoveragePercentage.valueOf(e.getValue())); + .toSortedMap(Entry::getKey, e -> CoveragePercentage.valueOf(e.getValue())); } if (changeCoverage == null) { changeCoverage = new TreeMap<>(); @@ -154,26 +158,39 @@ public Coverage getBranchCoverage() { } /** - * Returns whether the {@link Coverage} for the passed metric exists. + * Returns whether a {@link Coverage} for the specified metric exists. * * @param coverageMetric - * the metric to check + * the coverage metric * - * @return {@code true} if a coverage is available for the specified metric + * @return {@code true} if a coverage is available for the specified metric, {@code false} otherwise */ public boolean hasCoverage(final CoverageMetric coverageMetric) { + if (coverageMetric.equals(CoverageMetric.LINE)) { + return lineCoverage.isSet(); + } + if (coverageMetric.equals(CoverageMetric.BRANCH)) { + return branchCoverage.isSet(); + } + return getResult().getCoverage(coverageMetric).isSet(); } /** - * Gets the {@link Coverage} for the passed metric. + * Returns the {@link Coverage} for the specified metric. * * @param coverageMetric - * The coverage metric + * the coverage metric * * @return the coverage */ public Coverage getCoverage(final CoverageMetric coverageMetric) { + if (coverageMetric.equals(CoverageMetric.LINE)) { + return lineCoverage; + } + if (coverageMetric.equals(CoverageMetric.BRANCH)) { + return branchCoverage; + } return getResult().getCoverage(coverageMetric); } @@ -183,7 +200,7 @@ public Coverage getCoverage(final CoverageMetric coverageMetric) { * @return {@code true} if the change coverage exist, else {@code false} */ public boolean hasChangeCoverage() { - return getResult().hasChangeCoverage(); + return hasChangeCoverage(CoverageMetric.LINE) || hasChangeCoverage(CoverageMetric.BRANCH); } /** @@ -195,7 +212,7 @@ public boolean hasChangeCoverage() { * @return {@code true} if the change coverage exist for the metric, else {@code false} */ public boolean hasChangeCoverage(final CoverageMetric coverageMetric) { - return getResult().hasChangeCoverage(coverageMetric); + return changeCoverage.containsKey(coverageMetric); } /** @@ -207,6 +224,7 @@ public boolean hasChangeCoverage(final CoverageMetric coverageMetric) { * @return the change coverage */ public Coverage getChangeCoverage(final CoverageMetric coverageMetric) { + // FIXME: is percentage sufficient? return getResult().getChangeCoverageTree().getCoverage(coverageMetric); } @@ -216,7 +234,7 @@ public Coverage getChangeCoverage(final CoverageMetric coverageMetric) { * @return {@code true} if indirect coverage changes exist, else {@code false} */ public boolean hasIndirectCoverageChanges() { - return getResult().hasIndirectCoverageChanges(); + return hasIndirectCoverageChanges(CoverageMetric.LINE) || hasIndirectCoverageChanges(CoverageMetric.BRANCH); } /** @@ -228,7 +246,7 @@ public boolean hasIndirectCoverageChanges() { * @return {@code true} if indirect coverage changes exist for the metric, else {@code false} */ public boolean hasIndirectCoverageChanges(final CoverageMetric coverageMetric) { - return getResult().hasIndirectCoverageChanges(coverageMetric); + return indirectCoverageChanges.containsKey(coverageMetric); } /** @@ -240,6 +258,7 @@ public boolean hasIndirectCoverageChanges(final CoverageMetric coverageMetric) { * @return the indirect coverage changes */ public Coverage getIndirectCoverageChanges(final CoverageMetric coverageMetric) { + // FIXME: is percentage sufficient? return getResult().getIndirectCoverageChangesTree().getCoverage(coverageMetric); } @@ -347,7 +366,7 @@ public String formatIndirectCoverageChanges(final CoverageMetric metric) { private String formatCoverageForMetric(final CoverageMetric metric, final Map coverages) { String coverage = Messages.Coverage_Not_Available(); - if (coverages != null && coverages.containsKey(metric)) { + if (coverages.containsKey(metric)) { coverage = coverages.get(metric).formatPercentage(Functions.getCurrentLocale()); } return metric.getName() + ": " + coverage; @@ -473,8 +492,7 @@ private String getFormattedChangesOverview(final long lineAmount, final int file */ @SuppressWarnings("unused") // Called by jelly view public String formatCoverage(final CoverageMetric metric) { - String coverage = getResult().printCoverageFor(metric, Functions.getCurrentLocale()); - return metric.getName() + ": " + coverage; + return metric.getName() + ": " + getCoverage(metric).formatCoveredPercentage(Functions.getCurrentLocale()); } @Override diff --git a/plugin/src/main/java/io/jenkins/plugins/coverage/model/CoverageReporter.java b/plugin/src/main/java/io/jenkins/plugins/coverage/model/CoverageReporter.java index f26da38e3..7fcfa0ed1 100644 --- a/plugin/src/main/java/io/jenkins/plugins/coverage/model/CoverageReporter.java +++ b/plugin/src/main/java/io/jenkins/plugins/coverage/model/CoverageReporter.java @@ -134,7 +134,8 @@ public void run(final CoverageResult rootResult, final Run build, final Fi } action = new CoverageBuildAction(build, rootNode, healthReport, - referenceAction.getOwner().getExternalizableId(), coverageDelta, + referenceAction.getOwner().getExternalizableId(), + coverageDelta, changeCoverageRoot.getMetricPercentages(), changeCoverageDelta, indirectCoverageChangesTree.getMetricPercentages()); diff --git a/plugin/src/test/java/io/jenkins/plugins/coverage/CoverageChecksPublisherTest.java b/plugin/src/test/java/io/jenkins/plugins/coverage/CoverageChecksPublisherTest.java index 51fbdb122..09d0d292d 100644 --- a/plugin/src/test/java/io/jenkins/plugins/coverage/CoverageChecksPublisherTest.java +++ b/plugin/src/test/java/io/jenkins/plugins/coverage/CoverageChecksPublisherTest.java @@ -1,12 +1,11 @@ package io.jenkins.plugins.coverage; import java.util.HashMap; -import java.util.Locale; import java.util.Map; import java.util.Optional; -import org.junit.BeforeClass; import org.junit.Test; +import org.junitpioneer.jupiter.DefaultLocale; import org.jvnet.localizer.Localizable; import hudson.model.HealthReport; @@ -25,6 +24,7 @@ import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; +@DefaultLocale("en") public class CoverageChecksPublisherTest { private static final String JENKINS_BASE_URL = "http://127.0.0.1:8080"; private static final String COVERAGE_URL_NAME = "coverage"; @@ -33,11 +33,6 @@ public class CoverageChecksPublisherTest { private static final String LAST_SUCCESSFUL_BUILD_LINK = "http://127.0.0.1:8080/job/pipeline-coding-style/view/change-requests/job/PR-3/110/"; private static final String HEALTH_REPORT = "Coverage Healthy score is 100%"; - @BeforeClass - public static void enforceEnglishLocale() { - Locale.setDefault(Locale.ENGLISH); - } - @Test public void shouldConstructChecksDetailsWithLineAndMethodCoverage() { ChecksDetails expectedDetails = new ChecksDetailsBuilder() diff --git a/plugin/src/test/java/io/jenkins/plugins/coverage/model/AbstractCoverageTest.java b/plugin/src/test/java/io/jenkins/plugins/coverage/model/AbstractCoverageTest.java index 9216ac331..d13610002 100644 --- a/plugin/src/test/java/io/jenkins/plugins/coverage/model/AbstractCoverageTest.java +++ b/plugin/src/test/java/io/jenkins/plugins/coverage/model/AbstractCoverageTest.java @@ -1,8 +1,6 @@ package io.jenkins.plugins.coverage.model; -import java.util.Locale; - -import org.junit.jupiter.api.BeforeAll; +import org.junitpioneer.jupiter.DefaultLocale; import edu.hm.hafner.util.ResourceTest; @@ -17,6 +15,7 @@ * * @author Ullrich Hafner */ +@DefaultLocale("en") public abstract class AbstractCoverageTest extends ResourceTest { static final CoverageMetric MODULE = CoverageMetric.MODULE; static final CoverageMetric PACKAGE = CoverageMetric.PACKAGE; @@ -27,11 +26,6 @@ public abstract class AbstractCoverageTest extends ResourceTest { static final CoverageMetric INSTRUCTION = CoverageMetric.INSTRUCTION; static final CoverageMetric BRANCH = CoverageMetric.BRANCH; - @BeforeAll - static void beforeAll() { - Locale.setDefault(Locale.ENGLISH); - } - /** * Reads the {@link CoverageResult} from a coverage report. * diff --git a/plugin/src/test/java/io/jenkins/plugins/coverage/model/CoverageBuildActionTest.java b/plugin/src/test/java/io/jenkins/plugins/coverage/model/CoverageBuildActionTest.java index 17a2e876d..07c9b09bd 100644 --- a/plugin/src/test/java/io/jenkins/plugins/coverage/model/CoverageBuildActionTest.java +++ b/plugin/src/test/java/io/jenkins/plugins/coverage/model/CoverageBuildActionTest.java @@ -6,11 +6,14 @@ import org.apache.commons.lang3.math.Fraction; import org.junit.jupiter.api.Test; +import org.junitpioneer.jupiter.DefaultLocale; -import hudson.Functions; +import hudson.model.FreeStyleBuild; import hudson.model.HealthReport; import hudson.model.Run; +import io.jenkins.plugins.coverage.model.Coverage.CoverageBuilder; + import static io.jenkins.plugins.coverage.model.testutil.CoverageStubs.*; import static io.jenkins.plugins.coverage.model.testutil.JobStubs.*; import static org.assertj.core.api.Assertions.*; @@ -21,9 +24,9 @@ * * @author Ullrich Hafner */ +@DefaultLocale("en") class CoverageBuildActionTest { - - private static final Locale LOCALE = Functions.getCurrentLocale(); + private static final Locale LOCALE = Locale.US; private static final Fraction COVERAGE_FRACTION = Fraction.ONE_HALF; private static final CoveragePercentage COVERAGE_PERCENTAGE = CoveragePercentage.valueOf(COVERAGE_FRACTION); @@ -32,35 +35,136 @@ class CoverageBuildActionTest { private static final int COVERAGE_FILE_CHANGES = 5; private static final long COVERAGE_LINE_CHANGES = 10; + @Test + void shouldNotLoadResultIfCoverageValuesArePersistedInAction() { + CoverageNode module = new CoverageNode(CoverageMetric.MODULE, "module"); + + CoverageBuilder coverageBuilder = new CoverageBuilder(); + + Coverage percent50 = coverageBuilder.setCovered(1).setMissed(1).build(); + module.add(new CoverageLeaf(CoverageMetric.BRANCH, percent50)); + + Coverage percent80 = coverageBuilder.setCovered(8).setMissed(2).build(); + module.add(new CoverageLeaf(CoverageMetric.LINE, percent80)); + + CoverageBuildAction action = spy(createEmptyAction(module)); + when(action.getResult()).thenThrow(new IllegalStateException("Result should not be accessed with getResult() when getting a coverage metric that is persisted in the build")); + + assertThat(action.getReferenceBuild()).isEmpty(); + + assertThat(action.hasCoverage(CoverageMetric.LINE)).isTrue(); + assertThat(action.getCoverage(CoverageMetric.LINE)).isEqualTo(percent80); + assertThat(action.getLineCoverage()).isEqualTo(percent80); + assertThat(action.hasCoverage(CoverageMetric.BRANCH)).isTrue(); + assertThat(action.getCoverage(CoverageMetric.BRANCH)).isEqualTo(percent50); + assertThat(action.getBranchCoverage()).isEqualTo(percent50); + + assertThatIllegalStateException().isThrownBy( + () -> action.hasCoverage(CoverageMetric.INSTRUCTION)); + assertThatIllegalStateException().isThrownBy( + () -> action.getCoverage(CoverageMetric.INSTRUCTION)); + + assertThat(action.formatChangeCoverage(CoverageMetric.BRANCH)).isEqualTo("Branch: n/a"); + assertThat(action.formatChangeCoverageOverview()).isEqualTo("n/a"); + + assertThat(action.formatIndirectCoverageChanges(CoverageMetric.BRANCH)).isEqualTo("Branch: n/a"); + assertThat(action.formatIndirectCoverageChangesOverview()).isEqualTo("n/a"); + + assertThat(action.formatChangeCoverageDifference(CoverageMetric.BRANCH)).isEqualTo("n/a"); + assertThat(action.formatDelta(CoverageMetric.BRANCH)).isEqualTo("n/a"); + } + + private static CoverageBuildAction createEmptyAction(final CoverageNode module) { + return new CoverageBuildAction(mock(FreeStyleBuild.class), module, new HealthReport(), "-", + new TreeMap<>(), new TreeMap<>(), + new TreeMap<>(), new TreeMap<>(), false); + } + + @Test + void shouldNotLoadResultIfDeltasArePersistedInAction() { + SortedMap deltas = new TreeMap<>(); + + CoverageBuilder coverageBuilder = new CoverageBuilder(); + + CoveragePercentage percent50 = CoveragePercentage.valueOf(coverageBuilder.setCovered(1).setMissed(1).build() + .getCoveredFraction()); + CoveragePercentage percent80 = CoveragePercentage.valueOf(coverageBuilder.setCovered(8).setMissed(2).build() + .getCoveredFraction()); + + deltas.put(CoverageMetric.BRANCH, percent50); + + CoverageBuildAction action = new CoverageBuildAction(mock(FreeStyleBuild.class), + new CoverageNode(CoverageMetric.MODULE, "module"), + mock(HealthReport.class), "-", + deltas, deltas, + deltas, deltas, false); + + CoverageBuildAction spy = spy(action); + when(spy.getResult()).thenThrow(new IllegalArgumentException("Result should not be accessed with getResult() when getting a coverage metric that is persisted in the build")); + + assertThat(spy.hasChangeCoverage()).isTrue(); + assertThat(spy.hasChangeCoverage(CoverageMetric.LINE)).isFalse(); + assertThat(spy.hasChangeCoverage(CoverageMetric.BRANCH)).isTrue(); + + assertThat(spy.hasIndirectCoverageChanges()).isTrue(); + assertThat(spy.hasIndirectCoverageChanges(CoverageMetric.LINE)).isFalse(); + assertThat(spy.hasIndirectCoverageChanges(CoverageMetric.BRANCH)).isTrue(); + + assertThat(spy.hasChangeCoverageDifference(CoverageMetric.LINE)).isFalse(); + assertThat(spy.hasChangeCoverageDifference(CoverageMetric.BRANCH)).isTrue(); + + assertThat(spy.hasDelta(CoverageMetric.LINE)).isFalse(); + assertThat(spy.hasDelta(CoverageMetric.BRANCH)).isTrue(); + assertThat(spy.getDifference()).contains(entry(CoverageMetric.BRANCH, percent50)); + + deltas.put(CoverageMetric.LINE, percent80); + + assertThat(spy.hasChangeCoverage()).isTrue(); + assertThat(spy.hasChangeCoverage(CoverageMetric.LINE)).isTrue(); + assertThat(spy.hasChangeCoverage(CoverageMetric.BRANCH)).isTrue(); + // FIXME: those values are not persisted yet +// assertThat(spy.getChangeCoverage(CoverageMetric.LINE)).isEqualTo(percent80); + + assertThat(spy.hasIndirectCoverageChanges()).isTrue(); + assertThat(spy.hasIndirectCoverageChanges(CoverageMetric.LINE)).isTrue(); + assertThat(spy.hasIndirectCoverageChanges(CoverageMetric.BRANCH)).isTrue(); + // FIXME: those values are not persisted yet +// assertThat(spy.getIndirectCoverageChanges(CoverageMetric.LINE)).isEqualTo(percent80); + + assertThat(spy.hasChangeCoverageDifference(CoverageMetric.LINE)).isTrue(); + assertThat(spy.hasChangeCoverageDifference(CoverageMetric.BRANCH)).isTrue(); + // FIXME: those values are not persisted yet +// assertThat(spy.getIndirectCoverageChanges(CoverageMetric.LINE)).isEqualTo(percent80); + + assertThat(spy.hasDelta(CoverageMetric.LINE)).isTrue(); + assertThat(spy.hasDelta(CoverageMetric.BRANCH)).isTrue(); + assertThat(spy.getDifference()).contains(entry(CoverageMetric.LINE, percent80)); + assertThat(spy.getDifference()).contains(entry(CoverageMetric.BRANCH, percent50)); + } + @Test void shouldCreateViewModel() { - Run build = mock(Run.class); CoverageNode root = new CoverageNode(COVERAGE_METRIC, "top-level"); - SortedMap metrics = new TreeMap<>(); - SortedMap changeCoverage = new TreeMap<>(); - SortedMap changeCoverageDelta = new TreeMap<>(); - SortedMap indirectCoverageChanges = new TreeMap<>(); - - CoverageBuildAction action = - new CoverageBuildAction(build, root, new HealthReport(), "-", metrics, changeCoverage, - changeCoverageDelta, indirectCoverageChanges, false); + CoverageBuildAction action = createEmptyAction(root); - assertThat(action.getTarget()).extracting(CoverageViewModel::getNode).isEqualTo(root); - assertThat(action.getTarget()).extracting(CoverageViewModel::getOwner).isEqualTo(build); + assertThat(action.getTarget()).extracting(CoverageViewModel::getNode).isSameAs(root); + assertThat(action.getTarget()).extracting(CoverageViewModel::getOwner).isSameAs(action.getOwner()); } @Test void shouldGetCoverageForSpecifiedMetric() { - CoverageBuildAction action = createCoverageBuildActionWithMocks(); + CoverageBuildAction action = createCoverageBuildAction(); + assertThat(action.hasCoverage(COVERAGE_METRIC)).isTrue(); assertThat(action.getCoverage(COVERAGE_METRIC)) .extracting(Coverage::getCoveredPercentage) .isEqualTo(COVERAGE_PERCENTAGE); + assertThat(action.formatCoverage(COVERAGE_METRIC)).isEqualTo("Line: 50.00%"); } @Test void shouldGetCoverageDifferenceForSpecifiedMetric() { - CoverageBuildAction action = createCoverageBuildActionWithMocks(); + CoverageBuildAction action = createCoverageBuildAction(); assertThat(action.hasDelta(COVERAGE_METRIC)).isTrue(); assertThat(action.hasDelta(CoverageMetric.BRANCH)).isFalse(); assertThat(action.getDifference()) @@ -73,14 +177,14 @@ void shouldGetCoverageDifferenceForSpecifiedMetric() { @Test void shouldGetChangeCoverageDifferences() { - CoverageBuildAction action = createCoverageBuildActionWithMocks(); + CoverageBuildAction action = createCoverageBuildAction(); assertThat(action.hasChangeCoverageDifference(COVERAGE_METRIC)).isTrue(); assertThat(action.getChangeCoverageDifference(COVERAGE_METRIC)).isEqualTo(COVERAGE_PERCENTAGE); } @Test void shouldGetChangeCoverageForSpecifiedMetric() { - CoverageBuildAction action = createChangeCoverageBuildActionWithMocks(); + CoverageBuildAction action = createChangeCoverageBuildAction(); assertThat(action.hasChangeCoverage()).isTrue(); assertThat(action.hasCodeChanges()).isTrue(); assertThat(action.hasChangeCoverage(COVERAGE_METRIC)).isTrue(); @@ -91,7 +195,7 @@ void shouldGetChangeCoverageForSpecifiedMetric() { @Test void shouldGetIndirectCoverageChangesForSpecifiedMetric() { - CoverageBuildAction action = createIndirectCoverageChangesBuildActionWithMocks(); + CoverageBuildAction action = createIndirectCoverageChangesBuildAction(); assertThat(action.hasIndirectCoverageChanges()).isTrue(); assertThat(action.hasIndirectCoverageChanges(COVERAGE_METRIC)).isTrue(); assertThat(action.getIndirectCoverageChanges(COVERAGE_METRIC)) @@ -101,51 +205,34 @@ void shouldGetIndirectCoverageChangesForSpecifiedMetric() { @Test void shouldFormatChangeCoverage() { - CoverageBuildAction action = createChangeCoverageBuildActionWithMocks(); + CoverageBuildAction action = createChangeCoverageBuildAction(); assertThat(action.formatChangeCoverage(COVERAGE_METRIC)).isEqualTo(getFormattedLineCoverage()); assertThat(action.formatChangeCoverageOverview()).isEqualTo(getFormattedLineCoverageOverview()); } @Test void shouldFormatIndirectCoverageChanges() { - CoverageBuildAction action = createIndirectCoverageChangesBuildActionWithMocks(); + CoverageBuildAction action = createIndirectCoverageChangesBuildAction(); assertThat(action.formatIndirectCoverageChanges(COVERAGE_METRIC)).isEqualTo(getFormattedLineCoverage()); assertThat(action.formatIndirectCoverageChangesOverview()).isEqualTo(getFormattedLineCoverageOverview()); } @Test void shouldFormatChangeCoverageDifference() { - CoverageBuildAction action = createChangeCoverageBuildActionWithMocks(); + CoverageBuildAction action = createChangeCoverageBuildAction(); String expected = COVERAGE_PERCENTAGE.formatDeltaPercentage(LOCALE); assertThat(action.formatChangeCoverageDifference(COVERAGE_METRIC)).isEqualTo(expected); } - @Test - void shouldFormatNotAvailableCoverageValues() { - CoverageNode root = createCoverageNode(COVERAGE_FRACTION, CoverageMetric.BRANCH); - when(root.hasChangeCoverage()).thenReturn(false); - when(root.hasIndirectCoverageChanges()).thenReturn(false); - - CoverageBuildAction action = createCoverageBuildAction(root); - - assertThat(action.formatChangeCoverage(CoverageMetric.BRANCH)).isEqualTo("Branch: n/a"); - assertThat(action.formatChangeCoverageOverview()).isEqualTo("n/a"); - - assertThat(action.formatIndirectCoverageChanges(CoverageMetric.BRANCH)).isEqualTo("Branch: n/a"); - assertThat(action.formatIndirectCoverageChangesOverview()).isEqualTo("n/a"); - - assertThat(action.formatChangeCoverageDifference(CoverageMetric.BRANCH)).isEqualTo("n/a"); - assertThat(action.formatDelta(CoverageMetric.BRANCH)).isEqualTo("n/a"); - } - /** * Creates a {@link CoverageBuildAction} which represents the coverage for the metric {@link #COVERAGE_METRIC} with * the value {@link #COVERAGE_PERCENTAGE}. * * @return the created action */ - private CoverageBuildAction createCoverageBuildActionWithMocks() { - CoverageNode root = createCoverageNode(COVERAGE_FRACTION, COVERAGE_METRIC); + private CoverageBuildAction createCoverageBuildAction() { + CoverageNode root = new CoverageNode(COVERAGE_METRIC, "Line"); + root.add(new CoverageLeaf(COVERAGE_METRIC, new CoverageBuilder().setCovered(1).setMissed(1).build())); return createCoverageBuildAction(root); } @@ -155,7 +242,7 @@ private CoverageBuildAction createCoverageBuildActionWithMocks() { * * @return the created action */ - private CoverageBuildAction createChangeCoverageBuildActionWithMocks() { + private CoverageBuildAction createChangeCoverageBuildAction() { CoverageNode root = createChangeCoverageNode(COVERAGE_FRACTION, COVERAGE_METRIC, COVERAGE_FILE_CHANGES, COVERAGE_LINE_CHANGES); return createCoverageBuildAction(root); @@ -167,7 +254,7 @@ private CoverageBuildAction createChangeCoverageBuildActionWithMocks() { * * @return the created action */ - private CoverageBuildAction createIndirectCoverageChangesBuildActionWithMocks() { + private CoverageBuildAction createIndirectCoverageChangesBuildAction() { CoverageNode root = createIndirectCoverageChangesNode(COVERAGE_FRACTION, COVERAGE_METRIC, COVERAGE_FILE_CHANGES, COVERAGE_LINE_CHANGES); return createCoverageBuildAction(root); @@ -183,7 +270,6 @@ private CoverageBuildAction createIndirectCoverageChangesBuildActionWithMocks() */ private CoverageBuildAction createCoverageBuildAction(final CoverageNode root) { Run build = createBuild(); - HealthReport healthReport = mock(HealthReport.class); TreeMap deltas = new TreeMap<>(); deltas.put(COVERAGE_METRIC, COVERAGE_PERCENTAGE); @@ -194,7 +280,7 @@ private CoverageBuildAction createCoverageBuildAction(final CoverageNode root) { TreeMap indirectCoverageChanges = new TreeMap<>(); indirectCoverageChanges.put(COVERAGE_METRIC, COVERAGE_PERCENTAGE); - return new CoverageBuildAction(build, root, healthReport, "-", deltas, + return new CoverageBuildAction(build, root, new HealthReport(), "-", deltas, changeCoverage, changeCoverageDifference, indirectCoverageChanges, false); } diff --git a/plugin/src/test/java/io/jenkins/plugins/coverage/model/CoverageNodeTest.java b/plugin/src/test/java/io/jenkins/plugins/coverage/model/CoverageNodeTest.java index bbf62f891..3ef8f197e 100644 --- a/plugin/src/test/java/io/jenkins/plugins/coverage/model/CoverageNodeTest.java +++ b/plugin/src/test/java/io/jenkins/plugins/coverage/model/CoverageNodeTest.java @@ -5,8 +5,8 @@ import java.util.Optional; import org.apache.commons.lang3.math.Fraction; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; +import org.junitpioneer.jupiter.DefaultLocale; import nl.jqno.equalsverifier.EqualsVerifier; import nl.jqno.equalsverifier.Warning; @@ -22,14 +22,10 @@ * @author Ullrich Hafner * @author Florian Orendi */ +@DefaultLocale("en") class CoverageNodeTest extends AbstractCoverageTest { private static final String PROJECT_NAME = "Java coding style: jacoco-codingstyle.xml"; - @BeforeAll - static void beforeAll() { - Locale.setDefault(Locale.ENGLISH); - } - @Test void shouldProvideEmptyPathForDefaultPackage() { PackageCoverageNode node = new PackageCoverageNode("-"); diff --git a/plugin/src/test/java/io/jenkins/plugins/coverage/model/CoverageTest.java b/plugin/src/test/java/io/jenkins/plugins/coverage/model/CoverageTest.java index 2c2685c7e..1e7283682 100644 --- a/plugin/src/test/java/io/jenkins/plugins/coverage/model/CoverageTest.java +++ b/plugin/src/test/java/io/jenkins/plugins/coverage/model/CoverageTest.java @@ -1,13 +1,11 @@ package io.jenkins.plugins.coverage.model; -import java.util.Locale; - import org.apache.commons.lang3.math.Fraction; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; +import org.junitpioneer.jupiter.DefaultLocale; import nl.jqno.equalsverifier.EqualsVerifier; @@ -21,12 +19,8 @@ * * @author Ullrich Hafner */ +@DefaultLocale("en") class CoverageTest { - @BeforeAll - static void beforeAll() { - Locale.setDefault(Locale.ENGLISH); - } - @Test void shouldProvideNullObject() { assertThat(NO_COVERAGE).isNotSet() diff --git a/plugin/src/test/java/io/jenkins/plugins/coverage/model/visualization/dashboard/CoverageColumnTest.java b/plugin/src/test/java/io/jenkins/plugins/coverage/model/visualization/dashboard/CoverageColumnTest.java index a914aae43..a2e57a2cd 100644 --- a/plugin/src/test/java/io/jenkins/plugins/coverage/model/visualization/dashboard/CoverageColumnTest.java +++ b/plugin/src/test/java/io/jenkins/plugins/coverage/model/visualization/dashboard/CoverageColumnTest.java @@ -1,11 +1,10 @@ package io.jenkins.plugins.coverage.model.visualization.dashboard; -import java.util.Locale; import java.util.Optional; import org.apache.commons.lang3.math.Fraction; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; +import org.junitpioneer.jupiter.DefaultLocale; import hudson.Functions; import hudson.model.Job; @@ -28,13 +27,8 @@ * * @author Florian Orendi */ +@DefaultLocale("en") class CoverageColumnTest { - - @BeforeAll - static void beforeAll() { - Locale.setDefault(Locale.ENGLISH); - } - private static final String COLUMN_NAME = "Test Column"; private static final ProjectCoverage PROJECT_COVERAGE = new ProjectCoverage(); private static final ProjectCoverageDelta PROJECT_COVERAGE_DELTA = new ProjectCoverageDelta();