[gcr] More reliable means of checking if object was finalized



commit dd6aba8b94f90265124b0b11e279677769906bb1
Author: Stef Walter <stefw gnome org>
Date:   Sat Aug 17 10:49:24 2013 +0200

    More reliable means of checking if object was finalized
    
    Don't try to use G_IS_OBJECT() to see if an object was finalized
    as this segfaults in corner cases, even with our crafty check
    for a pointer within our memory space.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=705139

 egg/egg-testing.c                   |   22 -----------------
 egg/egg-testing.h                   |   10 -------
 gck/tests/test-gck-crypto.c         |   15 +++++++----
 gck/tests/test-gck-enumerator.c     |   18 +++++++++----
 gck/tests/test-gck-module.c         |    3 +-
 gck/tests/test-gck-session.c        |   15 +++++++----
 gcr/tests/test-gnupg-key.c          |    3 +-
 gcr/tests/test-gnupg-process.c      |   18 ++++++++++++-
 gcr/tests/test-memory-icon.c        |    9 ++++--
 gcr/tests/test-parser.c             |    3 +-
 gcr/tests/test-secret-exchange.c    |    7 ++++-
 gcr/tests/test-subject-public-key.c |   16 ++++++++----
 gcr/tests/test-system-prompt.c      |   45 +++++++++++++++++++++++-----------
 ui/tests/frob-system-prompt.c       |    3 +-
 14 files changed, 108 insertions(+), 79 deletions(-)
---
diff --git a/egg/egg-testing.c b/egg/egg-testing.c
index 2f7aada..805a972 100644
--- a/egg/egg-testing.c
+++ b/egg/egg-testing.c
@@ -108,28 +108,6 @@ egg_assertion_message_cmpmem (const char     *domain,
 static void (*wait_stop_impl) (void);
 static gboolean (*wait_until_impl) (int timeout);
 
-void
-egg_assertion_not_object (const char *domain,
-                          const char *file,
-                          int         line,
-                          const char *func,
-                          const char *expr,
-                          gpointer was_object)
-{
-       gchar *s;
-
-#ifdef WITH_VALGRIND
-       if (RUNNING_ON_VALGRIND)
-               return;
-#endif
-
-       if (G_IS_OBJECT (was_object)) {
-               s = g_strdup_printf ("assertion failed: %s is still referenced", expr);
-               g_assertion_message (domain, file, line, func, s);
-               g_free (s);
-       }
-}
-
 #if 0
 void
 egg_test_wait_stop (void)
diff --git a/egg/egg-testing.h b/egg/egg-testing.h
index a034b15..44c7fb3 100644
--- a/egg/egg-testing.h
+++ b/egg/egg-testing.h
@@ -50,16 +50,6 @@ void       egg_assertion_message_cmpmem        (const char *domain, const char *
                                                 gsize n_arg1, const char *cmp,
                                                 gconstpointer arg2, gsize n_arg2);
 
-#define egg_assert_not_object(p) \
-       (egg_assertion_not_object (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, #p, (p)))
-
-void       egg_assertion_not_object            (const char *domain,
-                                                const char *file,
-                                                int         line,
-                                                const char *func,
-                                                const char *expr,
-                                                gpointer was_object);
-
 gboolean   egg_testing_on_valgrind             (void);
 
 gchar *    egg_test_escape_data                (const guchar *data,
diff --git a/gck/tests/test-gck-crypto.c b/gck/tests/test-gck-crypto.c
index c70a765..492ad06 100644
--- a/gck/tests/test-gck-crypto.c
+++ b/gck/tests/test-gck-crypto.c
@@ -60,6 +60,7 @@ setup (Test *test, gconstpointer unused)
        test->module = gck_module_initialize (BUILDDIR "/.libs/libmock-test-module.so", NULL, &err);
        g_assert_no_error (err);
        g_assert (GCK_IS_MODULE (test->module));
+       g_object_add_weak_pointer (G_OBJECT (test->module), (gpointer *)&test->module);
 
        slots = gck_module_get_slots (test->module, TRUE);
        g_assert (slots != NULL);
@@ -67,6 +68,7 @@ setup (Test *test, gconstpointer unused)
        test->session = gck_slot_open_session (slots->data, 0, NULL, &err);
        g_assert_no_error (err);
        g_assert (GCK_IS_SESSION (test->session));
+       g_object_add_weak_pointer (G_OBJECT (test->session), (gpointer *)&test->session);
 
        slot = gck_session_get_slot (test->session);
        g_assert (slot);
@@ -74,6 +76,7 @@ setup (Test *test, gconstpointer unused)
        test->session_with_auth = gck_session_from_handle (slot, gck_session_get_handle (test->session), 
GCK_SESSION_AUTHENTICATE);
        g_signal_connect (test->session_with_auth, "discard-handle", G_CALLBACK (on_discard_handle_ignore), 
NULL);
        g_assert (test->session_with_auth);
+       g_object_add_weak_pointer (G_OBJECT (test->session_with_auth), (gpointer *)&test->session_with_auth);
 
        g_object_unref (slot);
        gck_list_unref_free (slots);
@@ -86,9 +89,9 @@ teardown (Test *test, gconstpointer unused)
        g_object_unref (test->module);
        g_object_unref (test->session_with_auth);
 
-       egg_assert_not_object (test->session);
-       egg_assert_not_object (test->session_with_auth);
-       egg_assert_not_object (test->module);
+       g_assert (test->session == NULL);
+       g_assert (test->session_with_auth == NULL);
+       g_assert (test->module == NULL);
 }
 
 static void
@@ -280,6 +283,7 @@ test_login_context_specific (Test *test, gconstpointer unused)
        /* Find the right key */
        key = find_key (test->session, CKA_SIGN, CKM_MOCK_PREFIX);
        g_assert (GCK_IS_OBJECT (key));
+       g_object_add_weak_pointer (G_OBJECT (key), (gpointer *)&key);
 
        /* Simple one */
        output = gck_session_sign (test->session, key, CKM_MOCK_PREFIX, (const guchar*)"TV Monster", 11, 
&n_output, NULL, &error);
@@ -288,7 +292,7 @@ test_login_context_specific (Test *test, gconstpointer unused)
        g_error_free (error);
 
        g_object_unref (key);
-       egg_assert_not_object (key);
+       g_assert (key == NULL);
 }
 
 static void
@@ -349,6 +353,7 @@ test_verify (Test *test, gconstpointer unused)
        /* Find the right key */
        key = find_key (test->session, CKA_VERIFY, CKM_MOCK_PREFIX);
        g_assert (GCK_IS_OBJECT (key));
+       g_object_add_weak_pointer (G_OBJECT (key), (gpointer *)&key);
 
        /* Simple one */
        ret = gck_session_verify (test->session, key, CKM_MOCK_PREFIX, (const guchar*)"Labarbara", 10,
@@ -386,7 +391,7 @@ test_verify (Test *test, gconstpointer unused)
        g_object_unref (result);
 
        g_object_unref (key);
-       egg_assert_not_object (key);
+       g_assert (key == NULL);
 }
 
 static void
diff --git a/gck/tests/test-gck-enumerator.c b/gck/tests/test-gck-enumerator.c
index bbbea5f..25197f5 100644
--- a/gck/tests/test-gck-enumerator.c
+++ b/gck/tests/test-gck-enumerator.c
@@ -53,6 +53,7 @@ setup (Test *test, gconstpointer unused)
        test->module = gck_module_initialize (BUILDDIR "/.libs/libmock-test-module.so", NULL, &err);
        g_assert_no_error (err);
        g_assert (GCK_IS_MODULE (test->module));
+       g_object_add_weak_pointer (G_OBJECT (test->module), (gpointer *)&test->module);
 
        test->modules = g_list_append (NULL, g_object_ref (test->module));
 }
@@ -63,7 +64,7 @@ teardown (Test *test, gconstpointer unused)
        gck_list_unref_free (test->modules);
 
        g_object_unref (test->module);
-       egg_assert_not_object (test->module);
+       g_assert (test->module == NULL);
 
        g_thread_pool_stop_unused_threads ();
 }
