diff options
| author | Ross Burton <ross.burton@intel.com> | 2014-01-30 11:51:57 +0000 | 
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-02-02 22:34:34 +0000 | 
| commit | 4bf996557409b63c2d783f175c6325c966aae236 (patch) | |
| tree | e42f332f4dc5cb291eae3c9013d70e2ecdb96515 | |
| parent | 0ca984f32682151cfeff852167f0174aca20a8bc (diff) | |
| download | openembedded-core-4bf996557409b63c2d783f175c6325c966aae236.tar.gz openembedded-core-4bf996557409b63c2d783f175c6325c966aae236.tar.bz2 openembedded-core-4bf996557409b63c2d783f175c6325c966aae236.zip | |
glib-2.0: fix handling of skipped tests
Backport a patch from upstream to fix skipped tests, essential for gdk-pixbuf to
pass without enabling all loaders.
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
| -rw-r--r-- | meta/recipes-core/glib-2.0/glib-2.0/gtest-skip-fixes.patch | 197 | ||||
| -rw-r--r-- | meta/recipes-core/glib-2.0/glib-2.0_2.38.2.bb | 1 | 
2 files changed, 198 insertions, 0 deletions
| diff --git a/meta/recipes-core/glib-2.0/glib-2.0/gtest-skip-fixes.patch b/meta/recipes-core/glib-2.0/glib-2.0/gtest-skip-fixes.patch new file mode 100644 index 0000000000..3dba0ee31b --- /dev/null +++ b/meta/recipes-core/glib-2.0/glib-2.0/gtest-skip-fixes.patch @@ -0,0 +1,197 @@ +Fix the handling of skipped tests so that it follows what automake does. + +Upstream-Status: Backport [https://bugzilla.gnome.org/show_bug.cgi?id=720263] +Signed-off-by: Ross Burton <ross.burton@intel.com> + +diff --git a/glib/gtestutils.c b/glib/gtestutils.c +index bc7bbcf..feaafa3 100644 +--- a/glib/gtestutils.c ++++ b/glib/gtestutils.c +@@ -607,9 +607,10 @@ static gchar      *test_run_name = ""; + static GSList    **test_filename_free_list; + static guint       test_run_forks = 0; + static guint       test_run_count = 0; ++static guint       test_skipped_count = 0; + static GTestResult test_run_success = G_TEST_RUN_FAILURE; + static gchar      *test_run_msg = NULL; +-static guint       test_skip_count = 0; ++static guint       test_startup_skip_count = 0; + static GTimer     *test_user_timer = NULL; + static double      test_user_stamp = 0; + static GSList     *test_paths = NULL; +@@ -765,6 +766,8 @@ g_test_log (GTestLogType lbit, +             g_print ("Bail out!\n"); +           abort(); +         } ++      if (largs[0] == G_TEST_RUN_SKIPPED) ++        test_skipped_count++; +       break; +     case G_TEST_LOG_MIN_RESULT: +       if (test_tap_log) +@@ -869,11 +872,11 @@ parse_args (gint    *argc_p, +         { +           gchar *equal = argv[i] + 16; +           if (*equal == '=') +-            test_skip_count = g_ascii_strtoull (equal + 1, NULL, 0); ++            test_startup_skip_count = g_ascii_strtoull (equal + 1, NULL, 0); +           else if (i + 1 < argc) +             { +               argv[i++] = NULL; +-              test_skip_count = g_ascii_strtoull (argv[i], NULL, 0); ++              test_startup_skip_count = g_ascii_strtoull (argv[i], NULL, 0); +             } +           argv[i] = NULL; +         } +@@ -1516,14 +1519,21 @@ g_test_get_root (void) +  * g_test_run_suite() or g_test_run() may only be called once +  * in a program. +  * +- * Returns: 0 on success ++ * Returns: 0 on success, 1 on failure (assuming it returns at all), ++ *   77 if all tests were skipped with g_test_skip(). +  * +  * Since: 2.16 +  */ + int + g_test_run (void) + { +-  return g_test_run_suite (g_test_get_root()); ++  if (g_test_run_suite (g_test_get_root()) != 0) ++    return 1; ++ ++  if (test_run_count > 0 && test_run_count == test_skipped_count) ++    return 77; ++  else ++    return 0; + } +  + /** +@@ -2063,7 +2073,7 @@ test_case_run (GTestCase *tc) +         } +     } +  +-  if (++test_run_count <= test_skip_count) ++  if (++test_run_count <= test_startup_skip_count) +     g_test_log (G_TEST_LOG_SKIP_CASE, test_run_name, NULL, 0, NULL); +   else if (test_run_list) +     { +@@ -2117,7 +2127,8 @@ test_case_run (GTestCase *tc) +   g_free (test_uri_base); +   test_uri_base = old_base; +  +-  return success == G_TEST_RUN_SUCCESS; ++  return (success == G_TEST_RUN_SUCCESS || ++          success == G_TEST_RUN_SKIPPED); + } +  + static int +diff --git a/glib/tests/testing.c b/glib/tests/testing.c +index 20c2e79..1025f12 100644 +--- a/glib/tests/testing.c ++++ b/glib/tests/testing.c +@@ -575,10 +575,93 @@ test_nonfatal (void) +   g_test_trap_assert_stdout ("*The End*"); + } +  ++static void ++test_skip (void) ++{ ++  g_test_skip ("Skipped should count as passed, not failed"); ++} ++ ++static void ++test_pass (void) ++{ ++} ++ ++static const char *argv0; ++ ++static void ++test_skip_all (void) ++{ ++  GPtrArray *argv; ++  GError *error = NULL; ++  int status; ++ ++  argv = g_ptr_array_new (); ++  g_ptr_array_add (argv, (char *) argv0); ++  g_ptr_array_add (argv, "--GTestSubprocess"); ++  g_ptr_array_add (argv, "-p"); ++  g_ptr_array_add (argv, "/misc/skip"); ++  g_ptr_array_add (argv, NULL); ++ ++  g_spawn_sync (NULL, (char **) argv->pdata, NULL, ++                G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL, ++                NULL, NULL, NULL, NULL, &status, ++                &error); ++  g_assert_no_error (error); ++ ++  g_spawn_check_exit_status (status, &error); ++  g_assert_error (error, G_SPAWN_EXIT_ERROR, 77); ++  g_clear_error (&error); ++ ++  g_ptr_array_set_size (argv, 0); ++  g_ptr_array_add (argv, (char *) argv0); ++  g_ptr_array_add (argv, "--GTestSubprocess"); ++  g_ptr_array_add (argv, "-p"); ++  g_ptr_array_add (argv, "/misc/skip"); ++  g_ptr_array_add (argv, "-p"); ++  g_ptr_array_add (argv, "/misc/skip-all/subprocess/skip1"); ++  g_ptr_array_add (argv, "-p"); ++  g_ptr_array_add (argv, "/misc/skip-all/subprocess/skip2"); ++  g_ptr_array_add (argv, NULL); ++ ++  g_spawn_sync (NULL, (char **) argv->pdata, NULL, ++                G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL, ++                NULL, NULL, NULL, NULL, &status, ++                &error); ++  g_assert_no_error (error); ++ ++  g_spawn_check_exit_status (status, &error); ++  g_assert_error (error, G_SPAWN_EXIT_ERROR, 77); ++  g_clear_error (&error); ++ ++  g_ptr_array_set_size (argv, 0); ++  g_ptr_array_add (argv, (char *) argv0); ++  g_ptr_array_add (argv, "--GTestSubprocess"); ++  g_ptr_array_add (argv, "-p"); ++  g_ptr_array_add (argv, "/misc/skip"); ++  g_ptr_array_add (argv, "-p"); ++  g_ptr_array_add (argv, "/misc/skip-all/subprocess/pass"); ++  g_ptr_array_add (argv, "-p"); ++  g_ptr_array_add (argv, "/misc/skip-all/subprocess/skip1"); ++  g_ptr_array_add (argv, NULL); ++ ++  g_spawn_sync (NULL, (char **) argv->pdata, NULL, ++                G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL, ++                NULL, NULL, NULL, NULL, &status, ++                &error); ++  g_assert_no_error (error); ++ ++  g_spawn_check_exit_status (status, &error); ++  g_assert_no_error (error); ++ ++  g_ptr_array_unref (argv); ++} ++ + int + main (int   argc, +       char *argv[]) + { ++  argv0 = argv[0]; ++ +   g_test_init (&argc, &argv, NULL); +  +   g_test_add_func ("/random-generator/rand-1", test_rand1); +@@ -633,5 +716,11 @@ main (int   argc, +  +   g_test_add_func ("/misc/nonfatal", test_nonfatal); +  ++  g_test_add_func ("/misc/skip", test_skip); ++  g_test_add_func ("/misc/skip-all", test_skip_all); ++  g_test_add_func ("/misc/skip-all/subprocess/skip1", test_skip); ++  g_test_add_func ("/misc/skip-all/subprocess/skip2", test_skip); ++  g_test_add_func ("/misc/skip-all/subprocess/pass", test_pass); ++ +   return g_test_run(); + } diff --git a/meta/recipes-core/glib-2.0/glib-2.0_2.38.2.bb b/meta/recipes-core/glib-2.0/glib-2.0_2.38.2.bb index 9745a9e4af..161f7da358 100644 --- a/meta/recipes-core/glib-2.0/glib-2.0_2.38.2.bb +++ b/meta/recipes-core/glib-2.0/glib-2.0_2.38.2.bb @@ -13,6 +13,7 @@ SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \             file://0001-gio-Fix-Werror-format-string-errors-from-mismatched-.patch \             file://ptest-dbus.patch \             file://ptest-paths.patch \ +           file://gtest-skip-fixes.patch \            "  SRC_URI_append_class-native = " file://glib-gettextize-dir.patch" | 
