[PATCH] [libcxx] Get categories.collate tests passing on linux.

Eric Fiselier eric at efcs.ca
Wed Aug 20 21:25:51 PDT 2014


Hi mclow.lists, danalbert,

GLIBC collates en_US differently than Apple libc. Perhaps we should just XFAIL.

http://reviews.llvm.org/D5000

Files:
  test/localization/locale.categories/category.collate/locale.collate.byname/compare.pass.cpp

Index: test/localization/locale.categories/category.collate/locale.collate.byname/compare.pass.cpp
===================================================================
--- test/localization/locale.categories/category.collate/locale.collate.byname/compare.pass.cpp
+++ test/localization/locale.categories/category.collate/locale.collate.byname/compare.pass.cpp
@@ -28,6 +28,14 @@
 
 int main()
 {
+    // Ensure that the default locale is known. Othewise the second test could fail.
+    putenv(const_cast<char*>("LANG=" LOCALE_en_US_UTF_8));
+    // GLIBC collates en_US differently
+#if !defined(__GLIBC__)
+    int const expect = 1;
+#else
+    int const expect = -1;
+#endif
     {
         std::locale l(LOCALE_en_US_UTF_8);
         {
@@ -35,14 +43,14 @@
             std::string s2("aaaaaaA");
             std::string s3("BaaaaaA");
             assert(f.compare(s2.data(), s2.data() + s2.size(),
-                             s3.data(), s3.data() + s3.size()) == 1);
+                             s3.data(), s3.data() + s3.size()) == expect);
         }
         {
             const std::collate<wchar_t>& f = std::use_facet<std::collate<wchar_t> >(l);
             std::wstring s2(L"aaaaaaA");
             std::wstring s3(L"BaaaaaA");
             assert(f.compare(s2.data(), s2.data() + s2.size(),
-                             s3.data(), s3.data() + s3.size()) == 1);
+                             s3.data(), s3.data() + s3.size()) == expect);
         }
     }
     {
@@ -52,14 +60,14 @@
             std::string s2("aaaaaaA");
             std::string s3("BaaaaaA");
             assert(f.compare(s2.data(), s2.data() + s2.size(),
-                             s3.data(), s3.data() + s3.size()) == 1);
+                             s3.data(), s3.data() + s3.size()) == expect);
         }
         {
             const std::collate<wchar_t>& f = std::use_facet<std::collate<wchar_t> >(l);
             std::wstring s2(L"aaaaaaA");
             std::wstring s3(L"BaaaaaA");
             assert(f.compare(s2.data(), s2.data() + s2.size(),
-                             s3.data(), s3.data() + s3.size()) == 1);
+                             s3.data(), s3.data() + s3.size()) == expect);
         }
     }
     {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D5000.12732.patch
Type: text/x-patch
Size: 2223 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140821/7c0e316d/attachment.bin>


More information about the cfe-commits mailing list