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();