diff --git a/plugin/pom.xml b/plugin/pom.xml
index 966b1175d..77a4cb3ca 100644
--- a/plugin/pom.xml
+++ b/plugin/pom.xml
@@ -19,7 +19,7 @@
https://github.com/jenkinsci/code-coverage-api-plugin
- 4.3.0
+ 4.2.2
-SNAPSHOT
jenkinsci/code-coverage-api-plugin
diff --git a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/model/ElementFormatter.java b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/model/ElementFormatter.java
index 506a25aea..f6bd4477d 100644
--- a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/model/ElementFormatter.java
+++ b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/model/ElementFormatter.java
@@ -15,6 +15,7 @@
import edu.hm.hafner.coverage.IntegerValue;
import edu.hm.hafner.coverage.Metric;
import edu.hm.hafner.coverage.Percentage;
+import edu.hm.hafner.coverage.SafeFraction;
import edu.hm.hafner.coverage.Value;
import hudson.Functions;
@@ -348,7 +349,7 @@ public String formatDelta(final Fraction fraction, final Metric metric, final Lo
|| metric.equals(Metric.LOC)) {
return String.format(locale, "%+d", fraction.intValue());
}
- return String.format(locale, "%+.2f%%", fraction.multiplyBy(HUNDRED).doubleValue());
+ return String.format(locale, "%+.2f%%", new SafeFraction(fraction).multiplyBy(HUNDRED).doubleValue());
}
/**
diff --git a/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/model/ElementFormatterTest.java b/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/model/ElementFormatterTest.java
new file mode 100644
index 000000000..d46e68401
--- /dev/null
+++ b/plugin/src/test/java/io/jenkins/plugins/coverage/metrics/model/ElementFormatterTest.java
@@ -0,0 +1,22 @@
+package io.jenkins.plugins.coverage.metrics.model;
+
+import java.util.Locale;
+
+import org.apache.commons.lang3.math.Fraction;
+import org.junit.jupiter.api.Test;
+
+import edu.hm.hafner.coverage.Metric;
+
+import static org.assertj.core.api.Assertions.*;
+
+class ElementFormatterTest {
+ @Test
+ void shouldHandleOverflowGracefully() {
+ var formatter = new ElementFormatter();
+
+ var fraction = Fraction.getFraction(Integer.MAX_VALUE - 1, Integer.MAX_VALUE - 1);
+ var delta = formatter.formatDelta(fraction, Metric.LINE, Locale.ENGLISH);
+
+ assertThat(delta).isEqualTo("+100.00%");
+ }
+}