From 2b01fe1a95b0d06aec5e1bc78df4eb7d789167e3 Mon Sep 17 00:00:00 2001 From: Aman Jain <96762409+Amanjain4269@users.noreply.github.com> Date: Wed, 11 Oct 2023 17:56:53 +0000 Subject: [PATCH 1/5] Do not use color for unchanged coverage #777 The isPostiveTrend() is changed to getTrend() and corresponding file changes are made as per the PR - Do not use color for unchanged coverage #777 --- .../metrics/steps/CoverageBuildAction.java | 23 +++++--- .../resources/coverage/coverage-summary.jelly | 7 ++- .../steps/CoverageBuildActionTest.java | 54 +++++++++++++++++++ 3 files changed, 76 insertions(+), 8 deletions(-) diff --git a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildAction.java b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildAction.java index 0262cc5fb..4ac75d5c8 100644 --- a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildAction.java +++ b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildAction.java @@ -544,18 +544,29 @@ public String formatDelta(final Baseline baseline, final Metric metric) { * @param metric * the metric to check * - * @return {@code true} if the trend is positive, {@code false} otherwise + * @return {@code 1} if the trend is positive, {@code -1} if the trend is negative, {@code 0} otherwise */ @SuppressWarnings("unused") // Called by jelly view - public boolean isPositiveTrend(final Baseline baseline, final Metric metric) { + public int getTrend(final Baseline baseline, final Metric metric) { var delta = getDelta(baseline, metric); if (delta.isPresent()) { - if (delta.get().compareTo(Fraction.ZERO) > 0) { - return metric.getTendency() == MetricTendency.LARGER_IS_BETTER; + double deltaValue = delta.get().doubleValue(); + // to apply rounding off + double roundedDelta = Math.round(deltaValue * 100.0) / 100.0; + if (roundedDelta < 0){ + // for var(-red) + return -1; + } + else if (roundedDelta > 0){ + // for var(--green) + return 1; + } + else{ + // for var(--text-color) + return 0; } - return metric.getTendency() == MetricTendency.SMALLER_IS_BETTER; } - return true; + return 0; // default to zero } /** diff --git a/plugin/src/main/resources/coverage/coverage-summary.jelly b/plugin/src/main/resources/coverage/coverage-summary.jelly index 59fa73de7..54ebecad6 100644 --- a/plugin/src/main/resources/coverage/coverage-summary.jelly +++ b/plugin/src/main/resources/coverage/coverage-summary.jelly @@ -60,11 +60,14 @@
  • ${formatter.formatValueWithMetric(value)} - + - + + + + (${it.formatDelta(baseline, value.metric)}) diff --git a/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildActionTest.java b/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildActionTest.java index 7d9b2d635..49eab65a9 100644 --- a/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildActionTest.java +++ b/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildActionTest.java @@ -30,6 +30,32 @@ */ @DefaultLocale("en") class CoverageBuildActionTest { + private CoverageBuildAction createCoverageBuildActionWithDelta(Metric metric) { + Node module = new ModuleNode("module"); + + var coverageBuilder = new CoverageBuilder(); + var percent50 = coverageBuilder.setMetric(Metric.BRANCH).setCovered(1).setMissed(1).build(); + var percent80 = coverageBuilder.setMetric(Metric.LINE).setCovered(8).setMissed(2).build(); + var percent30 = coverageBuilder.setMetric(Metric.COMPLEXITY).setCovered(3).setMissed(7).build(); + + module.addValue(percent50); + module.addValue(percent80); + + var deltas = new TreeMap(); + var lineDelta = percent80.getCoveredPercentage().subtract(percent50.getCoveredPercentage()); + deltas.put(Metric.LINE, lineDelta); + var branchDelta = percent50.getCoveredPercentage().subtract(percent80.getCoveredPercentage()); + deltas.put(Metric.BRANCH, branchDelta); + var complexityDelta = percent30.getCoveredPercentage().subtract(percent30.getCoveredPercentage()); + deltas.put(Metric.COMPLEXITY, complexityDelta); + + var coverages = List.of(percent50, percent80, percent30); + + return spy(new CoverageBuildAction(mock(FreeStyleBuild.class), CoverageRecorder.DEFAULT_ID, + StringUtils.EMPTY, StringUtils.EMPTY, module, new QualityGateResult(), + createLog(), "-", deltas, coverages, deltas, coverages, deltas, coverages, false)); + } + @Test void shouldNotLoadResultIfCoverageValuesArePersistedInAction() { Node module = new ModuleNode("module"); @@ -88,4 +114,32 @@ void shouldCreateViewModel() { assertThat(action.getTarget()).extracting(CoverageViewModel::getNode).isSameAs(root); assertThat(action.getTarget()).extracting(CoverageViewModel::getOwner).isSameAs(action.getOwner()); } + + @Test + void shouldReturnPositiveTrendForLineMetric() { + CoverageBuildAction action = createCoverageBuildActionWithDelta(Metric.LINE); + int trend = action.getTrend(Baseline.PROJECT, Metric.LINE); + assertThat(trend).isEqualTo(1); + } + + @Test + void shouldReturnNegativeTrendForBranchMetric() { + CoverageBuildAction action = createCoverageBuildActionWithDelta(Metric.BRANCH); + int trend = action.getTrend(Baseline.PROJECT, Metric.BRANCH); + assertThat(trend).isEqualTo(-1); + } + + @Test + void shouldReturnZeroForZeroDelta() { + CoverageBuildAction action = createCoverageBuildActionWithDelta(Metric.COMPLEXITY); + int trend = action.getTrend(Baseline.PROJECT, Metric.COMPLEXITY); + assertThat(trend).isEqualTo(0); + } + + @Test + void shouldReturnZeroWhenDeltaIsNotPresent() { + CoverageBuildAction action = createCoverageBuildActionWithDelta(Metric.METHOD); + int trend = action.getTrend(Baseline.PROJECT, Metric.METHOD); + assertThat(trend).isEqualTo(0); + } } From c81ac95da3642ce3dfed8f1e083eaff32f55e4a1 Mon Sep 17 00:00:00 2001 From: Aman Jain <96762409+Amanjain4269@users.noreply.github.com> Date: Thu, 12 Oct 2023 12:53:48 +0000 Subject: [PATCH 2/5] Updated the code per maintainer's feedback. Some changes are made again as per the feedback in the draft PR Do not use color for unchanged coverage #777 --- .../metrics/steps/CoverageBuildAction.java | 20 +++---- .../steps/CoverageBuildActionTest.java | 58 +++++++++++++------ 2 files changed, 47 insertions(+), 31 deletions(-) diff --git a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildAction.java b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildAction.java index 4ac75d5c8..cafe35810 100644 --- a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildAction.java +++ b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildAction.java @@ -544,27 +544,23 @@ public String formatDelta(final Baseline baseline, final Metric metric) { * @param metric * the metric to check * - * @return {@code 1} if the trend is positive, {@code -1} if the trend is negative, {@code 0} otherwise + * @return {@code roundedDeltaValue} if the trend is positive or negative, {@code 0} otherwise */ @SuppressWarnings("unused") // Called by jelly view - public int getTrend(final Baseline baseline, final Metric metric) { + public double getTrend(final Baseline baseline, final Metric metric) { var delta = getDelta(baseline, metric); if (delta.isPresent()) { double deltaValue = delta.get().doubleValue(); - // to apply rounding off + // to apply rounding off for boundary delta values double roundedDelta = Math.round(deltaValue * 100.0) / 100.0; - if (roundedDelta < 0){ - // for var(-red) - return -1; - } - else if (roundedDelta > 0){ - // for var(--green) - return 1; - } - else{ + if (-0.1 < roundedDelta && roundedDelta < 0.1) { // for var(--text-color) return 0; } + else { + // for var(--red or --green) + return roundedDelta; + } } return 0; // default to zero } diff --git a/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildActionTest.java b/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildActionTest.java index 49eab65a9..24f868b50 100644 --- a/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildActionTest.java +++ b/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildActionTest.java @@ -30,26 +30,32 @@ */ @DefaultLocale("en") class CoverageBuildActionTest { - private CoverageBuildAction createCoverageBuildActionWithDelta(Metric metric) { + private CoverageBuildAction createCoverageBuildActionWithDelta() { Node module = new ModuleNode("module"); var coverageBuilder = new CoverageBuilder(); var percent50 = coverageBuilder.setMetric(Metric.BRANCH).setCovered(1).setMissed(1).build(); var percent80 = coverageBuilder.setMetric(Metric.LINE).setCovered(8).setMissed(2).build(); - var percent30 = coverageBuilder.setMetric(Metric.COMPLEXITY).setCovered(3).setMissed(7).build(); - + var percent30 = coverageBuilder.setMetric(Metric.INSTRUCTION).setCovered(3).setMissed(7).build(); + var percent35 = coverageBuilder.setMetric(Metric.CLASS).setCovered(35).setMissed(65).build(); + module.addValue(percent50); module.addValue(percent80); - + module.addValue(percent30); + module.addValue(percent35); + var deltas = new TreeMap(); var lineDelta = percent80.getCoveredPercentage().subtract(percent50.getCoveredPercentage()); deltas.put(Metric.LINE, lineDelta); var branchDelta = percent50.getCoveredPercentage().subtract(percent80.getCoveredPercentage()); deltas.put(Metric.BRANCH, branchDelta); - var complexityDelta = percent30.getCoveredPercentage().subtract(percent30.getCoveredPercentage()); - deltas.put(Metric.COMPLEXITY, complexityDelta); + var instructionDelta = percent30.getCoveredPercentage().subtract(percent30.getCoveredPercentage()); + deltas.put(Metric.INSTRUCTION, instructionDelta); + var classDelta = percent35.getCoveredPercentage().subtract(percent30.getCoveredPercentage()); + deltas.put(Metric.CLASS, classDelta); + deltas.put(Metric.FILE, Fraction.getFraction(99,1000)); // to test for boundary case - var coverages = List.of(percent50, percent80, percent30); + var coverages = List.of(percent50, percent80, percent30, percent35); return spy(new CoverageBuildAction(mock(FreeStyleBuild.class), CoverageRecorder.DEFAULT_ID, StringUtils.EMPTY, StringUtils.EMPTY, module, new QualityGateResult(), @@ -117,29 +123,43 @@ void shouldCreateViewModel() { @Test void shouldReturnPositiveTrendForLineMetric() { - CoverageBuildAction action = createCoverageBuildActionWithDelta(Metric.LINE); - int trend = action.getTrend(Baseline.PROJECT, Metric.LINE); - assertThat(trend).isEqualTo(1); + CoverageBuildAction action = createCoverageBuildActionWithDelta(); + double trend = action.getTrend(Baseline.PROJECT, Metric.LINE); + assertThat(trend).isEqualTo(0.3); // deltaValue = 0.3 } @Test void shouldReturnNegativeTrendForBranchMetric() { - CoverageBuildAction action = createCoverageBuildActionWithDelta(Metric.BRANCH); - int trend = action.getTrend(Baseline.PROJECT, Metric.BRANCH); - assertThat(trend).isEqualTo(-1); + CoverageBuildAction action = createCoverageBuildActionWithDelta(); + double trend = action.getTrend(Baseline.PROJECT, Metric.BRANCH); + assertThat(trend).isEqualTo(-0.3); // deltaValue = -0.3 } @Test void shouldReturnZeroForZeroDelta() { - CoverageBuildAction action = createCoverageBuildActionWithDelta(Metric.COMPLEXITY); - int trend = action.getTrend(Baseline.PROJECT, Metric.COMPLEXITY); - assertThat(trend).isEqualTo(0); + CoverageBuildAction action = createCoverageBuildActionWithDelta(); + double trend = action.getTrend(Baseline.PROJECT, Metric.INSTRUCTION); + assertThat(trend).isEqualTo(0.0); // deltaValue = 0.0 } @Test void shouldReturnZeroWhenDeltaIsNotPresent() { - CoverageBuildAction action = createCoverageBuildActionWithDelta(Metric.METHOD); - int trend = action.getTrend(Baseline.PROJECT, Metric.METHOD); - assertThat(trend).isEqualTo(0); + CoverageBuildAction action = createCoverageBuildActionWithDelta(); + double trend = action.getTrend(Baseline.PROJECT, Metric.METHOD); + assertThat(trend).isEqualTo(0); // deltaValue is not present + } + + @Test + void shouldReturnZeroForDeltaWithinBoundaries() { + CoverageBuildAction action = createCoverageBuildActionWithDelta(); + double trend = action.getTrend(Baseline.PROJECT, Metric.CLASS); + assertThat(trend).isEqualTo(0); // deltaValue = 0.05 + } + + @Test + void shouldReturnPositiveTrendForBoundaryDeltaValue() { + CoverageBuildAction action = createCoverageBuildActionWithDelta(); + double trend = action.getTrend(Baseline.PROJECT, Metric.FILE); + assertThat(trend).isEqualTo(0.1); // deltaValue = 0.099 (will be rounded off) } } From 023f33a5c4c3052727d2fc4d11a53a689a6a09f0 Mon Sep 17 00:00:00 2001 From: Aman Jain <96762409+Amanjain4269@users.noreply.github.com> Date: Fri, 13 Oct 2023 18:38:53 +0000 Subject: [PATCH 3/5] Updated the TestCases as per the reviews. This is regarding the PR Do not use color for unchanged coverage #777 --- .../metrics/steps/CoverageBuildAction.java | 8 +-- .../resources/coverage/coverage-summary.jelly | 8 +-- .../steps/CoverageBuildActionTest.java | 67 +++++-------------- 3 files changed, 22 insertions(+), 61 deletions(-) diff --git a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildAction.java b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildAction.java index cafe35810..c59dfe232 100644 --- a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildAction.java +++ b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildAction.java @@ -544,22 +544,20 @@ public String formatDelta(final Baseline baseline, final Metric metric) { * @param metric * the metric to check * - * @return {@code roundedDeltaValue} if the trend is positive or negative, {@code 0} otherwise + * @return a positive value if the trend is positive, a negative value if the trend is negative, or {@code 0} if there is no significant change in the trend */ @SuppressWarnings("unused") // Called by jelly view public double getTrend(final Baseline baseline, final Metric metric) { var delta = getDelta(baseline, metric); if (delta.isPresent()) { double deltaValue = delta.get().doubleValue(); - // to apply rounding off for boundary delta values - double roundedDelta = Math.round(deltaValue * 100.0) / 100.0; - if (-0.1 < roundedDelta && roundedDelta < 0.1) { + if (-0.001 < deltaValue && deltaValue < 0.001) { // for var(--text-color) return 0; } else { // for var(--red or --green) - return roundedDelta; + return deltaValue; } } return 0; // default to zero diff --git a/plugin/src/main/resources/coverage/coverage-summary.jelly b/plugin/src/main/resources/coverage/coverage-summary.jelly index 54ebecad6..e0a4b7c3e 100644 --- a/plugin/src/main/resources/coverage/coverage-summary.jelly +++ b/plugin/src/main/resources/coverage/coverage-summary.jelly @@ -60,12 +60,12 @@
  • ${formatter.formatValueWithMetric(value)} - + - - + + - + diff --git a/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildActionTest.java b/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildActionTest.java index 24f868b50..09a6eafb0 100644 --- a/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildActionTest.java +++ b/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildActionTest.java @@ -2,6 +2,7 @@ import java.util.List; import java.util.TreeMap; +import java.util.Optional; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.Fraction; @@ -30,32 +31,18 @@ */ @DefaultLocale("en") class CoverageBuildActionTest { - private CoverageBuildAction createCoverageBuildActionWithDelta() { + private CoverageBuildAction createCoverageBuildActionWithDelta(final Baseline Baseline, final Metric metric, Optional delta) { Node module = new ModuleNode("module"); var coverageBuilder = new CoverageBuilder(); - var percent50 = coverageBuilder.setMetric(Metric.BRANCH).setCovered(1).setMissed(1).build(); - var percent80 = coverageBuilder.setMetric(Metric.LINE).setCovered(8).setMissed(2).build(); - var percent30 = coverageBuilder.setMetric(Metric.INSTRUCTION).setCovered(3).setMissed(7).build(); - var percent35 = coverageBuilder.setMetric(Metric.CLASS).setCovered(35).setMissed(65).build(); - - module.addValue(percent50); - module.addValue(percent80); - module.addValue(percent30); - module.addValue(percent35); - + var percent = coverageBuilder.setMetric(metric).setCovered(1).setMissed(1).build(); + + module.addValue(percent); + var deltas = new TreeMap(); - var lineDelta = percent80.getCoveredPercentage().subtract(percent50.getCoveredPercentage()); - deltas.put(Metric.LINE, lineDelta); - var branchDelta = percent50.getCoveredPercentage().subtract(percent80.getCoveredPercentage()); - deltas.put(Metric.BRANCH, branchDelta); - var instructionDelta = percent30.getCoveredPercentage().subtract(percent30.getCoveredPercentage()); - deltas.put(Metric.INSTRUCTION, instructionDelta); - var classDelta = percent35.getCoveredPercentage().subtract(percent30.getCoveredPercentage()); - deltas.put(Metric.CLASS, classDelta); - deltas.put(Metric.FILE, Fraction.getFraction(99,1000)); // to test for boundary case + delta.ifPresent(d -> deltas.put(metric, d)); - var coverages = List.of(percent50, percent80, percent30, percent35); + var coverages = List.of(percent); return spy(new CoverageBuildAction(mock(FreeStyleBuild.class), CoverageRecorder.DEFAULT_ID, StringUtils.EMPTY, StringUtils.EMPTY, module, new QualityGateResult(), @@ -123,43 +110,19 @@ void shouldCreateViewModel() { @Test void shouldReturnPositiveTrendForLineMetric() { - CoverageBuildAction action = createCoverageBuildActionWithDelta(); - double trend = action.getTrend(Baseline.PROJECT, Metric.LINE); - assertThat(trend).isEqualTo(0.3); // deltaValue = 0.3 - } - - @Test - void shouldReturnNegativeTrendForBranchMetric() { - CoverageBuildAction action = createCoverageBuildActionWithDelta(); - double trend = action.getTrend(Baseline.PROJECT, Metric.BRANCH); - assertThat(trend).isEqualTo(-0.3); // deltaValue = -0.3 - } - - @Test - void shouldReturnZeroForZeroDelta() { - CoverageBuildAction action = createCoverageBuildActionWithDelta(); - double trend = action.getTrend(Baseline.PROJECT, Metric.INSTRUCTION); - assertThat(trend).isEqualTo(0.0); // deltaValue = 0.0 - } - - @Test - void shouldReturnZeroWhenDeltaIsNotPresent() { - CoverageBuildAction action = createCoverageBuildActionWithDelta(); - double trend = action.getTrend(Baseline.PROJECT, Metric.METHOD); - assertThat(trend).isEqualTo(0); // deltaValue is not present + CoverageBuildAction action = createCoverageBuildActionWithDelta(Baseline.PROJECT, Metric.LINE, Optional.of(Fraction.getFraction(1,1000))); + assertThat(action.getTrend(Baseline.PROJECT, Metric.LINE)).isPositive(); } @Test void shouldReturnZeroForDeltaWithinBoundaries() { - CoverageBuildAction action = createCoverageBuildActionWithDelta(); - double trend = action.getTrend(Baseline.PROJECT, Metric.CLASS); - assertThat(trend).isEqualTo(0); // deltaValue = 0.05 + CoverageBuildAction action = createCoverageBuildActionWithDelta(Baseline.PROJECT, Metric.LINE, Optional.of(Fraction.getFraction(9,10000))); + assertThat(action.getTrend(Baseline.PROJECT, Metric.LINE)).isZero(); } @Test - void shouldReturnPositiveTrendForBoundaryDeltaValue() { - CoverageBuildAction action = createCoverageBuildActionWithDelta(); - double trend = action.getTrend(Baseline.PROJECT, Metric.FILE); - assertThat(trend).isEqualTo(0.1); // deltaValue = 0.099 (will be rounded off) + void shouldReturnZeroWhenDeltaIsNotPresentForGivenMetric() { + CoverageBuildAction action = createCoverageBuildActionWithDelta(Baseline.PROJECT, Metric.LINE, Optional.empty()); + assertThat(action.getTrend(Baseline.PROJECT, Metric.LINE)).isZero(); } } From 8781e08b00adc880aacea0078ac90b5222799cb1 Mon Sep 17 00:00:00 2001 From: Aman Jain <96762409+Amanjain4269@users.noreply.github.com> Date: Sun, 15 Oct 2023 19:11:52 +0000 Subject: [PATCH 4/5] Made the changes Final chages are made as per the reviews and warnings. --- .../main/resources/coverage/coverage-summary.jelly | 8 ++++---- .../metrics/steps/CoverageBuildActionTest.java | 13 ++++++++++--- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/plugin/src/main/resources/coverage/coverage-summary.jelly b/plugin/src/main/resources/coverage/coverage-summary.jelly index e0a4b7c3e..54ebecad6 100644 --- a/plugin/src/main/resources/coverage/coverage-summary.jelly +++ b/plugin/src/main/resources/coverage/coverage-summary.jelly @@ -60,12 +60,12 @@
  • ${formatter.formatValueWithMetric(value)} - + - - + + - + diff --git a/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildActionTest.java b/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildActionTest.java index 09a6eafb0..04cdc1d61 100644 --- a/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildActionTest.java +++ b/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildActionTest.java @@ -31,7 +31,8 @@ */ @DefaultLocale("en") class CoverageBuildActionTest { - private CoverageBuildAction createCoverageBuildActionWithDelta(final Baseline Baseline, final Metric metric, Optional delta) { + @SuppressWarnings("unused") + private CoverageBuildAction createCoverageBuildActionWithDelta(final Baseline baseline, final Metric metric, final Optional delta) { Node module = new ModuleNode("module"); var coverageBuilder = new CoverageBuilder(); @@ -110,13 +111,19 @@ void shouldCreateViewModel() { @Test void shouldReturnPositiveTrendForLineMetric() { - CoverageBuildAction action = createCoverageBuildActionWithDelta(Baseline.PROJECT, Metric.LINE, Optional.of(Fraction.getFraction(1,1000))); + CoverageBuildAction action = createCoverageBuildActionWithDelta(Baseline.PROJECT, Metric.LINE, Optional.of(Fraction.getFraction(1, 1000))); assertThat(action.getTrend(Baseline.PROJECT, Metric.LINE)).isPositive(); } + @Test + void shouldReturnNegativeTrendForLineMetric() { + CoverageBuildAction action = createCoverageBuildActionWithDelta(Baseline.PROJECT, Metric.LINE, Optional.of(Fraction.getFraction(-1, 1000))); + assertThat(action.getTrend(Baseline.PROJECT, Metric.LINE)).isNegative(); + } + @Test void shouldReturnZeroForDeltaWithinBoundaries() { - CoverageBuildAction action = createCoverageBuildActionWithDelta(Baseline.PROJECT, Metric.LINE, Optional.of(Fraction.getFraction(9,10000))); + CoverageBuildAction action = createCoverageBuildActionWithDelta(Baseline.PROJECT, Metric.LINE, Optional.of(Fraction.getFraction(9, 10_000))); assertThat(action.getTrend(Baseline.PROJECT, Metric.LINE)).isZero(); } From c0a2b1c9ae308eabafd1591fe5b54f6bd0dfcb2b Mon Sep 17 00:00:00 2001 From: Aman Jain <96762409+Amanjain4269@users.noreply.github.com> Date: Mon, 16 Oct 2023 16:01:09 +0000 Subject: [PATCH 5/5] Made final changes --- .../coverage/metrics/steps/CoverageBuildAction.java | 1 - .../main/resources/coverage/coverage-summary.jelly | 4 ++-- .../metrics/steps/CoverageBuildActionTest.java | 11 +++++------ 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildAction.java b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildAction.java index c59dfe232..06053099f 100644 --- a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildAction.java +++ b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildAction.java @@ -18,7 +18,6 @@ import org.apache.commons.lang3.math.Fraction; import edu.hm.hafner.coverage.Metric; -import edu.hm.hafner.coverage.Metric.MetricTendency; import edu.hm.hafner.coverage.Node; import edu.hm.hafner.coverage.Value; import edu.hm.hafner.echarts.ChartModelConfiguration; diff --git a/plugin/src/main/resources/coverage/coverage-summary.jelly b/plugin/src/main/resources/coverage/coverage-summary.jelly index 54ebecad6..3d25a3202 100644 --- a/plugin/src/main/resources/coverage/coverage-summary.jelly +++ b/plugin/src/main/resources/coverage/coverage-summary.jelly @@ -60,10 +60,10 @@
  • ${formatter.formatValueWithMetric(value)} - + - + diff --git a/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildActionTest.java b/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildActionTest.java index 04cdc1d61..8d16122c5 100644 --- a/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildActionTest.java +++ b/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildActionTest.java @@ -31,8 +31,7 @@ */ @DefaultLocale("en") class CoverageBuildActionTest { - @SuppressWarnings("unused") - private CoverageBuildAction createCoverageBuildActionWithDelta(final Baseline baseline, final Metric metric, final Optional delta) { + private CoverageBuildAction createCoverageBuildActionWithDelta(final Metric metric, final Optional delta) { Node module = new ModuleNode("module"); var coverageBuilder = new CoverageBuilder(); @@ -111,25 +110,25 @@ void shouldCreateViewModel() { @Test void shouldReturnPositiveTrendForLineMetric() { - CoverageBuildAction action = createCoverageBuildActionWithDelta(Baseline.PROJECT, Metric.LINE, Optional.of(Fraction.getFraction(1, 1000))); + CoverageBuildAction action = createCoverageBuildActionWithDelta(Metric.LINE, Optional.of(Fraction.getFraction(1, 1000))); assertThat(action.getTrend(Baseline.PROJECT, Metric.LINE)).isPositive(); } @Test void shouldReturnNegativeTrendForLineMetric() { - CoverageBuildAction action = createCoverageBuildActionWithDelta(Baseline.PROJECT, Metric.LINE, Optional.of(Fraction.getFraction(-1, 1000))); + CoverageBuildAction action = createCoverageBuildActionWithDelta(Metric.LINE, Optional.of(Fraction.getFraction(-1, 1000))); assertThat(action.getTrend(Baseline.PROJECT, Metric.LINE)).isNegative(); } @Test void shouldReturnZeroForDeltaWithinBoundaries() { - CoverageBuildAction action = createCoverageBuildActionWithDelta(Baseline.PROJECT, Metric.LINE, Optional.of(Fraction.getFraction(9, 10_000))); + CoverageBuildAction action = createCoverageBuildActionWithDelta(Metric.LINE, Optional.of(Fraction.getFraction(9, 10_000))); assertThat(action.getTrend(Baseline.PROJECT, Metric.LINE)).isZero(); } @Test void shouldReturnZeroWhenDeltaIsNotPresentForGivenMetric() { - CoverageBuildAction action = createCoverageBuildActionWithDelta(Baseline.PROJECT, Metric.LINE, Optional.empty()); + CoverageBuildAction action = createCoverageBuildActionWithDelta(Metric.LINE, Optional.empty()); assertThat(action.getTrend(Baseline.PROJECT, Metric.LINE)).isZero(); } }