@@ -294,8 +295,10 @@ test_authenticate_interaction (Test *test,
        uri_data = gck_uri_data_new ();
        en = _gck_enumerator_new_for_modules (test->modules, GCK_SESSION_LOGIN_USER, uri_data);
        g_assert (GCK_IS_ENUMERATOR (en));
+       g_object_add_weak_pointer (G_OBJECT (en), (gpointer *)&en);
 
        interaction = mock_interaction_new ("booo");
+       g_object_add_weak_pointer (G_OBJECT (interaction), (gpointer *)&interaction);
        g_object_set (en, "interaction", interaction, NULL);
 
        check = NULL;
@@ -306,13 +309,14 @@ test_authenticate_interaction (Test *test,
 
        obj = gck_enumerator_next (en, NULL, &error);
        g_assert (GCK_IS_OBJECT (obj));
+       g_object_add_weak_pointer (G_OBJECT (obj), (gpointer *)&obj);
 
        g_object_unref (obj);
        g_object_unref (en);
 
-       egg_assert_not_object (en);
-       egg_assert_not_object (obj);
-       egg_assert_not_object (interaction);
+       g_assert (en == NULL);
+       g_assert (obj == NULL);
+       g_assert (interaction == NULL);
 }
 
 static gboolean
@@ -348,17 +352,19 @@ test_authenticate_compat (Test *test,
        uri_data = gck_uri_data_new ();
        en = _gck_enumerator_new_for_modules (test->modules, GCK_SESSION_LOGIN_USER, uri_data);
        g_assert (GCK_IS_ENUMERATOR (en));
+       g_object_add_weak_pointer (G_OBJECT (en), (gpointer *)&en);
 
        obj = gck_enumerator_next (en, NULL, &error);
        g_assert (GCK_IS_OBJECT (obj));
+       g_object_add_weak_pointer (G_OBJECT (obj), (gpointer *)&obj);
 
        g_object_unref (obj);
        g_object_unref (en);
 
        g_signal_handler_disconnect (test->modules->data, sig);
 
-       egg_assert_not_object (obj);
-       egg_assert_not_object (en);
+       g_assert (obj == NULL);
+       g_assert (en == NULL);
 }
 
 static void
diff --git a/gck/tests/test-gck-module.c b/gck/tests/test-gck-module.c
index 99d2d61..10c7606 100644
--- a/gck/tests/test-gck-module.c
+++ b/gck/tests/test-gck-module.c
@@ -45,13 +45,14 @@ setup (Test *test, gconstpointer unused)
        test->module = gck_module_initialize (BUILDDIR "/.libs/libmock-test-module.so", NULL, &err);
        g_assert_no_error (err);
        g_assert (test->module);
+       g_object_add_weak_pointer (G_OBJECT (test->module), (gpointer *)&test->module);
 }
 
 static void
 teardown (Test *test, gconstpointer unused)
 {
        g_object_unref (test->module);
-       egg_assert_not_object (test->module);
+       g_assert (test->module == NULL);
 }
 
 static void
