comparison babel/tests/core.py @ 592:e6b1efa9a255 trunk

fix Locale.default to return Locales with correct territory information
author fschwarz
date Thu, 09 Aug 2012 07:47:09 +0000
parents d1618dfaf114
children
comparison
equal deleted inserted replaced
591:d1618dfaf114 592:e6b1efa9a255
17 17
18 from babel import core 18 from babel import core
19 from babel.core import default_locale, Locale 19 from babel.core import default_locale, Locale
20 20
21 21
22 class LocaleTest(unittest.TestCase): 22 class LocaleEnvironmentTestMixin(object):
23
24 def setUp(self):
25 self._old_locale_settings = self.current_locale_settings()
26
27 def tearDown(self):
28 self.reset_locale_settings(self._old_locale_settings)
29
30 def current_locale_settings(self):
31 settings = {}
32 for name in ('LC_MESSAGES', 'LANGUAGE', 'LC_ALL', 'LC_CTYPE', 'LANG'):
33 settings[name] = os.environ.get(name)
34 return settings
35
36 def reset_locale_settings(self, settings):
37 for name, value in settings.items():
38 if value is not None:
39 os.environ[name] = value
40 elif name in os.environ:
41 del os.environ[name]
42
43
44 class LocaleTest(LocaleEnvironmentTestMixin, unittest.TestCase):
23 45
24 def test_locale_provides_access_to_cldr_locale_data(self): 46 def test_locale_provides_access_to_cldr_locale_data(self):
25 locale = Locale('en', 'US') 47 locale = Locale('en', 'US')
26 self.assertEqual(u'English (United States)', locale.display_name) 48 self.assertEqual(u'English (United States)', locale.display_name)
27 self.assertEqual(u'.', locale.number_symbols['decimal']) 49 self.assertEqual(u'.', locale.number_symbols['decimal'])
38 self.assertNotEqual(None, en_US) 60 self.assertNotEqual(None, en_US)
39 61
40 bad_en_US = Locale('en_US') 62 bad_en_US = Locale('en_US')
41 self.assertNotEqual(en_US, bad_en_US) 63 self.assertNotEqual(en_US, bad_en_US)
42 64
65 def test_can_return_default_locale(self):
66 os.environ['LC_MESSAGES'] = 'fr_FR.UTF-8'
67 self.assertEqual(Locale('fr', 'FR'), Locale.default('LC_MESSAGES'))
68
43 69
44 class DefaultLocaleTest(unittest.TestCase): 70 class DefaultLocaleTest(LocaleEnvironmentTestMixin, unittest.TestCase):
45
46 def setUp(self):
47 self._old_locale_settings = self._current_locale_settings()
48
49 def tearDown(self):
50 self._set_locale_settings(self._old_locale_settings)
51
52 def _current_locale_settings(self):
53 settings = {}
54 for name in ('LANGUAGE', 'LC_ALL', 'LC_CTYPE', 'LANG'):
55 settings[name] = os.environ[name]
56 return settings
57
58 def _set_locale_settings(self, settings):
59 for name, value in settings.items():
60 os.environ[name] = value
61 71
62 def test_ignore_invalid_locales_in_lc_ctype(self): 72 def test_ignore_invalid_locales_in_lc_ctype(self):
63 # This is a regression test specifically for a bad LC_CTYPE setting on 73 # This is a regression test specifically for a bad LC_CTYPE setting on
64 # MacOS X 10.6 (#200) 74 # MacOS X 10.6 (#200)
65 os.environ['LC_CTYPE'] = 'UTF-8' 75 os.environ['LC_CTYPE'] = 'UTF-8'
Copyright (C) 2012-2017 Edgewall Software