diff options
author | P. F. Chimento <philip.chimento@gmail.com> | 2013-04-29 16:21:43 +0200 |
---|---|---|
committer | P. F. Chimento <philip.chimento@gmail.com> | 2013-04-30 09:51:59 +0200 |
commit | 06da78e1eaad8ffc4b1dfbfac1421093755e364a (patch) | |
tree | 9ec55ee73b2fea878c67118cc94aa6fe0abaa50e | |
parent | 449b4d8e8d7c907020665a7a64324f46de67a8bb (diff) |
Crash on eos_window_new (NULL)
Creating a window that is not tied to an application should be a
serious programming error.
[#42]
-rw-r--r-- | endless/eoswindow.c | 4 | ||||
-rw-r--r-- | test/test-window.c | 24 |
2 files changed, 14 insertions, 14 deletions
diff --git a/endless/eoswindow.c b/endless/eoswindow.c index 7cd7f28..f74911d 100644 --- a/endless/eoswindow.c +++ b/endless/eoswindow.c @@ -83,8 +83,8 @@ eos_window_set_property (GObject *object, gtk_window_set_application (GTK_WINDOW (self), GTK_APPLICATION (self->priv->application)); if (self->priv->application == NULL) - g_critical ("In order to create a window, you must have an application " - "for it to connect to."); + g_error ("In order to create a window, you must have an application " + "for it to connect to."); break; default: diff --git a/test/test-window.c b/test/test-window.c index 9127120..c7641bd 100644 --- a/test/test-window.c +++ b/test/test-window.c @@ -7,8 +7,8 @@ #include "run-tests.h" #define EXPECTED_NULL_APPLICATION_ERRMSG \ - "In order to create a window, you must have an application for it to " \ - "connect to." + "*In order to create a window, you must have an application for it to " \ + "connect to.*" static void test_assign_application (GApplication *app) @@ -24,18 +24,18 @@ test_assign_application (GApplication *app) static void test_application_not_null (GApplication *app) { - GtkWidget *win; - - g_test_expect_message (TEST_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, - EXPECTED_NULL_APPLICATION_ERRMSG); - - win = eos_window_new (NULL); + /* Unix-only test */ + if (g_test_trap_fork(0 /* timeout */, G_TEST_TRAP_SILENCE_STDERR)) + { + GtkWidget *win = eos_window_new (NULL); + gtk_widget_destroy (win); + exit (0); + } - g_test_assert_expected_messages (); + g_test_trap_assert_failed (); + g_test_trap_assert_stderr (EXPECTED_NULL_APPLICATION_ERRMSG); - gtk_widget_destroy (win); - g_application_release (app); - g_application_quit (app); /* Doesn't quit when win is destroyed */ + g_application_quit (app); /* No window, so otherwise won't quit */ } static void |