diff --git a/gck/tests/test-gck-session.c b/gck/tests/test-gck-session.c
index f23a832..1bd2569 100644
--- a/gck/tests/test-gck-session.c
+++ b/gck/tests/test-gck-session.c
@@ -53,6 +53,7 @@ setup (Test *test, gconstpointer unused)
        test->module = gck_module_initialize (BUILDDIR "/.libs/libmock-test-module.so", NULL, &err);
        g_assert_no_error (err);
        g_assert (GCK_IS_MODULE (test->module));
+       g_object_add_weak_pointer (G_OBJECT (test->module), (gpointer *)&test->module);
 
        slots = gck_module_get_slots (test->module, TRUE);
        g_assert (slots != NULL);
@@ -60,10 +61,12 @@ setup (Test *test, gconstpointer unused)
        test->slot = GCK_SLOT (slots->data);
        g_object_ref (test->slot);
        gck_list_unref_free (slots);
+       g_object_add_weak_pointer (G_OBJECT (test->slot), (gpointer *)&test->slot);
 
        test->session = gck_slot_open_session (test->slot, 0, NULL, &err);
        g_assert_no_error (err);
        g_assert (GCK_IS_SESSION (test->session));
+       g_object_add_weak_pointer (G_OBJECT (test->session), (gpointer *)&test->session);
 }
 
 static void
@@ -73,9 +76,9 @@ teardown (Test *test, gconstpointer unused)
        g_object_unref (test->slot);
        g_object_unref (test->module);
 
-       egg_assert_not_object (test->session);
-       egg_assert_not_object (test->slot);
-       egg_assert_not_object (test->module);
+       g_assert (test->session == NULL);
+       g_assert (test->slot == NULL);
+       g_assert (test->module == NULL);
 }
 
 static void
@@ -137,15 +140,17 @@ test_open_close_session (Test *test, gconstpointer unused)
        g_assert (result != NULL);
 
        /* Get the result */
+       g_object_add_weak_pointer (G_OBJECT (result), (gpointer *)&result);
        sess = gck_slot_open_session_finish (test->slot, result, &err);
        g_assert_no_error (err);
        g_assert (GCK_IS_SESSION (sess));
+       g_object_add_weak_pointer (G_OBJECT (sess), (gpointer *)&sess);
 
        g_object_unref (result);
-       egg_assert_not_object (result);
+       g_assert (result == NULL);
 
        g_object_unref (sess);
-       egg_assert_not_object (sess);
+       g_assert (sess == NULL);
 }
 
 static void
diff --git a/gcr/tests/test-gnupg-key.c b/gcr/tests/test-gnupg-key.c
index c31c264..1bf4dfc 100644
--- a/gcr/tests/test-gnupg-key.c
+++ b/gcr/tests/test-gnupg-key.c
@@ -58,6 +58,7 @@ setup (Test *test, gconstpointer unused)
        test->records = records;
 
        test->key = _gcr_gnupg_key_new (records, NULL);
+       g_object_add_weak_pointer (G_OBJECT (test->key), (gpointer *)&test->key);
 
        records = g_ptr_array_new_with_free_func (_gcr_record_free);
        g_ptr_array_add (records, _gcr_record_parse_colons 
("pub:u:2048:1:4842D952AFC000FD:1305189489:::u:::scESC:", -1));
@@ -78,7 +79,7 @@ static void
 teardown (Test *test, gconstpointer unused)
 {
        g_object_unref (test->key);
-       egg_assert_not_object (test->key);
+       g_assert (test->key == NULL);
 
        g_ptr_array_unref (test->records);
        g_ptr_array_unref (test->pubset);
diff --git a/gcr/tests/test-gnupg-process.c b/gcr/tests/test-gnupg-process.c
index aa18c01..76048ec 100644
--- a/gcr/tests/test-gnupg-process.c
+++ b/gcr/tests/test-gnupg-process.c
@@ -63,9 +63,9 @@ teardown (Test *test, gconstpointer unused)
        while (g_main_context_iteration (NULL, FALSE));
 
        if (test->result)
-               egg_assert_not_object (test->result);
+               g_assert (test->result == NULL);
        if (test->process)
-               egg_assert_not_object (test->process);
+               g_assert (test->process == NULL);
 
        if (test->output_buf)
                g_string_free (test->output_buf, TRUE);
@@ -82,6 +82,7 @@ test_create (Test *test, gconstpointer unused)
        gchar *value;
 
        test->process = _gcr_gnupg_process_new ("/the/directory", "/path/to/executable");
+       g_object_add_weak_pointer (G_OBJECT (test->process), (gpointer *)&test->process);
 
        g_object_get (test->process, "directory", &value, NULL);
        g_assert_cmpstr (value, ==, "/the/directory");
@@ -106,6 +107,7 @@ on_async_ready (GObject *source, GAsyncResult *result, gpointer user_data)
        g_object_unref (result_source);
 
        test->result = g_object_ref (result);
+       g_object_add_weak_pointer (G_OBJECT (test->result), (gpointer *)&test->result);
        egg_test_wait_stop ();
 }
 
