Disable wxDateTime tests failing due to TZ offset changes
wxDateTime timezone-related methods always use the current timezone offset, while other methods, using CRT, use correct value for the given date, which may be different. This discrepancy accounted for test failures in Europe/Minsk time zone as Belarus has switched from UTC+2 to UTC+3 since 1999 date used in the test. It is impossible to really fix the problem easily, so just skip the test in this case and also mention this bug in the documentation. See #15370.
This commit is contained in:
@@ -763,6 +763,21 @@ void DateTimeTestCase::TestTimeFormat()
|
||||
// do convert date to string
|
||||
wxString s = dt.Format(fmt, tz);
|
||||
|
||||
// Normally, passing time zone to Format() should have exactly
|
||||
// the same effect as converting to this time zone before
|
||||
// calling it, however the former may use standard library date
|
||||
// handling in strftime() implementation while the latter
|
||||
// always uses our own code and they may disagree if the offset
|
||||
// for this time zone has changed since the given date, as the
|
||||
// standard library handles it correctly (at least under Unix),
|
||||
// while our code doesn't handle time zone changes at all.
|
||||
//
|
||||
// Short of implementing full support for time zone database,
|
||||
// we can't really do anything about this other than skipping
|
||||
// the test in this case.
|
||||
if ( s != dt.ToTimezone(tz).Format(fmt) )
|
||||
continue;
|
||||
|
||||
// convert back
|
||||
wxDateTime dt2;
|
||||
const char *result = dt2.ParseFormat(s, fmt);
|
||||
|
Reference in New Issue
Block a user