# HG changeset patch # User fschwarz # Date 1299278182 0 # Node ID 0effa7def3635f1d7de077bcf0103e6fee9dbbfe # Parent b3dd65de2a5a15d4a3df7b31fd6258d9fe2270d9 add tests from r563 to trunk diff --git a/babel/tests/dates.py b/babel/tests/dates.py --- a/babel/tests/dates.py +++ b/babel/tests/dates.py @@ -13,11 +13,13 @@ from datetime import date, datetime, time import doctest +import new import unittest from pytz import timezone from babel import dates +from babel.util import FixedOffsetTimezone class DateTimeFormatTestCase(unittest.TestCase): @@ -262,12 +264,31 @@ self.assertEqual('1 hour', string) +class TimeZoneAdjustTestCase(unittest.TestCase): + def _utc(self): + UTC = FixedOffsetTimezone(0, 'UTC') + def fake_localize(self, dt, is_dst=False): + raise NotImplementedError() + UTC.localize = new.instancemethod(fake_localize, UTC, UTC.__class__) + # This is important to trigger the actual bug (#257) + self.assertEqual(False, hasattr(UTC, 'normalize')) + return UTC + + def test_can_format_time_with_non_pytz_timezone(self): + # regression test for #257 + utc = self._utc() + t = datetime(2007, 4, 1, 15, 30, tzinfo=utc) + formatted_time = dates.format_time(t, 'long', tzinfo=utc, locale='en') + self.assertEqual('3:30:00 PM +0000', formatted_time) + + def suite(): suite = unittest.TestSuite() suite.addTest(doctest.DocTestSuite(dates)) suite.addTest(unittest.makeSuite(DateTimeFormatTestCase)) suite.addTest(unittest.makeSuite(FormatDateTestCase)) suite.addTest(unittest.makeSuite(FormatTimeTestCase)) + suite.addTest(unittest.makeSuite(TimeZoneAdjustTestCase)) return suite