@@ -178,6 +180,7 @@ test_run_simple_output (Test *test, gconstpointer unused)
 
        script = build_script_path ("mock-simple-output");
        test->process = _gcr_gnupg_process_new (NULL, script);
+       g_object_add_weak_pointer (G_OBJECT (test->process), (gpointer *)&test->process);
        g_free (script);
 
        output = _gcr_callback_output_stream_new (on_process_output_data, test, NULL);
@@ -205,6 +208,7 @@ test_run_simple_error (Test *test, gconstpointer unused)
 
        script = build_script_path ("mock-simple-error");
        test->process = _gcr_gnupg_process_new (NULL, script);
+       g_object_add_weak_pointer (G_OBJECT (test->process), (gpointer *)&test->process);
        g_free (script);
 
        g_signal_connect (test->process, "error-line", G_CALLBACK (on_process_error_line), test);
@@ -231,6 +235,7 @@ test_run_status_and_output (Test *test, gconstpointer unused)
 
        script = build_script_path ("mock-status-and-output");
        test->process = _gcr_gnupg_process_new (NULL, script);
+       g_object_add_weak_pointer (G_OBJECT (test->process), (gpointer *)&test->process);
        g_free (script);
 
        output = _gcr_callback_output_stream_new (on_process_output_data, test, NULL);
@@ -269,6 +274,7 @@ test_run_status_and_attribute (Test *test, gconstpointer unused)
 
        script = build_script_path ("mock-status-and-attribute");
        test->process = _gcr_gnupg_process_new (NULL, script);
+       g_object_add_weak_pointer (G_OBJECT (test->process), (gpointer *)&test->process);
        g_free (script);
 
        output = _gcr_callback_output_stream_new (on_process_attribute_data, test, NULL);
@@ -320,6 +326,7 @@ test_run_arguments_and_environment (Test *test, gconstpointer unused)
 
        script = build_script_path ("mock-arguments-environ");
        test->process = _gcr_gnupg_process_new (NULL, script);
+       g_object_add_weak_pointer (G_OBJECT (test->process), (gpointer *)&test->process);
        g_free (script);
 
        output = _gcr_callback_output_stream_new (on_process_output_data, test, NULL);
@@ -355,6 +362,7 @@ test_run_with_homedir (Test *test, gconstpointer unused)
 
        script = build_script_path ("mock-with-homedir");
        test->process = _gcr_gnupg_process_new (SRCDIR, script);
+       g_object_add_weak_pointer (G_OBJECT (test->process), (gpointer *)&test->process);
        g_free (script);
 
        output = _gcr_callback_output_stream_new (on_process_output_data, test, NULL);
@@ -389,6 +397,7 @@ test_run_with_input_and_output (Test *test,
 
        script = build_script_path ("mock-echo");
        test->process = _gcr_gnupg_process_new (SRCDIR, script);
+       g_object_add_weak_pointer (G_OBJECT (test->process), (gpointer *)&test->process);
        g_free (script);
 
        input = g_memory_input_stream_new_from_data ((gpointer)data, -1, NULL);
@@ -424,6 +433,7 @@ test_run_bad_executable (Test *test, gconstpointer unused)
 
        script = build_script_path ("mock-invalid");
        test->process = _gcr_gnupg_process_new (NULL, script);
+       g_object_add_weak_pointer (G_OBJECT (test->process), (gpointer *)&test->process);
        g_free (script);
 
        _gcr_gnupg_process_run_async (test->process, argv, NULL, 0, NULL, on_async_ready, test);
@@ -446,6 +456,7 @@ test_run_fail_exit (Test *test, gconstpointer unused)
 
        script = build_script_path ("mock-fail-exit");
        test->process = _gcr_gnupg_process_new (NULL, script);
+       g_object_add_weak_pointer (G_OBJECT (test->process), (gpointer *)&test->process);
        g_free (script);
 
        _gcr_gnupg_process_run_async (test->process, argv, NULL, 0, NULL, on_async_ready, test);
@@ -469,6 +480,7 @@ test_run_fail_signal (Test *test, gconstpointer unused)
 
        script = build_script_path ("mock-fail-signal");
        test->process = _gcr_gnupg_process_new (NULL, script);
+       g_object_add_weak_pointer (G_OBJECT (test->process), (gpointer *)&test->process);
        g_free (script);
 
        _gcr_gnupg_process_run_async (test->process, argv, NULL, 0, NULL, on_async_ready, test);
@@ -495,6 +507,7 @@ test_run_and_cancel (Test *test, gconstpointer unused)
 
        script = build_script_path ("mock-simple-output");
        test->process = _gcr_gnupg_process_new (NULL, script);
+       g_object_add_weak_pointer (G_OBJECT (test->process), (gpointer *)&test->process);
        g_free (script);
 
        _gcr_gnupg_process_run_async (test->process, argv, NULL, 0, cancellable, on_async_ready, test);
@@ -536,6 +549,7 @@ test_run_and_cancel_later (Test *test, gconstpointer unused)
 
        script = build_script_path ("mock-simple-output");
        test->process = _gcr_gnupg_process_new (NULL, script);
+       g_object_add_weak_pointer (G_OBJECT (test->process), (gpointer *)&test->process);
        output = _gcr_callback_output_stream_new (on_process_output_cancel, NULL, NULL);
        _gcr_gnupg_process_set_output_stream (test->process, output);
        g_object_unref (output);
diff --git a/gcr/tests/test-memory-icon.c b/gcr/tests/test-memory-icon.c
index bbcacae..abcb265 100644
--- a/gcr/tests/test-memory-icon.c
+++ b/gcr/tests/test-memory-icon.c
@@ -61,6 +61,7 @@ setup (Test *test, gconstpointer unused)
 {
        test->icon = _gcr_memory_icon_new ("application/octet-stream",
                                           test_data, sizeof (test_data));
+       g_object_add_weak_pointer (G_OBJECT (test->icon), (gpointer *)&test->icon);
 }
 
 static void
@@ -70,10 +71,10 @@ teardown (Test *test, gconstpointer unused)
 
        if (test->result) {
                g_object_unref (test->result);
-               egg_assert_not_object (test->result);
+               g_assert (test->result == NULL);
        }
 
-       egg_assert_not_object (test->icon);
+       g_assert (test->icon == NULL);
 }
 
 
