diff 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
line wrap: on
line diff
--- a/babel/tests/core.py
+++ b/babel/tests/core.py
@@ -19,7 +19,29 @@
 from babel.core import default_locale, Locale
 
 
-class LocaleTest(unittest.TestCase):
+class LocaleEnvironmentTestMixin(object):
+    
+    def setUp(self):
+        self._old_locale_settings = self.current_locale_settings()
+    
+    def tearDown(self):
+        self.reset_locale_settings(self._old_locale_settings)
+    
+    def current_locale_settings(self):
+        settings = {}
+        for name in ('LC_MESSAGES', 'LANGUAGE', 'LC_ALL', 'LC_CTYPE', 'LANG'):
+            settings[name] = os.environ.get(name)
+        return settings
+    
+    def reset_locale_settings(self, settings):
+        for name, value in settings.items():
+            if value is not None:
+                os.environ[name] = value
+            elif name in os.environ:
+                del os.environ[name]
+
+
+class LocaleTest(LocaleEnvironmentTestMixin, unittest.TestCase):
     
     def test_locale_provides_access_to_cldr_locale_data(self):
         locale = Locale('en', 'US')
@@ -40,24 +62,12 @@
         bad_en_US = Locale('en_US')
         self.assertNotEqual(en_US, bad_en_US)
     
-
-class DefaultLocaleTest(unittest.TestCase):
-    
-    def setUp(self):
-        self._old_locale_settings = self._current_locale_settings()
-    
-    def tearDown(self):
-        self._set_locale_settings(self._old_locale_settings)
+    def test_can_return_default_locale(self):
+        os.environ['LC_MESSAGES'] = 'fr_FR.UTF-8'
+        self.assertEqual(Locale('fr', 'FR'), Locale.default('LC_MESSAGES'))
     
-    def _current_locale_settings(self):
-        settings = {}
-        for name in ('LANGUAGE', 'LC_ALL', 'LC_CTYPE', 'LANG'):
-            settings[name] = os.environ[name]
-        return settings
-    
-    def _set_locale_settings(self, settings):
-        for name, value in settings.items():
-            os.environ[name] = value
+
+class DefaultLocaleTest(LocaleEnvironmentTestMixin, unittest.TestCase):
     
     def test_ignore_invalid_locales_in_lc_ctype(self):
         # This is a regression test specifically for a bad LC_CTYPE setting on
Copyright (C) 2012-2017 Edgewall Software