[libcxx] r256621 - Fix locale feature testing in test suite.

Eric Fiselier via cfe-commits cfe-commits at lists.llvm.org
Tue Dec 29 20:45:42 PST 2015


Author: ericwf
Date: Tue Dec 29 22:45:42 2015
New Revision: 256621

URL: http://llvm.org/viewvc/llvm-project?rev=256621&view=rev
Log:
Fix locale feature testing in test suite.

Modified:
    libcxx/trunk/test/libcxx/test/target_info.py

Modified: libcxx/trunk/test/libcxx/test/target_info.py
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/libcxx/test/target_info.py?rev=256621&r1=256620&r2=256621&view=diff
==============================================================================
--- libcxx/trunk/test/libcxx/test/target_info.py (original)
+++ libcxx/trunk/test/libcxx/test/target_info.py Tue Dec 29 22:45:42 2015
@@ -24,17 +24,37 @@ class DefaultTargetInfo(object):
     def use_lit_shell_default(self): return False
 
 
-def add_common_locales(features):
+def test_locale(loc):
+    assert loc is not None
+    default_locale = locale.setlocale(locale.LC_ALL)
+    try:
+        locale.setlocale(locale.LC_ALL, loc)
+        return True
+    except locale.Error:
+        return False
+    finally:
+        locale.setlocale(locale.LC_ALL, default_locale)
+
+
+def add_common_locales(features, lit_config):
+    # A list of locales needed by the test-suite.
+    # The list uses the canonical name for the locale used in the test-suite
+    # TODO: On Linux ISO8859 *may* needs to hyphenated.
     locales = [
         'en_US.UTF-8',
-        'cs_CZ.ISO8859-2',
         'fr_FR.UTF-8',
-        'fr_CA.ISO8859-1',
         'ru_RU.UTF-8',
         'zh_CN.UTF-8',
+        'fr_CA.ISO8859-1',
+        'cs_CZ.ISO8859-2'
     ]
     for loc in locales:
-        features.add('locale.{0}'.format(loc))
+        if test_locale(loc):
+            features.add('locale.{0}'.format(loc))
+        else:
+            lit_config.warning('The locale {0} is not supported by '
+                               'your platform. Some tests will be '
+                               'unsupported.'.format(loc))
 
 
 class DarwinLocalTI(DefaultTargetInfo):
@@ -42,7 +62,7 @@ class DarwinLocalTI(DefaultTargetInfo):
         super(DarwinLocalTI, self).__init__(full_config)
 
     def add_locale_features(self, features):
-        add_common_locales(features)
+        add_common_locales(feature, self.full_config.lit_config)
 
     def add_cxx_compile_flags(self, flags):
         try:
@@ -89,7 +109,7 @@ class FreeBSDLocalTI(DefaultTargetInfo):
         super(FreeBSDLocalTI, self).__init__(full_config)
 
     def add_locale_features(self, features):
-        add_common_locales(features)
+        add_common_locales(features, self.full_config.lit_config)
 
     def add_cxx_link_flags(self, flags):
         flags += ['-lc', '-lm', '-lpthread', '-lgcc_s', '-lcxxrt']
@@ -113,7 +133,7 @@ class LinuxLocalTI(DefaultTargetInfo):
         return ver # Permitted to be None.
 
     def add_locale_features(self, features):
-        add_common_locales(features)
+        add_common_locales(features, self.full_config.lit_config)
         # Some linux distributions have different locale data than others.
         # Insert the distributions name and name-version into the available
         # features to allow tests to XFAIL on them.
@@ -156,7 +176,7 @@ class WindowsLocalTI(DefaultTargetInfo):
         super(WindowsLocalTI, self).__init__(full_config)
 
     def add_locale_features(self, features):
-        add_common_locales(features)
+        add_common_locales(features, self.full_config.lit_config)
 
     def use_lit_shell_default(self):
         # Default to the internal shell on Windows, as bash on Windows is




More information about the cfe-commits mailing list