@@ -167,6 +168,7 @@ on_async_ready (GObject *source, GAsyncResult *result, gpointer user_data)
        g_object_unref (result_source);
 
        test->result = g_object_ref (result);
+       g_object_add_weak_pointer (G_OBJECT (test->result), (gpointer *)&test->result);
        egg_test_wait_stop ();
 }
 
@@ -187,6 +189,7 @@ test_load_async (Test *test, gconstpointer unused)
        g_assert (is != NULL);
        g_assert_no_error (error);
        g_assert_cmpstr (type, ==, "application/octet-stream");
+       g_object_add_weak_pointer (G_OBJECT (is), (gpointer *)&is);
 
        if (!g_input_stream_read_all (is, buf, sizeof (buf), &length, NULL, &error))
                g_assert_not_reached ();
@@ -196,7 +199,7 @@ test_load_async (Test *test, gconstpointer unused)
 
        g_free (type);
        g_object_unref (is);
-       egg_assert_not_object (is);
+       g_assert (is == NULL);
 }
 
 int
diff --git a/gcr/tests/test-parser.c b/gcr/tests/test-parser.c
index 8b8b186..510abc0 100644
--- a/gcr/tests/test-parser.c
+++ b/gcr/tests/test-parser.c
@@ -71,6 +71,7 @@ ensure_block_can_be_parsed (GcrDataFormat format,
        g_assert (n_block);
 
        parser = gcr_parser_new ();
+       g_object_add_weak_pointer (G_OBJECT (parser), (gpointer *)&parser);
        gcr_parser_format_disable (parser, -1);
        gcr_parser_format_enable (parser, format);
        result = gcr_parser_parse_data (parser, block, n_block, &error);
@@ -82,7 +83,7 @@ ensure_block_can_be_parsed (GcrDataFormat format,
        }
 
        g_object_unref (parser);
-       egg_assert_not_object (parser);
+       g_assert (parser == NULL);
 }
 
 static void
diff --git a/gcr/tests/test-secret-exchange.c b/gcr/tests/test-secret-exchange.c
index 810ec69..dba396e 100644
--- a/gcr/tests/test-secret-exchange.c
+++ b/gcr/tests/test-secret-exchange.c
@@ -40,8 +40,11 @@ setup (Test *test, gconstpointer unused)
 {
        test->caller = gcr_secret_exchange_new (NULL);
        g_assert (GCR_IS_SECRET_EXCHANGE (test->caller));
+       g_object_add_weak_pointer (G_OBJECT (test->caller), (gpointer *)&test->caller);
+
        test->callee = gcr_secret_exchange_new (NULL);
        g_assert (GCR_IS_SECRET_EXCHANGE (test->callee));
+       g_object_add_weak_pointer (G_OBJECT (test->callee), (gpointer *)&test->callee);
 }
 
 static void
@@ -49,10 +52,10 @@ teardown (Test *test,
           gconstpointer unused)
 {
        g_object_unref (test->caller);
-       egg_assert_not_object (test->caller);
+       g_assert (test->caller == NULL);
 
        g_object_unref (test->callee);
-       egg_assert_not_object (test->callee);
+       g_assert (test->callee == NULL);
 }
 
 static void
