-
-
Notifications
You must be signed in to change notification settings - Fork 762
Milestone
Description
Describe the bug
97b642a breaks thread safety of AbstractDateAssert by removing synchronized (DEFAULT_DATE_FORMATS) {. The introduced synchronized on the method doesn't work if there are multiple instances because defaultDateFormats is static.
- assertj core version: 3.27.3
- java version: 21.0.8
- test framework version: junit 5.13.4
- os (if relevant): not relevant
Test case reproducing the bug
Add a test case showing the bug that we can run
assertThat(someDate).isNotNull().isEqualTo("2022-01-08");Run with:
-Djunit.jupiter.execution.parallel.enabled=true
-Djunit.jupiter.execution.parallel.mode.default=concurrent
-Djunit.jupiter.execution.parallel.mode.classes.default=concurrent
The exceptions seen vary:
java.lang.NumberFormatException: For input string: ".11E11E1"
at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2054)
at java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.base/java.lang.Double.parseDouble(Double.java:792)
at java.base/java.text.DigitList.getDouble(DigitList.java:164)
at java.base/java.text.DecimalFormat.parse(DecimalFormat.java:2233)
at java.base/java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:1937)
at java.base/java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1545)
at java.base/java.text.DateFormat.parse(DateFormat.java:397)
at org.assertj.core.api.AbstractDateAssert.parseDateWith(AbstractDateAssert.java:3616)
at org.assertj.core.api.AbstractDateAssert.parseDateWithDefaultDateFormats(AbstractDateAssert.java:3604)
at org.assertj.core.api.AbstractDateAssert.parse(AbstractDateAssert.java:3596)
at org.assertj.core.api.AbstractDateAssert.isEqualTo(AbstractDateAssert.java:164)
java.lang.NumberFormatException: For input string: ""
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
at java.base/java.lang.Long.parseLong(Long.java:719)
at java.base/java.lang.Long.parseLong(Long.java:832)
at java.base/java.text.DigitList.getLong(DigitList.java:196)
at java.base/java.text.DecimalFormat.parse(DecimalFormat.java:2228)
at java.base/java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:1937)
at java.base/java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1545)
at java.base/java.text.DateFormat.parse(DateFormat.java:397)
b-strauss and casid
Metadata
Metadata
Assignees
Labels
No labels