changeset 535:2cfe20fd80a0 stable-0.9.x

merge r586 from trunk
author fschwarz
date Fri, 11 Mar 2011 16:25:08 +0000
parents 4a5340c0821b
children df96725f145b
files babel/core.py babel/tests/core.py
diffstat 2 files changed, 32 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/babel/core.py
+++ b/babel/core.py
@@ -642,7 +642,10 @@
                 locale = 'en_US_POSIX'
             elif aliases and locale in aliases:
                 locale = aliases[locale]
-            return '_'.join(filter(None, parse_locale(locale)))
+            try:
+                return '_'.join(filter(None, parse_locale(locale)))
+            except ValueError:
+                pass
 
 def negotiate_locale(preferred, available, sep='_', aliases=LOCALE_ALIASES):
     """Find the best match between available and requested locale strings.
--- a/babel/tests/core.py
+++ b/babel/tests/core.py
@@ -12,13 +12,41 @@
 # history and logs, available at http://babel.edgewall.org/log/.
 
 import doctest
+import os
 import unittest
 
 from babel import core
+from babel.core import default_locale
+
+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 _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
+    
+    def test_ignore_invalid_locales_in_lc_ctype(self):
+        # This is a regression test specifically for a bad LC_CTYPE setting on
+        # MacOS X 10.6 (#200)
+        os.environ['LC_CTYPE'] = 'UTF-8'
+        # must not throw an exception
+        default_locale('LC_CTYPE')
 
 def suite():
     suite = unittest.TestSuite()
     suite.addTest(doctest.DocTestSuite(core))
+    suite.addTest(unittest.makeSuite(DefaultLocaleTest))
     return suite
 
 if __name__ == '__main__':
Copyright (C) 2012-2017 Edgewall Software