comparison babel/tests/dates.py @ 511:f2098e9c05b4 stable-0.9.x

Fix bad check in format_time (closes #257), reported with patch and tests by jomae
author fschwarz
date Fri, 04 Mar 2011 22:34:14 +0000
parents 61cb2233fa49
children
comparison
equal deleted inserted replaced
510:d877836a8455 511:f2098e9c05b4
11 # individuals. For the exact contribution history, see the revision 11 # individuals. For the exact contribution history, see the revision
12 # history and logs, available at http://babel.edgewall.org/log/. 12 # history and logs, available at http://babel.edgewall.org/log/.
13 13
14 from datetime import date, datetime, time 14 from datetime import date, datetime, time
15 import doctest 15 import doctest
16 import new
16 import unittest 17 import unittest
17 18
18 from pytz import timezone 19 from pytz import timezone
19 20
20 from babel import dates 21 from babel import dates
22 from babel.util import FixedOffsetTimezone
21 23
22 24
23 class DateTimeFormatTestCase(unittest.TestCase): 25 class DateTimeFormatTestCase(unittest.TestCase):
24 26
25 def test_quarter_format(self): 27 def test_quarter_format(self):
245 self.assertRaises(AttributeError, dates.format_time, 247 self.assertRaises(AttributeError, dates.format_time,
246 datetime(2007, 04, 01, 15, 30), 248 datetime(2007, 04, 01, 15, 30),
247 "yyyy-MM-dd HH:mm", locale='en_US') 249 "yyyy-MM-dd HH:mm", locale='en_US')
248 250
249 251
252 class TimeZoneAdjustTestCase(unittest.TestCase):
253 def _utc(self):
254 UTC = FixedOffsetTimezone(0, 'UTC')
255 def fake_localize(self, dt, is_dst=False):
256 raise NotImplementedError()
257 UTC.localize = new.instancemethod(fake_localize, UTC, UTC.__class__)
258 # This is important to trigger the actual bug (#257)
259 self.assertEqual(False, hasattr(UTC, 'normalize'))
260 return UTC
261
262 def test_can_format_time_with_non_pytz_timezone(self):
263 # regression test for #257
264 utc = self._utc()
265 t = datetime(2007, 4, 1, 15, 30, tzinfo=utc)
266 formatted_time = dates.format_time(t, 'long', tzinfo=utc, locale='en')
267 self.assertEqual('3:30:00 PM +0000', formatted_time)
268
269
250 def suite(): 270 def suite():
251 suite = unittest.TestSuite() 271 suite = unittest.TestSuite()
252 suite.addTest(doctest.DocTestSuite(dates)) 272 suite.addTest(doctest.DocTestSuite(dates))
253 suite.addTest(unittest.makeSuite(DateTimeFormatTestCase)) 273 suite.addTest(unittest.makeSuite(DateTimeFormatTestCase))
254 suite.addTest(unittest.makeSuite(FormatDateTestCase)) 274 suite.addTest(unittest.makeSuite(FormatDateTestCase))
255 suite.addTest(unittest.makeSuite(FormatTimeTestCase)) 275 suite.addTest(unittest.makeSuite(FormatTimeTestCase))
276 suite.addTest(unittest.makeSuite(TimeZoneAdjustTestCase))
256 return suite 277 return suite
257 278
258 if __name__ == '__main__': 279 if __name__ == '__main__':
259 unittest.main(defaultTest='suite') 280 unittest.main(defaultTest='suite')
Copyright (C) 2012-2017 Edgewall Software