Silently skip tests if we can't set LC_COLLATE to en_US. (#336438)
authorMatthias Clasen <mclasen@redhat.com>
Sun, 24 Dec 2006 21:47:05 +0000 (21:47 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Sun, 24 Dec 2006 21:47:05 +0000 (21:47 +0000)
2006-12-24  Matthias Clasen  <mclasen@redhat.com>

        * tests/run-collate-tests.sh:
        * tests/unicode-collate.c: Silently skip tests if
        we can't set LC_COLLATE to en_US.  (#336438)

ChangeLog
tests/run-collate-tests.sh
tests/unicode-collate.c

index d119d73..4695b61 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2006-12-24  Matthias Clasen  <mclasen@redhat.com>
+
+       * tests/run-collate-tests.sh:
+       * tests/unicode-collate.c: Silently skip tests if
+       we can't set LC_COLLATE to en_US.  (#336438)
+
 2006-12-19  Matthias Clasen  <mclasen@redhat.com>
 
        * glib/gkeyfile.c (g_key_file_is_key_name): Accept
index b27f7d6..24f3d69 100755 (executable)
@@ -13,9 +13,6 @@ echo_v ()
   fi
 }
 
-LC_ALL=en_US
-export LC_ALL
-
 error_out=/dev/null
 if [ "$1" = "-v" ]; then
   verbose=1
@@ -25,6 +22,9 @@ for I in ${srcdir:-.}/collate/*.in; do
   echo_v "Sorting $I"
   name=`basename $I .in`
   ./unicode-collate $I > collate.out
+  if [ $? -eq 2 ]; then
+    exit 0
+  fi   
   diff collate.out ${srcdir:-.}/collate/$name.unicode || 
     fail "unexpected error when using g_utf8_collate() on $I"
   ./unicode-collate --key $I > collate.out
index 009b00f..785f169 100644 (file)
@@ -5,6 +5,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <locale.h>
 
 typedef struct {
   const char *key;
@@ -38,6 +39,18 @@ int main (int argc, char **argv)
   guint i;
   gboolean do_key = FALSE;
   gboolean do_file = FALSE;
+  gchar *locale;
+
+  /* FIXME: need to modify environment here,
+   * since g_utf8_collate_key calls setlocal (LC_COLLATE, "")
+   */
+  g_setenv ("LC_ALL", "en_US", TRUE);
+  locale = setlocale (LC_ALL, "");
+  if (locale == NULL || strcmp (locale, "en_US") != 0)
+    {
+      fprintf (stderr, "No suitable locale, skipping test\n"); 
+      return 2;
+    }
 
   if (argc != 1 && argc != 2 && argc != 3)
     {