diff --git a/gcr/tests/test-subject-public-key.c b/gcr/tests/test-subject-public-key.c
index eb06ec2..85927e2 100644
--- a/gcr/tests/test-subject-public-key.c
+++ b/gcr/tests/test-subject-public-key.c
@@ -237,9 +237,12 @@ setup_module (TestModule *test,
        gck_assert_cmprv (rv, ==, CKR_OK);
 
        test->module = gck_module_new (&test->funcs);
+       g_object_add_weak_pointer (G_OBJECT (test->module), (gpointer *)&test->module);
+
        slot = gck_slot_from_handle (test->module, GCK_MOCK_SLOT_ONE_ID);
        test->session = gck_session_open (slot, GCK_SESSION_READ_ONLY, NULL, NULL, &error);
        g_assert_no_error (error);
+       g_object_add_weak_pointer (G_OBJECT (test->session), (gpointer *)&test->session);
 
        g_object_unref (slot);
 }
@@ -251,10 +254,10 @@ teardown_module (TestModule *test,
        CK_RV rv;
 
        g_object_unref (test->session);
-       egg_assert_not_object (test->session);
+       g_assert (test->session == NULL);
 
        g_object_unref (test->module);
-       egg_assert_not_object (test->module);
+       g_assert (test->module == NULL);
 
        rv = (test->funcs.C_Finalize) (NULL);
        gck_assert_cmprv (rv, ==, CKR_OK);
@@ -283,16 +286,19 @@ setup_loading (TestLoading *test,
        gck_builder_add_string (&builder, CKA_ID, id);
        handle = gck_mock_module_add_object (gck_builder_end (&builder));
        test->crt_object = gck_object_from_handle (test->mo.session, handle);
+       g_object_add_weak_pointer (G_OBJECT (test->crt_object), (gpointer *)&test->crt_object);
 
        gck_builder_add_all (&builder, test->at.pub_attrs);
        gck_builder_add_string (&builder, CKA_ID, id);
        handle = gck_mock_module_add_object (gck_builder_end (&builder));
        test->pub_object = gck_object_from_handle (test->mo.session, handle);
+       g_object_add_weak_pointer (G_OBJECT (test->pub_object), (gpointer *)&test->pub_object);
 
        gck_builder_add_all (&builder, test->at.prv_attrs);
        gck_builder_add_string (&builder, CKA_ID, id);
        handle = gck_mock_module_add_object (gck_builder_end (&builder));
        test->prv_object = gck_object_from_handle (test->mo.session, handle);
+       g_object_add_weak_pointer (G_OBJECT (test->prv_object), (gpointer *)&test->prv_object);
 }
 
 static void
@@ -300,13 +306,13 @@ teardown_loading (TestLoading *test,
                   gconstpointer fixture)
 {
        g_object_unref (test->crt_object);
-       egg_assert_not_object (test->crt_object);
+       g_assert (test->crt_object == NULL);
 
        g_object_unref (test->prv_object);
-       egg_assert_not_object (test->prv_object);
+       g_assert (test->prv_object == NULL);
 
        g_object_unref (test->pub_object);
-       egg_assert_not_object (test->pub_object);
+       g_assert (test->pub_object == NULL);
 
        teardown_module (&test->mo, NULL);
        teardown_attributes (&test->at, fixture);
diff --git a/gcr/tests/test-system-prompt.c b/gcr/tests/test-system-prompt.c
index 1135db7..4f24d0d 100644
--- a/gcr/tests/test-system-prompt.c
+++ b/gcr/tests/test-system-prompt.c
@@ -105,13 +105,14 @@ test_prompt_password (Test *test,
        prompt = gcr_system_prompt_open_for_prompter (test->prompter_name, 0, NULL, &error);
        g_assert_no_error (error);
        g_assert (GCR_IS_SYSTEM_PROMPT (prompt));
+       g_object_add_weak_pointer (G_OBJECT (prompt), (gpointer *)&prompt);
 
        password = gcr_prompt_password_run (prompt, NULL, &error);
        g_assert_no_error (error);
        g_assert_cmpstr (password, ==, "booo");
 
        g_object_unref (prompt);
-       egg_assert_not_object (prompt);
+       g_assert (prompt == NULL);
 }
 
 static void
@@ -127,6 +128,7 @@ test_password_in_exchange (Test *test,
        prompt = gcr_system_prompt_open_for_prompter (test->prompter_name, 0, NULL, &error);
        g_assert_no_error (error);
        g_assert (GCR_IS_SYSTEM_PROMPT (prompt));
+       g_object_add_weak_pointer (G_OBJECT (prompt), (gpointer *)&prompt);
 
        gcr_prompt_password_run (prompt, NULL, &error);
        g_assert_no_error (error);
@@ -137,7 +139,7 @@ test_password_in_exchange (Test *test,
 
        g_object_unref (exchange);
        g_object_unref (prompt);
-       egg_assert_not_object (prompt);
+       g_assert (prompt == NULL);
 }
 
 static void
@@ -159,6 +161,7 @@ test_password_custom_exchange (Test *test,
                                 NULL);
        g_assert_no_error (error);
        g_assert (GCR_IS_SYSTEM_PROMPT (prompt));
+       g_object_add_weak_pointer (G_OBJECT (prompt), (gpointer *)&prompt);
 
        password = gcr_prompt_password_run (GCR_PROMPT (prompt), NULL, &error);
        g_assert_cmpstr (password, ==, "booo");
@@ -169,7 +172,7 @@ test_password_custom_exchange (Test *test,
 
        g_object_unref (exchange);
        g_object_unref (prompt);
-       egg_assert_not_object (prompt);
+       g_assert (prompt == NULL);
 }
 
 static void
@@ -203,6 +206,7 @@ test_async_password (Test *test,
        g_assert_no_error (error);
        g_assert (GCR_IS_SYSTEM_PROMPT (prompt));
        g_clear_object (&result);
+       g_object_add_weak_pointer (G_OBJECT (prompt), (gpointer *)&prompt);
 
        gcr_prompt_password_async (prompt, NULL,
                                   on_async_result, &result);
@@ -230,13 +234,14 @@ test_prompt_confirm (Test *test,
        prompt = gcr_system_prompt_open_for_prompter (test->prompter_name, 0, NULL, &error);
        g_assert_no_error (error);
        g_assert (GCR_IS_SYSTEM_PROMPT (prompt));
+       g_object_add_weak_pointer (G_OBJECT (prompt), (gpointer *)&prompt);
 
        ret = gcr_prompt_confirm_run (prompt, NULL, &error);
        g_assert_no_error (error);
        g_assert (ret == TRUE);
 
        g_object_unref (prompt);
-       egg_assert_not_object (prompt);
+       g_assert (prompt == NULL);
 }
 
 static void
@@ -260,6 +265,7 @@ test_async_confirm (Test *test,
        g_assert_no_error (error);
        g_assert (GCR_IS_SYSTEM_PROMPT (prompt));
        g_clear_object (&result);
+       g_object_add_weak_pointer (G_OBJECT (prompt), (gpointer *)&prompt);
 
        gcr_prompt_confirm_async (prompt, NULL, on_async_result, &result);
        g_assert (result == NULL);
@@ -271,7 +277,7 @@ test_async_confirm (Test *test,
        g_clear_object (&result);
 
        g_object_unref (prompt);
-       egg_assert_not_object (prompt);
+       g_assert (prompt == NULL);
 }
 
 static void
@@ -287,13 +293,14 @@ test_cancel_password (Test *test,
        prompt = gcr_system_prompt_open_for_prompter (test->prompter_name, 0, NULL, &error);
        g_assert_no_error (error);
        g_assert (GCR_IS_SYSTEM_PROMPT (prompt));
+       g_object_add_weak_pointer (G_OBJECT (prompt), (gpointer *)&prompt);
 
        password = gcr_prompt_password_run (prompt, NULL, &error);
        g_assert_no_error (error);
        g_assert_cmpstr (password, ==, NULL);
 
        g_object_unref (prompt);
-       egg_assert_not_object (prompt);
+       g_assert (prompt == NULL);
 }
 
 static void
@@ -309,13 +316,14 @@ test_cancel_confirm (Test *test,
        prompt = gcr_system_prompt_open_for_prompter (test->prompter_name, 0, NULL, &error);
        g_assert_no_error (error);
        g_assert (GCR_IS_SYSTEM_PROMPT (prompt));
+       g_object_add_weak_pointer (G_OBJECT (prompt), (gpointer *)&prompt);
 
        ret = gcr_prompt_confirm_run (prompt, NULL, &error);
        g_assert_no_error (error);
        g_assert (ret == FALSE);
 
        g_object_unref (prompt);
-       egg_assert_not_object (prompt);
+       g_assert (prompt == NULL);
 }
 
 static void
@@ -342,6 +350,7 @@ test_prompt_properties (Test *test,
        prompt = gcr_system_prompt_open_for_prompter (test->prompter_name, 0, NULL, &error);
        g_assert_no_error (error);
        g_assert (GCR_IS_SYSTEM_PROMPT (prompt));
+       g_object_add_weak_pointer (G_OBJECT (prompt), (gpointer *)&prompt);
 
        g_object_set (prompt,
                      "title", "Other Title",
@@ -386,7 +395,7 @@ test_prompt_properties (Test *test,
        g_assert_cmpint (gcr_prompt_get_password_strength (prompt), ==, 0);
 
        g_object_unref (prompt);
-       egg_assert_not_object (prompt);
+       g_assert (prompt == NULL);
 }
 
 static void
@@ -399,6 +408,7 @@ test_prompt_properties_unset (Test *test,
        prompt = gcr_system_prompt_open_for_prompter (test->prompter_name, 0, NULL, &error);
        g_assert_no_error (error);
        g_assert (GCR_IS_SYSTEM_PROMPT (prompt));
+       g_object_add_weak_pointer (G_OBJECT (prompt), (gpointer *)&prompt);
 
        g_assert_cmpstr (gcr_prompt_get_title (prompt), ==, "");
        g_assert_cmpstr (gcr_prompt_get_choice_label (prompt), ==, NULL);
@@ -413,7 +423,7 @@ test_prompt_properties_unset (Test *test,
        g_assert_cmpint (gcr_prompt_get_password_strength (prompt), ==, 0);
 
        g_object_unref (prompt);
-       egg_assert_not_object (prompt);
+       g_assert (prompt == NULL);
 }
 
 
@@ -426,6 +436,7 @@ test_prompt_properties_reset (Test *test,
 
        prompt = gcr_system_prompt_open_for_prompter (test->prompter_name, 0, NULL, &error);
        g_assert_no_error (error);
+       g_object_add_weak_pointer (G_OBJECT (prompt), (gpointer *)&prompt);
 
        g_object_set (prompt,
                      "title", "Other Title",
@@ -466,7 +477,7 @@ test_prompt_properties_reset (Test *test,
        g_assert_cmpint (gcr_prompt_get_password_strength (prompt), ==, 0);
 
        g_object_unref (prompt);
-       egg_assert_not_object (prompt);
+       g_assert (prompt == NULL);
 }
 
 static void
@@ -483,11 +494,13 @@ test_prompt_close (Test *test,
        prompt = gcr_system_prompt_open_for_prompter (test->prompter_name, 1, NULL, &error);
        g_assert_no_error (error);
        g_assert (GCR_IS_SYSTEM_PROMPT (prompt));
+       g_object_add_weak_pointer (G_OBJECT (prompt), (gpointer *)&prompt);
 
        prompt2 = gcr_system_prompt_open_for_prompter (test->prompter_name, 1, NULL, &error);
        g_assert_error (error, GCR_SYSTEM_PROMPT_ERROR, GCR_SYSTEM_PROMPT_IN_PROGRESS);
        g_clear_error (&error);
        g_assert (prompt2 == NULL);
+       g_object_add_weak_pointer (G_OBJECT (prompt), (gpointer *)&prompt);
 
        ret = gcr_prompt_confirm_run (prompt, NULL, &error);
        g_assert_no_error (error);
@@ -506,10 +519,9 @@ test_prompt_close (Test *test,
        g_assert (GCR_IS_SYSTEM_PROMPT (prompt2));
 
        g_object_unref (prompt);
-       g_assert (!G_IS_OBJECT (prompt));
 
        g_object_unref (prompt2);
-       egg_assert_not_object (prompt);
+       g_assert (prompt == NULL);
 }
 
 static void
@@ -537,6 +549,7 @@ test_close_cancels (Test *test,
        prompt = gcr_system_prompt_open_for_prompter (test->prompter_name, 0, NULL, &error);
        g_assert_no_error (error);
        g_assert (GCR_IS_SYSTEM_PROMPT (prompt));
+       g_object_add_weak_pointer (G_OBJECT (prompt), (gpointer *)&prompt);
 
        prompt_closed = FALSE;
        g_signal_connect_after (prompt, "prompt-close", G_CALLBACK (on_prompt_close), &prompt_closed);
@@ -555,7 +568,7 @@ test_close_cancels (Test *test,
        g_clear_object (&result);
 
        g_object_unref (prompt);
-       egg_assert_not_object (prompt);
+       g_assert (prompt == NULL);
 }
 
 static void
@@ -573,6 +586,7 @@ test_close_from_prompter (Test *test,
        prompt = gcr_system_prompt_open_for_prompter (test->prompter_name, 1, NULL, &error);
        g_assert_no_error (error);
        g_assert (GCR_IS_SYSTEM_PROMPT (prompt));
+       g_object_add_weak_pointer (G_OBJECT (prompt), (gpointer *)&prompt);
 
        prompt_closed = FALSE;
        g_signal_connect_after (prompt, "prompt-close", G_CALLBACK (on_prompt_close), &prompt_closed);
@@ -595,7 +609,7 @@ test_close_from_prompter (Test *test,
        g_assert (password == NULL);
 
        g_object_unref (prompt);
-       egg_assert_not_object (prompt);
+       g_assert (prompt == NULL);
 }
 
 static void
@@ -613,6 +627,7 @@ test_after_close_dismisses (Test *test,
        prompt = gcr_system_prompt_open_for_prompter (test->prompter_name, 1, NULL, &error);
        g_assert_no_error (error);
        g_assert (GCR_IS_SYSTEM_PROMPT (prompt));
+       g_object_add_weak_pointer (G_OBJECT (prompt), (gpointer *)&prompt);
 
        prompt_closed = FALSE;
        g_signal_connect_after (prompt, "prompt-close", G_CALLBACK (on_prompt_close), &prompt_closed);
@@ -638,7 +653,7 @@ test_after_close_dismisses (Test *test,
        while (g_main_context_iteration (NULL, FALSE));
 
        g_object_unref (prompt);
-       egg_assert_not_object (prompt);
+       g_assert (prompt == NULL);
 }
 
 typedef struct {
diff --git a/ui/tests/frob-system-prompt.c b/ui/tests/frob-system-prompt.c
index b743adf..21f1829 100644
--- a/ui/tests/frob-system-prompt.c
+++ b/ui/tests/frob-system-prompt.c
@@ -50,6 +50,7 @@ on_prompt_clicked (GtkToolButton *button,
                g_error_free (error);
                return;
        }
+       g_object_add_weak_pointer (G_OBJECT (prompt), (gpointer *)&prompt);
 
        gcr_prompt_set_title (GCR_PROMPT (prompt), "This is the title");
        gcr_prompt_set_message (GCR_PROMPT (prompt), "This is the message");
@@ -69,7 +70,7 @@ on_prompt_clicked (GtkToolButton *button,
 
        g_print ("password: %s\n", password);
        g_object_unref (prompt);
-       egg_assert_not_object (prompt);
+       g_assert (prompt == NULL);
 }
 
 static gboolean


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]