Mercurial > babel > mirror
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' |