Add noinst convenience test library, add a test-shutdown
authorColin Walters <walters@verbum.org>
Fri, 30 May 2008 20:53:35 +0000 (16:53 -0400)
committerColin Walters <walters@verbum.org>
Fri, 30 May 2008 20:53:35 +0000 (16:53 -0400)
* test/Makefile.am: New convenience library
libdbus_testutils_la.  Reorder build so that
test/ gets built before test/name-test so
name-test files can depend on it.
* test/name-test/test-shutdown.c: New file,
exercises dbus_shutdown () a bit.
* test/name-test/run-test.sh Run test-shutdown.
* test/test-utils.h: In some cases we already have
DBUS_COMPILATION defined, avoid double definition
warning.

test/Makefile.am
test/name-test/Makefile.am
test/name-test/run-test.sh
test/name-test/test-shutdown.c [new file with mode: 0644]
test/test-utils.h

index 56ab66f..a7f0597 100644 (file)
@@ -1,10 +1,14 @@
 ## the "name-test" subdir in fact contains a bunch of tests now that need a temporary bus 
 ## to be running to do stuff with. The directory should be renamed.
-SUBDIRS=name-test 
+## We want to build the current directory first to pick up the testutils lib
+SUBDIRS= . name-test 
 DIST_SUBDIRS=name-test
 
 INCLUDES=-I$(top_srcdir) $(DBUS_TEST_CFLAGS) 
 
+libdbus_testutils_la_SOURCES = test-utils.h test-utils.c
+
+noinst_LTLIBRARIES = libdbus-testutils.la
 
 if DBUS_BUILD_TESTS
 ## break-loader removed for now
@@ -28,22 +32,16 @@ endif
 noinst_PROGRAMS= $(TEST_BINARIES) $(GCOV_BINARIES)
 
 test_service_SOURCES=                          \
-       test-service.c                          \
-       test-utils.c                            \
-       test-utils.h
+       test-service.c
 
 test_names_SOURCES=                            \
-       test-names.c                            \
-       test-utils.c                            \
-       test-utils.h
+       test-names.c
 
 ##break_loader_SOURCES=                                \
 ##     break-loader.c
 
 test_shell_service_SOURCES =                   \
-       test-shell-service.c                    \
-       test-utils.c                            \
-       test-utils.h
+       test-shell-service.c
 
 shell_test_SOURCES=                             \
         shell-test.c
@@ -65,15 +63,15 @@ decode_gcov_SOURCES=                                \
 
 TEST_LIBS=$(DBUS_TEST_LIBS) $(top_builddir)/dbus/libdbus-convenience.la
 
-test_service_LDADD=$(TEST_LIBS)
+test_service_LDADD=$(TEST_LIBS) libdbus-testutils.la
 test_service_LDFLAGS=@R_DYNAMIC_LDFLAG@
-test_names_LDADD=$(TEST_LIBS)
+test_names_LDADD=$(TEST_LIBS) libdbus-testutils.la
 test_names_LDFLAGS=@R_DYNAMIC_LDFLAG@
 ## break_loader_LDADD= $(TEST_LIBS)
 ## break_loader_LDFLAGS=@R_DYNAMIC_LDFLAG@
-test_shell_service_LDADD=$(TEST_LIBS)
+test_shell_service_LDADD=$(TEST_LIBS) libdbus-testutils.la
 test_shell_service_LDFLAGS=@R_DYNAMIC_LDFLAG@
-shell_test_LDADD=$(TEST_LIBS)
+shell_test_LDADD=$(TEST_LIBS) libdbus-testutils.la
 shell_test_LDFLAGS=@R_DYNAMIC_LDFLAG@
 spawn_test_LDADD=$(TEST_LIBS)
 spawn_test_LDFLAGS=@R_DYNAMIC_LDFLAG@
index fbc80c4..37a5633 100644 (file)
@@ -1,4 +1,4 @@
-INCLUDES=-I$(top_srcdir) $(DBUS_CLIENT_CFLAGS) $(DBUS_GLIB_CFLAGS) -DDBUS_COMPILATION
+INCLUDES=-I$(top_srcdir) $(DBUS_CLIENT_CFLAGS) $(DBUS_GLIB_CFLAGS) $(DBUS_TEST_CFLAGS) -DDBUS_COMPILATION
 
 ## note that TESTS has special meaning (stuff to use in make check)
 ## so if adding tests not to be run in make check, don't add them to 
