Index: pkg/intl/test/date_time_format_test_core.dart |
diff --git a/pkg/intl/test/date_time_format_test_core.dart b/pkg/intl/test/date_time_format_test_core.dart |
index 757bb6bd80ef276fd34b574259fad5451c6e702b..5d3909010c079e1c5fbd7180ec4e120ada6d99b1 100644 |
--- a/pkg/intl/test/date_time_format_test_core.dart |
+++ b/pkg/intl/test/date_time_format_test_core.dart |
@@ -144,7 +144,7 @@ testRoundTripParsing(String localeName, DateTime date) { |
// At least in most cases. In some cases, we can't even do that. e.g. |
// the skeleton WEEKDAY can't be reconstructed at all, and YEAR_MONTH |
// formats don't give us enough information to construct a valid date. |
- var badSkeletons = [ |
+ var badSkeletons = const [ |
DateFormat.ABBR_WEEKDAY, |
DateFormat.WEEKDAY, |
DateFormat.QUARTER, |
@@ -156,6 +156,9 @@ testRoundTripParsing(String localeName, DateTime date) { |
DateFormat.MONTH_WEEKDAY_DAY, |
DateFormat.NUM_MONTH_WEEKDAY_DAY, |
DateFormat.ABBR_MONTH_WEEKDAY_DAY]; |
+ var originalTime = new DateTime.now(); |
+ var originalTimeZoneOffset = date.timeZoneOffset; |
+ var originalTimeZoneName = date.timeZoneName; |
for(int i = 0; i < formatsToTest.length; i++) { |
var skeleton = formatsToTest[i]; |
if (!badSkeletons.any((x) => x == skeleton)) { |
@@ -163,6 +166,25 @@ testRoundTripParsing(String localeName, DateTime date) { |
var actualResult = format.format(date); |
var parsed = format.parse(actualResult); |
var thenPrintAgain = format.format(parsed); |
+ // We've seen a case where this failed in a way that seemed like a time |
+ // zone shifting or some other strange behaviour that caused an off by |
+ // one error in the date. Check for this and print out as much information |
+ // as possible if it occurs again. |
+ if (thenPrintAgain != actualResult) { |
+ print("Date mismatch!"); |
+ print(" Expected $actualResult"); |
+ print(" Got $thenPrintAgain"); |
+ print(" Original date = $date"); |
+ print(" Original ms = ${date.millisecondsSinceEpoch}"); |
+ print(" Parsed back to $parsed"); |
+ print(" Parsed ms = ${parsed.millisecondsSinceEpoch}"); |
+ print(" Original tz = $originalTimeZoneOffset"); |
+ print(" Current tz name = $originalTimeZoneName"); |
+ print(" Current tz = ${parsed.timeZoneOffset}"); |
+ print(" Current tz name = ${parsed.timeZoneName}"); |
+ print(" Start time = $originalTime"); |
+ print(" Current time ${new DateTime.now()}"); |
+ } |
expect(thenPrintAgain, equals(actualResult)); |
} |
} |