Skip to content

Commit 49be1a6

Browse files
LOG4J2-3885: Add test for ISO8601_OFFSET_DATE_TIME_HH with system default zone
Ensure legacy and modern formatting produce consistent results when the system default zone offset is a whole hour. Skip the test otherwise using assumptions.
1 parent bae762d commit 49be1a6

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

log4j-core-test/src/test/java/org/apache/logging/log4j/core/pattern/NamedInstantPatternTest.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,13 @@
1717
package org.apache.logging.log4j.core.pattern;
1818

1919
import static org.assertj.core.api.Assertions.assertThat;
20+
import static org.assertj.core.api.Assumptions.assumeThat;
2021

2122
import java.time.Instant;
23+
import java.time.ZoneId;
24+
import java.time.ZoneOffset;
2225
import org.apache.logging.log4j.core.time.MutableInstant;
2326
import org.apache.logging.log4j.core.util.internal.instant.InstantPatternFormatter;
24-
import org.junit.jupiter.api.Assumptions;
2527
import org.junit.jupiter.params.ParameterizedTest;
2628
import org.junit.jupiter.params.provider.EnumSource;
2729

@@ -30,6 +32,15 @@ class NamedInstantPatternTest {
3032
@ParameterizedTest
3133
@EnumSource(NamedInstantPattern.class)
3234
void compatibilityOfLegacyPattern(NamedInstantPattern namedPattern) {
35+
if (namedPattern == NamedInstantPattern.ISO8601_OFFSET_DATE_TIME_HH) {
36+
ZoneOffset offset = ZoneId.systemDefault().getRules().getOffset(Instant.now());
37+
assumeThat(offset.getTotalSeconds() % 3600 == 0)
38+
.withFailMessage(
39+
"Skipping test: ISO8601_OFFSET_DATE_TIME_HH requires a whole-hour offset, but system offset is %s",
40+
offset)
41+
.isTrue();
42+
}
43+
3344
InstantPatternFormatter legacyFormatter = InstantPatternFormatter.newBuilder()
3445
.setPattern(namedPattern.getLegacyPattern())
3546
.setLegacyFormattersEnabled(true)
@@ -43,17 +54,6 @@ void compatibilityOfLegacyPattern(NamedInstantPattern namedPattern) {
4354
instant.initFromEpochSecond(javaTimeInstant.getEpochSecond(), javaTimeInstant.getNano());
4455
String legacy = legacyFormatter.format(instant);
4556
String modern = formatter.format(instant);
46-
if (namedPattern == NamedInstantPattern.ISO8601_OFFSET_DATE_TIME_HH) {
47-
java.time.ZoneOffset offset =
48-
java.time.ZoneId.systemDefault().getRules().getOffset(java.time.Instant.now());
49-
Assumptions.assumeTrue(
50-
offset.getTotalSeconds() % 3600 == 0,
51-
() -> String.format(
52-
"Skipping test: ISO8601_OFFSET_DATE_TIME_HH requires a whole-hour offset, but system offset is %s",
53-
offset));
54-
assertThat(legacy).isEqualTo(modern);
55-
} else {
56-
assertThat(legacy).isEqualTo(modern);
57-
}
57+
assertThat(legacy).isEqualTo(modern);
5858
}
5959
}

0 commit comments

Comments
 (0)