Hi Dan,

I've addressed most of your comments. Thanks for the input. 
I'll post a revised patch closely after.

================
Comment at: 
test/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_1.pass.cpp:38
@@ -37,3 +37,3 @@
             assert(f.tolower('1') == '1');
-            assert(f.tolower('\xDA') == '\xFA');
+            //assert(f.tolower('\xDA') == '\xFA');
             assert(f.tolower('\xFA') == '\xFA');
----------------
Dan Albert wrote:
> I think you meant to #ifdef this one as you did in the next test.
> 
> Either way, this doesn't look right to me. Do we know why this is happening? 
> Is this a legitimate difference between Mac and glibc, or is glibc broken? If 
> it's just a difference, then we should still check against the expected glibc 
> behavior. If Linux is broken, we should XFAIL the test rather than skipping 
> the broken part.
FreeBSD also fails on these tests as well for the same reason and I suspect 
darwin does as well. This needs more investigation.

================
Comment at: 
test/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_ru_RU.pass.cpp:11
@@ -10,2 +10,3 @@
 // XFAIL: apple-darwin
+// XFAIL: linux
 
----------------
Dan Albert wrote:
> We're XFAILing these as a TODO, right? I wish LIT had a way to distinguish 
> between intended failures and known failures.
Yep. I'll add a comment saying its TODO and explain the likely cause 
(translation of U00A0).

================
Comment at: 
test/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_zh_CN.pass.cpp:311
@@ +310,3 @@
+#       else
+            std::string v = "-CNY 0.01";
+#       endif
----------------
Dan Albert wrote:
> I think glibc's locale data is wrong here. We should mark these tests as 
> XFAIL rather than hiding the failure. A bug will need to be filed against 
> glibc (or wherever glibc gets their locale data from).
GLIBC's locale definition doesn't seem that unreasonable. I'll look more into 
it but I don't know if we can say its test data is for sure wrong.
I'm going to hold off on changing this.

================
Comment at: 
test/localization/locale.categories/category.monetary/locale.moneypunct.byname/decimal_point.pass.cpp:133
@@ +132,3 @@
+#   else
+        assert(f.decimal_point() == L'.');
+#   endif
----------------
Dan Albert wrote:
> The test is right, glibc's locale data is wrong. Russia uses ',' for a 
> decimal separator (according to wikipedia). This test (and those like it) 
> should be XFAIL.
Yep. That seems wrong. I'll back out the GLIBC changes and just mark it as 
XFAIL. I'll also file a bug with GLIBC.

================
Comment at: 
test/localization/locale.categories/category.time/locale.time.get.byname/get_date.pass.cpp:63
@@ +62,3 @@
+#   else
+        const char in[] = "10/06/2009";
+#   endif
----------------
Dan Albert wrote:
> Looks like more bad locale data to me.
I think this might be bad locale data on apples part as opposed to GLIBCs. I'm 
basing that off
http://www.localeplanet.com/icu/fr-FR/ 
http://en.wikipedia.org/wiki/Date_format_by_country




================
Comment at: 
test/localization/locale.categories/category.time/locale.time.get.byname/get_date.pass.cpp:79
@@ +78,3 @@
+#   else
+        const char in[] = "10" "\x2E" "06" "\x2E" "2009";
+#   endif
----------------
Dan Albert wrote:
> What?
GLIBC's locale data says that U002E is used as the separator. 
http://www.fileformat.info/info/unicode/char/2e/index.htm 

I don't think that seems unreasonable. More investigation needed though.

================
Comment at: 
test/localization/locale.categories/category.time/locale.time.get.byname/get_date_wide.pass.cpp:86
@@ -81,1 +85,3 @@
     }
+    // I just can't get this to pass on linux.
+#if !defined(__GLIBC__)
----------------
Dan Albert wrote:
> Then let's XFAIL it for now.
Ok. Done.

================
Comment at: 
test/localization/locale.categories/category.time/locale.time.get.byname/get_one.pass.cpp:47
@@ -45,1 +46,3 @@
+    // This test is not portible on linux.
+#if !defined(__GLIBC__)
     {
----------------
Dan Albert wrote:
> There should be an #else case that tests the Linux behavior.
Not quite sure how to write one. The output depends on the timezone your in.

================
Comment at: 
test/localization/locale.categories/category.time/locale.time.get.byname/get_one.pass.cpp:70
@@ +69,3 @@
+#   else
+        const char in[] = "11:55:59 PM";
+#   endif
----------------
Dan Albert wrote:
> Pretty sure this is more bad locale data.
Probably, but I think GLIBC is correct. Having 12 hour time for en_US seems to 
make more sense than 24 hour.

================
Comment at: 
test/localization/locale.categories/category.time/locale.time.get.byname/get_one.pass.cpp:117
@@ -104,2 +116,2 @@
                           "\xD0\xBE\xD1\x82\xD0\xB0"
                           ", 31 "
----------------
Dan Albert wrote:
> Phabricator: "Context not available"
> Me: Damn you, Phabricator!
> 
> *checks the source*
> 
> Well, that didn't make it any clearer. I presume that mess of hex is encoding 
> cyrillic characters. Are these tests like the other Russian ones where the 
> separators are wrong? If so, XFAIL, not #ifdef.
Done. Changed backed out. I suspect the difference is between upper and lower 
case cyrillic characters. However more investigation is needed.

================
Comment at: 
test/localization/locale.categories/category.time/locale.time.put.byname/put1.pass.cpp:73
@@ -72,1 +72,3 @@
+        // w/ GLIBC fr_FR.UTF-8 day abreviations can end with a '.'
         assert((ex == "Today is Samedi which is abbreviated Sam.")||
+               (ex == "Today is samedi which is abbreviated sam." )||
----------------
Dan Albert wrote:
> What's with the case differences? I see that was actually already the case, 
> but why?
Not sure. glibc uses lower case. I've seperated the glibc change and only check 
the lower case version.

================
Comment at: 
test/localization/locale.categories/facet.numpunct/locale.numpunct.byname/thousands_sep.pass.cpp:60
@@ +59,3 @@
+#       else
+            assert(np.thousands_sep() == ' ');
+#       endif
----------------
Dan Albert wrote:
> Looks like more glibc wrongness.
Perhaps. Some of the sources I've found online suggest that ' ' is valid.
http://docs.oracle.com/cd/E19455-01/806-0169/overview-9/index.html
I'll leave this in for now.

http://reviews.llvm.org/D4861



_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to