Allow calling soup_test_server_new() multiple times in test programs
authorDan Winship <danw@gnome.org>
Fri, 11 Jun 2010 19:26:53 +0000 (15:26 -0400)
committerDan Winship <danw@gnome.org>
Fri, 11 Jun 2010 19:26:53 +0000 (15:26 -0400)
20 files changed:
tests/auth-test.c
tests/chunk-test.c
tests/coding-test.c
tests/context-test.c
tests/continue-test.c
tests/cookies-test.c
tests/forms-test.c
tests/libsoup.supp
tests/misc-test.c
tests/ntlm-test.c
tests/proxy-test.c
tests/range-test.c
tests/redirect-test.c
tests/server-auth-test.c
tests/sniffing-test.c
tests/streaming-test.c
tests/test-utils.c
tests/test-utils.h
tests/timeout-test.c
tests/xmlrpc-server-test.c

index 15dcd59..cd72d49 100644 (file)
@@ -822,6 +822,7 @@ do_select_auth_test (void)
        g_object_unref (basic_auth_domain);
        g_object_unref (digest_auth_domain);
        soup_uri_free (uri);
+       soup_test_server_quit_unref (server);
 }
 
 int
index 8ce286b..a679cce 100644 (file)
@@ -381,6 +381,7 @@ main (int argc, char **argv)
        soup_uri_free (base_uri);
 
        g_main_loop_unref (loop);
+       soup_test_server_quit_unref (server);
 
        test_cleanup ();
        return errors != 0;
index 288052e..b587a2c 100644 (file)
@@ -192,6 +192,7 @@ main (int argc, char **argv)
        do_coding_test ();
 
        soup_uri_free (base_uri);
+       soup_test_server_quit_unref (server);
 
        test_cleanup ();
        return errors != 0;
index fc203b3..fe9af31 100644 (file)
@@ -270,6 +270,7 @@ main (int argc, char **argv)
        do_test2 ();
 
        g_free (base_uri);
+       soup_test_server_quit_unref (server);
 
        test_cleanup ();
        return errors != 0;
index d9a94a2..dafe182 100644 (file)
@@ -451,6 +451,7 @@ main (int argc, char **argv)
 
        run_tests ();
 
+       soup_test_server_quit_unref (server);
        test_cleanup ();
        return errors != 0;
 }
index fa9f5b0..2b8ebb1 100644 (file)
@@ -114,6 +114,7 @@ main (int argc, char **argv)
 
        soup_uri_free (first_party_uri);
        soup_uri_free (third_party_uri);
+       soup_test_server_quit_unref (server);
 
        test_cleanup ();
 
index 8a7443c..d18ee59 100644 (file)
@@ -432,6 +432,7 @@ main (int argc, char **argv)
 
        g_main_loop_unref (loop);
 
+       soup_test_server_quit_unref (server);
        if (run_tests)
                test_cleanup ();
        return errors != 0;
index 35af861..65eb3c3 100644 (file)
@@ -7,12 +7,24 @@
    fun:g_type_init
 }
 {
+   glib/g_type_init_with_debug_flags
+   Memcheck:Leak
+   ...
+   fun:g_type_init_with_debug_flags
+}
+{
    glib/g_thread_init
    Memcheck:Leak
    ...
    fun:g_thread_init
 }
 {
+   glib/g_thread_init_glib
+   Memcheck:Leak
+   ...
+   fun:g_thread_init_glib
+}
+{
    glib/g_type_register_static
    Memcheck:Leak
    ...
index ae97b99..dabbb06 100644 (file)
@@ -500,6 +500,7 @@ main (int argc, char **argv)
        do_early_abort_test ();
 
        soup_uri_free (base_uri);
+       soup_test_server_quit_unref (server);
 
        test_cleanup ();
        return errors != 0;
index bbec037..3c555ee 100644 (file)
@@ -427,6 +427,7 @@ main (int argc, char **argv)
 
        g_main_loop_unref (loop);
 
+       soup_test_server_quit_unref (server);
        test_cleanup ();
        g_hash_table_destroy (connections);
 
index d23e7d1..68c1de8 100644 (file)
@@ -228,6 +228,7 @@ main (int argc, char **argv)
        do_proxy_fragment_test (base_uri);
 
        soup_uri_free (base_uri);
+       soup_test_server_quit_unref (server);
        test_cleanup ();
        return errors != 0;
 }
