Merge remote branch 'gvdb/master'
[platform/upstream/glib.git] / tests / child-test.c
index 24227ac..b678572 100644 (file)
@@ -92,9 +92,11 @@ get_a_child (gint ttl)
 gboolean
 child_watch_callback (GPid pid, gint status, gpointer data)
 {
+#ifdef VERBOSE
   gint ttl = GPOINTER_TO_INT (data);
 
   g_print ("child " GPID_FORMAT " (ttl %d) exited, status %d\n", pid, ttl, status);
+#endif
 
   g_spawn_close_pid (pid);
 
@@ -104,6 +106,16 @@ child_watch_callback (GPid pid, gint status, gpointer data)
   return TRUE;
 }
 
+static gboolean
+quit_loop (gpointer data)
+{
+  GMainLoop *main_loop = data;
+
+  g_main_loop_quit (main_loop);
+
+  return TRUE;
+}
+
 #ifdef TEST_THREAD
 static gpointer
 test_thread (gpointer data)
@@ -121,7 +133,9 @@ test_thread (gpointer data)
   g_source_attach (source, g_main_loop_get_context (new_main_loop));
   g_source_unref (source);
 
+#ifdef VERBOSE
   g_print ("whee! created pid: " GPID_FORMAT " (ttl %d)\n", pid, ttl);
+#endif
 
   g_main_loop_run (new_main_loop);
 
@@ -132,6 +146,9 @@ test_thread (gpointer data)
 int
 main (int argc, char *argv[])
 {
+#ifndef TEST_THREAD
+  GPid pid;
+#endif
 #ifdef G_OS_WIN32
   argv0 = argv[0];
   if (argc > 1 && argv[1][0] == '-' && argv[1][1] == 'c')
@@ -152,8 +169,6 @@ main (int argc, char *argv[])
 #if defined(G_THREADS_ENABLED) && ! defined(G_THREADS_IMPL_NONE)
 #ifdef TEST_THREAD
   g_thread_init (NULL);
-#else
-  GPid pid;
 #endif
   main_loop = g_main_loop_new (NULL, FALSE);
 
@@ -164,6 +179,8 @@ main (int argc, char *argv[])
 #endif
 
   alive = 2;
+  g_timeout_add (30000, quit_loop, main_loop);
+
 #ifdef TEST_THREAD
   g_thread_create (test_thread, GINT_TO_POINTER (10), FALSE, NULL);
   g_thread_create (test_thread, GINT_TO_POINTER (20), FALSE, NULL);
@@ -178,6 +195,12 @@ main (int argc, char *argv[])
   
   g_main_loop_run (main_loop);
 
+  if (alive > 0)
+    {
+      g_warning ("%d children still alive\n", alive);
+      return 1;
+    }
+    
 #endif
    return 0;
 }