diff --git a/glib/tests/Makefile.am b/glib/tests/Makefile.am index eaa99aeb9..65598b486 100644 --- a/glib/tests/Makefile.am +++ b/glib/tests/Makefile.am @@ -22,6 +22,7 @@ dist_test_data = \ dist_test_extra_scripts = \ echo-script \ + echo-script.bat \ $(NULL) test_extra_programs = \ diff --git a/glib/tests/echo-script.bat b/glib/tests/echo-script.bat new file mode 100644 index 000000000..96c45c242 --- /dev/null +++ b/glib/tests/echo-script.bat @@ -0,0 +1,2 @@ +@echo off +echo echo diff --git a/glib/tests/spawn-singlethread.c b/glib/tests/spawn-singlethread.c index d205822b8..7985eef7f 100644 --- a/glib/tests/spawn-singlethread.c +++ b/glib/tests/spawn-singlethread.c @@ -26,6 +26,22 @@ #include #include +#ifdef G_OS_WIN32 +#define LINEEND "\r\n" +#else +#define LINEEND "\n" +#endif + +/* MinGW builds are likely done using a BASH-style shell, so run the + * normal script there, as on non-Windows builds, as it is more likely + * that one will run 'make check' in such shells to test the code + */ +#if defined (G_OS_WIN32) && defined (_MSC_VER) +#define SCRIPT_EXT ".bat" +#else +#define SCRIPT_EXT +#endif + static char *echo_prog_path; static char *echo_script_path; @@ -179,7 +195,7 @@ test_spawn_script (void) g_spawn_sync (NULL, (char**)argv->pdata, NULL, 0, NULL, NULL, &stdout_str, NULL, &estatus, &error); g_assert_no_error (error); - g_assert_cmpstr ("echo\n", ==, stdout_str); + g_assert_cmpstr ("echo" LINEEND, ==, stdout_str); g_free (stdout_str); g_ptr_array_free (argv, TRUE); } @@ -200,11 +216,11 @@ main (int argc, g_free (echo_prog_path); echo_prog_path = g_build_filename (dirname, "lt-test-spawn-echo" EXEEXT, NULL); } - echo_script_path = g_build_filename (dirname, "echo-script", NULL); + echo_script_path = g_build_filename (dirname, "echo-script" SCRIPT_EXT, NULL); if (!g_file_test (echo_script_path, G_FILE_TEST_EXISTS)) { g_free (echo_script_path); - echo_script_path = g_test_build_filename (G_TEST_DIST, "echo-script", NULL); + echo_script_path = g_test_build_filename (G_TEST_DIST, "echo-script" SCRIPT_EXT, NULL); } g_free (dirname);