diff --git a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageQualityGateEvaluator.java b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageQualityGateEvaluator.java index 0faf54920..4f4d958b5 100644 --- a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageQualityGateEvaluator.java +++ b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageQualityGateEvaluator.java @@ -36,7 +36,7 @@ protected void evaluate(final CoverageQualityGate qualityGate, final QualityGate result.add(qualityGate, status, FORMATTER.format(actualValue, Locale.ENGLISH)); } else { - result.add(qualityGate, qualityGate.getStatus(), "n/a"); + result.add(qualityGate, QualityGateStatus.INACTIVE, "n/a"); } } } diff --git a/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/AbstractCoverageTest.java b/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/AbstractCoverageTest.java index 0f1fd9f5c..c19ec4bae 100644 --- a/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/AbstractCoverageTest.java +++ b/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/AbstractCoverageTest.java @@ -75,6 +75,16 @@ public static CoverageStatistics createStatistics() { fillValues(), fillDeltas()); } + /** + * Creates coverage statistics that can be used in test cases. + * + * @return the coverage statistics + */ + public static CoverageStatistics createOnlyProjectStatistics() { + return new CoverageStatistics(fillValues(), + new TreeMap<>(), List.of(), new TreeMap<>(), List.of(), new TreeMap<>()); + } + private static List fillValues() { var builder = new CoverageBuilder(); return List.of(builder.setMetric(Metric.FILE).setCovered(3).setMissed(1).build(), diff --git a/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/steps/CoverageQualityGateEvaluatorTest.java b/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/steps/CoverageQualityGateEvaluatorTest.java index 5cf61091a..1af65e2fc 100644 --- a/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/steps/CoverageQualityGateEvaluatorTest.java +++ b/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/steps/CoverageQualityGateEvaluatorTest.java @@ -66,6 +66,30 @@ void shouldPassForTooLowThresholds() { "-> [Modified files (difference to overall project) - Line Coverage]: ≪Success≫ - (Actual value: +5.00%, Quality gate: -10.00)"); } + @Test + void shouldSkipIfValueNotDefined() { + Collection qualityGates = new ArrayList<>(); + + qualityGates.add(new CoverageQualityGate(0, Metric.FILE, Baseline.MODIFIED_LINES, QualityGateCriticality.UNSTABLE)); + qualityGates.add(new CoverageQualityGate(0, Metric.FILE, Baseline.MODIFIED_FILES, QualityGateCriticality.UNSTABLE)); + qualityGates.add(new CoverageQualityGate(0, Metric.LINE, Baseline.PROJECT_DELTA, QualityGateCriticality.UNSTABLE)); + qualityGates.add(new CoverageQualityGate(0, Metric.FILE, Baseline.MODIFIED_LINES_DELTA, QualityGateCriticality.UNSTABLE)); + qualityGates.add(new CoverageQualityGate(0, Metric.LINE, Baseline.MODIFIED_FILES_DELTA, QualityGateCriticality.UNSTABLE)); + + CoverageQualityGateEvaluator evaluator = new CoverageQualityGateEvaluator(qualityGates, createOnlyProjectStatistics()); + + assertThat(evaluator).isEnabled(); + + QualityGateResult result = evaluator.evaluate(); + + assertThat(result).hasOverallStatus(QualityGateStatus.INACTIVE).isInactive().hasMessages( + "-> [Modified code lines - File Coverage]: ≪Not built≫ - (Actual value: n/a, Quality gate: 0.00)", + "-> [Modified files - File Coverage]: ≪Not built≫ - (Actual value: n/a, Quality gate: 0.00)", + "-> [Overall project (difference to reference job) - Line Coverage]: ≪Not built≫ - (Actual value: n/a, Quality gate: 0.00)", + "-> [Modified code lines (difference to modified files) - File Coverage]: ≪Not built≫ - (Actual value: n/a, Quality gate: 0.00)", + "-> [Modified files (difference to overall project) - Line Coverage]: ≪Not built≫ - (Actual value: n/a, Quality gate: 0.00)"); + } + @Test void shouldReportUnstableIfBelowThreshold() { Collection qualityGates = new ArrayList<>(); @@ -152,18 +176,6 @@ void shouldOverwriteStatus() { assertThatStatusWillBeOverwritten(evaluator); } - @Test - void shouldFailIfValueIsNotFound() { - Collection qualityGates = new ArrayList<>(); - - qualityGates.add(new CoverageQualityGate(50.0, Metric.PACKAGE, Baseline.PROJECT, QualityGateCriticality.FAILURE)); - - CoverageQualityGateEvaluator evaluator = new CoverageQualityGateEvaluator(qualityGates, createStatistics()); - QualityGateResult result = evaluator.evaluate(); - assertThat(result).hasOverallStatus(QualityGateStatus.FAILED).isNotSuccessful().hasMessages( - "-> [Overall project - Package Coverage]: ≪Failed≫ - (Actual value: n/a, Quality gate: 50.00)"); - } - @Test void shouldAddAllQualityGates() {