index b4f27f9..d7ba922 100644 (file)
@@ -365,6 +365,7 @@ main (int argc, char **argv)
                                    soup_server_get_port (server));
        do_range_test (session, base_uri, TRUE);
        g_free (base_uri);
+       soup_test_server_quit_unref (server);
 
        soup_test_session_abort_unref (session);
 
index 24aefc4..aa7b05b 100644 (file)
@@ -348,6 +348,7 @@ main (int argc, char **argv)
        }
 
        g_main_loop_unref (loop);
+       soup_test_server_quit_unref (server);
 
        if (run_tests)
                test_cleanup ();
index e4c84bd..4122b16 100644 (file)
@@ -375,6 +375,7 @@ main (int argc, char **argv)
        }
 
        g_main_loop_unref (loop);
+       soup_test_server_quit_unref (server);
 
        if (run_tests)
                test_cleanup ();
index 1bab24c..60ca389 100644 (file)
@@ -569,6 +569,7 @@ main (int argc, char **argv)
        soup_uri_free (base_uri);
 
        soup_test_session_abort_unref (session);
+       soup_test_server_quit_unref (server);
        test_cleanup ();
        return errors != 0;
 }
index 1389a62..869a7b6 100644 (file)
@@ -184,6 +184,7 @@ main (int argc, char **argv)
 
        g_free (full_response);
        g_free (full_response_md5);
+       soup_test_server_quit_unref (server);
        test_cleanup ();
        return errors != 0;
 }
index ee3e1c0..750da72 100644 (file)
@@ -14,9 +14,6 @@
 #ifdef HAVE_APACHE
 static gboolean apache_running;
 #endif
-static SoupServer *test_server;
-static GThread *server_thread;
-static void test_server_shutdown (void);
 
 static SoupLogger *logger;
 
@@ -57,8 +54,6 @@ quit (int sig)
        if (apache_running)
                apache_cleanup ();
 #endif
-       if (test_server)
-               test_server_shutdown ();
 
        exit (1);
 }
@@ -122,8 +117,6 @@ test_cleanup (void)
        if (apache_running)
                apache_cleanup ();
 #endif
-       if (test_server)
-               test_server_shutdown ();
 
        if (logger)
                g_object_unref (logger);
