glib/tests/fileutils.c: Include unistd.h on *NIX only

...and fix the test on non-English Windows, as gettext on Windows does
not honor LC_ALL = "C" (the default CRT behavior) but requires using
SetThreadLocale() to set the locale as it picks up the user's environment
and the thread's locale.  Without doing so the g_format_size_for_display()
et al will display the translated message if the gettext translations have
been installed before, causing the test_format_size_for_display tests to
fail.

https://bugzilla.gnome.org/show_bug.cgi?id=711047
This commit is contained in:
Chun-wei Fan 2013-11-04 12:23:30 +08:00
parent 20f873a0bc
commit 1079d30e1b

View File

@ -20,7 +20,6 @@
*/ */
#include <string.h> #include <string.h>
#include <unistd.h>
#include <errno.h> #include <errno.h>
/* We are testing some deprecated APIs here */ /* We are testing some deprecated APIs here */
@ -29,6 +28,13 @@
#include <glib.h> #include <glib.h>
#include <glib/gstdio.h> #include <glib/gstdio.h>
#ifdef G_OS_UNIX
#include <unistd.h>
#endif
#ifdef G_OS_WIN32
#include <windows.h>
#endif
#define S G_DIR_SEPARATOR_S #define S G_DIR_SEPARATOR_S
static void static void
@ -496,6 +502,9 @@ test_mkdir_with_parents (void)
static void static void
test_format_size_for_display (void) test_format_size_for_display (void)
{ {
#ifdef G_OS_WIN32
SetThreadLocale (MAKELCID (MAKELANGID (LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT));
#endif
/* nobody called setlocale(), so we should get "C" behaviour... */ /* nobody called setlocale(), so we should get "C" behaviour... */
check_string (g_format_size_for_display (0), "0 bytes"); check_string (g_format_size_for_display (0), "0 bytes");
check_string (g_format_size_for_display (1), "1 byte"); check_string (g_format_size_for_display (1), "1 byte");