Skip to content

Commit d5b8241

Browse files
author
Ishan Chattopadhyaya
committed
SOLR-17278: Skip broken timezones in the test
1 parent f823e9b commit d5b8241

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

solr/core/src/test/org/apache/solr/util/TimeZoneUtilsTest.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,22 @@
1616
*/
1717
package org.apache.solr.util;
1818

19+
import java.lang.invoke.MethodHandles;
1920
import java.util.HashSet;
2021
import java.util.Locale;
2122
import java.util.Random;
2223
import java.util.Set;
2324
import java.util.TimeZone;
2425
import org.apache.lucene.tests.util.TestUtil;
2526
import org.apache.solr.SolrTestCase;
27+
import org.apache.solr.common.util.SuppressForbidden;
28+
import org.slf4j.Logger;
29+
import org.slf4j.LoggerFactory;
2630

2731
public class TimeZoneUtilsTest extends SolrTestCase {
2832

33+
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
34+
2935
private static void assertSameRules(
3036
final String label, final TimeZone expected, final TimeZone actual) {
3137

@@ -39,10 +45,12 @@ private static void assertSameRules(
3945
assertTrue(label + ": " + expected + " [[NOT SAME RULES]] " + actual, same);
4046
}
4147

48+
@SuppressForbidden(reason = "Using TimeZone.getDisplayName() just for warning purpose in a test")
4249
public void testValidIds() {
4350

4451
final Set<String> idsTested = new HashSet<>();
4552

53+
int skipped = 0;
4654
// brain dead: anything the JVM supports, should work
4755
for (String validId : TimeZone.getAvailableIDs()) {
4856
assertTrue(
@@ -51,14 +59,28 @@ public void testValidIds() {
5159

5260
final TimeZone expected = TimeZone.getTimeZone(validId);
5361
final TimeZone actual = TimeZoneUtils.getTimeZone(validId);
62+
63+
// Hack: Why do some timezones have useDaylightTime() as true, but DST as 0?
64+
// It causes an exception during String.valueOf(actual/expected)
65+
if (expected.useDaylightTime() && expected.getDSTSavings() == 0
66+
|| actual.useDaylightTime() && actual.getDSTSavings() == 0) {
67+
if (log.isWarnEnabled()) {
68+
log.warn(
69+
"Not expecting DST to be 0 for {} " + " (actual: {})",
70+
expected.getDisplayName(),
71+
actual.getDisplayName());
72+
}
73+
skipped++;
74+
continue;
75+
}
5476
assertSameRules(validId, expected, actual);
5577

5678
idsTested.add(validId);
5779
}
5880

5981
assertEquals(
6082
"TimeZone.getAvailableIDs vs TimeZoneUtils.KNOWN_TIMEZONE_IDS",
61-
TimeZoneUtils.KNOWN_TIMEZONE_IDS.size(),
83+
TimeZoneUtils.KNOWN_TIMEZONE_IDS.size() - skipped,
6284
idsTested.size());
6385
}
6486

0 commit comments

Comments
 (0)