@@ -268,13 +261,11 @@ static gpointer run_server_thread (gpointer user_data);
 static SoupServer *
 test_server_new (gboolean in_own_thread, gboolean ssl)
 {
+       SoupServer *server;
        GMainContext *async_context;
        const char *ssl_cert_file, *ssl_key_file;
        SoupAddress *addr;
 
-       if (test_server)
-               test_server_shutdown ();
-
        async_context = in_own_thread ? g_main_context_new () : NULL;
 
        if (ssl) {
@@ -286,27 +277,30 @@ test_server_new (gboolean in_own_thread, gboolean ssl)
        addr = soup_address_new ("127.0.0.1", SOUP_ADDRESS_ANY_PORT);
        soup_address_resolve_sync (addr, NULL);
 
-       test_server = soup_server_new (SOUP_SERVER_INTERFACE, addr,
-                                      SOUP_SERVER_ASYNC_CONTEXT, async_context,
-                                      SOUP_SERVER_SSL_CERT_FILE, ssl_cert_file,
-                                      SOUP_SERVER_SSL_KEY_FILE, ssl_key_file,
-                                      NULL);
+       server = soup_server_new (SOUP_SERVER_INTERFACE, addr,
+                                 SOUP_SERVER_ASYNC_CONTEXT, async_context,
+                                 SOUP_SERVER_SSL_CERT_FILE, ssl_cert_file,
+                                 SOUP_SERVER_SSL_KEY_FILE, ssl_key_file,
+                                 NULL);
        g_object_unref (addr);
        if (async_context)
                g_main_context_unref (async_context);
 
-       if (!test_server) {
+       if (!server) {
                fprintf (stderr, "Unable to create server\n");
                exit (1);
        }
 
        if (in_own_thread) {
-               server_thread = g_thread_create (run_server_thread, test_server,
-                                                TRUE, NULL);
+               GThread *thread;
+
+               thread = g_thread_create (run_server_thread, server,
+                                         TRUE, NULL);
+               g_object_set_data (G_OBJECT (server), "thread", thread);
        } else
-               soup_server_run_async (test_server);
+               soup_server_run_async (server);
 
-       return test_server;
+       return server;
 }
 
 SoupServer *
@@ -337,24 +331,27 @@ idle_quit_server (gpointer server)
        return FALSE;
 }
 
-static void
-test_server_shutdown (void)
+void
+soup_test_server_quit_unref (SoupServer *server)
 {
-       g_object_add_weak_pointer (G_OBJECT (test_server),
-                                  (gpointer *)&test_server);
+       GThread *thread;
+
+       g_object_add_weak_pointer (G_OBJECT (server),
+                                  (gpointer *)&server);
 
-       if (server_thread) {
-               soup_add_completion (soup_server_get_async_context (test_server),
-                                    idle_quit_server, test_server);
-               g_thread_join (server_thread);
+       thread = g_object_get_data (G_OBJECT (server), "thread");
+       if (thread) {
+               soup_add_completion (soup_server_get_async_context (server),
+                                    idle_quit_server, server);
+               g_thread_join (thread);
        } else
-               soup_server_quit (test_server);
-       g_object_unref (test_server);
+               soup_server_quit (server);
+       g_object_unref (server);
 
-       if (test_server) {
+       if (server) {
                errors++;
                debug_printf (1, "leaked SoupServer!\n");
-               g_object_remove_weak_pointer (G_OBJECT (test_server),
-                                             (gpointer *)&test_server);
+               g_object_remove_weak_pointer (G_OBJECT (server),
+                                             (gpointer *)&server);
        }
 }
index add5366..f609eaf 100644 (file)
@@ -19,5 +19,6 @@ void apache_cleanup (void);
 SoupSession *soup_test_session_new         (GType type, ...);
 void         soup_test_session_abort_unref (SoupSession *session);
 
-SoupServer  *soup_test_server_new     (gboolean in_own_thread);
-SoupServer  *soup_test_server_new_ssl (gboolean in_own_thread);
+SoupServer  *soup_test_server_new        (gboolean in_own_thread);
+SoupServer  *soup_test_server_new_ssl    (gboolean in_own_thread);
+void         soup_test_server_quit_unref (SoupServer *server);
index 663df8e..3bca7ba 100644 (file)
@@ -98,6 +98,7 @@ main (int argc, char **argv)
        do_timeout_tests (fast_uri, slow_uri);
        g_free (fast_uri);
        g_free (slow_uri);
+       soup_test_server_quit_unref (server);
 
 #ifdef HAVE_SSL
        debug_printf (1, "https\n");
@@ -110,6 +111,7 @@ main (int argc, char **argv)
        do_timeout_tests (fast_uri, slow_uri);
        g_free (fast_uri);
        g_free (slow_uri);
+       soup_test_server_quit_unref (server);
 #endif
 
        test_cleanup ();
index 8f20f99..02751f1 100644 (file)
@@ -332,6 +332,7 @@ main (int argc, char **argv)
        g_main_loop_run (loop);
        g_main_loop_unref (loop);
 
+       soup_test_server_quit_unref (server);
        if (run_tests)
                test_cleanup ();
        return errors != 0;