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 <unistd.h>
#include <errno.h>
/* We are testing some deprecated APIs here */
@ -29,6 +28,13 @@
#include <glib.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
static void
@ -496,6 +502,9 @@ test_mkdir_with_parents (void)
static 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... */
check_string (g_format_size_for_display (0), "0 bytes");
check_string (g_format_size_for_display (1), "1 byte");