@@ -16,7 +16,7 @@ if DBUS_BUILD_TESTS
 
 ## we use noinst_PROGRAMS not check_PROGRAMS for TESTS so that we
 ## build even when not doing "make check"
-noinst_PROGRAMS=test-names test-pending-call-dispatch test-threads-init test-ids
+noinst_PROGRAMS=test-names test-pending-call-dispatch test-threads-init test-ids test-shutdown
 
 test_names_SOURCES=                            \
        test-names.c
@@ -42,5 +42,11 @@ test_ids_SOURCES =            \
 test_ids_LDADD=$(top_builddir)/dbus/libdbus-convenience.la $(DBUS_TEST_LIBS)
 test_ids_LDFLAGS=@R_DYNAMIC_LDFLAG@
 
-endif
+test_shutdown_SOURCES =            \
+       test-shutdown.c
+
+test_shutdown_CFLAGS=
+test_shutdown_LDADD=$(top_builddir)/dbus/libdbus-convenience.la ../libdbus-testutils.la $(DBUS_TEST_LIBS)
+test_shutdown_LDFLAGS=@R_DYNAMIC_LDFLAG@
 
+endif
index 5d9c584..d466b81 100755 (executable)
@@ -36,3 +36,6 @@ ${DBUS_TOP_BUILDDIR}/libtool --mode=execute $DEBUG $DBUS_TOP_BUILDDIR/test/name-
 
 echo "running test-threads-init"
 ${DBUS_TOP_BUILDDIR}/libtool --mode=execute $DEBUG $DBUS_TOP_BUILDDIR/test/name-test/test-threads-init || die "test-threads-init failed"
+
+echo "running test-shutdown"
+${DBUS_TOP_BUILDDIR}/libtool --mode=execute $DEBUG $DBUS_TOP_BUILDDIR/test/name-test/test-shutdown || die "test-shutdown failed"
diff --git a/test/name-test/test-shutdown.c b/test/name-test/test-shutdown.c
new file mode 100644 (file)
index 0000000..c50ef4b
--- /dev/null
@@ -0,0 +1,67 @@
+
+#include "../test-utils.h"
+
+static DBusLoop *loop;
+
+static void
+die (const char *message)
+{
+  fprintf (stderr, "*** test-shutdown: %s", message);
+  exit (1);
+}
+
+static void
+open_destroy_shared_session_bus_connection ()
+{
+  DBusError error;
+  DBusConnection *connection;
+  char *session_addr_no_guid;
+  char *comma;
+  
+  dbus_error_init (&error);
+
+  session_addr_no_guid = strdup (getenv ("DBUS_SESSION_BUS_ADDRESS"));
+  comma = strchr (session_addr_no_guid, ',');
+  if (comma == NULL)
+    die ("Couldn't find GUID in session bus address");
+  *comma = '\0';
+    
+  connection = dbus_connection_open (session_addr_no_guid, &error);
+  free (session_addr_no_guid);
+  if (connection == NULL)
+    die ("Failed to open connection to temp session bus\n");
+
+  loop = _dbus_loop_new ();
+  if (loop == NULL)
+    die ("No memory\n");
+  
+  if (!test_connection_setup (loop, connection))
+    die ("No memory\n");
+
+  test_connection_shutdown (loop, connection);
+  _dbus_loop_unref (loop);
+
+  dbus_connection_unref (connection); 
+}
+
+int
+main (int    argc,
+      char **argv)
+{
+  open_destroy_shared_session_bus_connection ();
+
+  dbus_shutdown ();
+
+  open_destroy_shared_session_bus_connection ();
+
+  dbus_shutdown ();
+
+  open_destroy_shared_session_bus_connection ();
+
+  dbus_shutdown ();
+
+  _dbus_verbose ("*** Test shutdown exiting\n");
+  
+  return 0;
+}
index ec8246a..90d8776 100644 (file)
@@ -1,7 +1,9 @@
 #ifndef TEST_UTILS_H
 #define TEST_UTILS_H
 #include <config.h>
+#ifndef DBUS_COMPILATION
 #define DBUS_COMPILATION /* Cheat and use private stuff */
+#endif
 #include <dbus/dbus.h>
 #include <stdio.h>
 #include <stdlib.h>