mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2026-01-10 16:20:24 +01:00
* dbus/dbus-connection.c (_dbus_connection_close_if_only_one_ref):
Add a hack to make DBusNewConnectionFunction work right.
* dbus/dbus-server-socket.c (handle_new_client_fd_and_unlock): use
the hack here. Also, fix the todo about refcount leak.
* dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new):
and use the hack here
* dbus/dbus-connection.c: Kill the "shared" flag vs. the
"shareable" flag; this was completely broken, since it meant
dbus_connection_open() returned a connection of unknown
shared-ness. Now, we always hold a ref on anything opened
as shareable.
Move the call to notify dbus-bus.c into
connection_forget_shared_unlocked, so libdbus consistently forgets
all its knowledge of a connection at once. This exposed numerous
places where things were totally broken if we dropped a ref inside
get_dispatch_status_unlocked where
connection_forget_shared_unlocked was previously, so move
connection_forget_shared_unlocked into
_dbus_connection_update_dispatch_status_and_unlock. Also move the
exit_on_disconnect here.
(shared_connections_shutdown): this assumed weak refs to the
shared connections; since we have strong refs now, the assertion
was failing and stuff was left in the hash. Fix it to close
still-open shared connections.
* bus/dispatch.c: fixup to use dbus_connection_open_private on the
debug pipe connections
* dbus/dbus-connection.c (dbus_connection_dispatch): only notify
dbus-bus.c if the closed connection is in fact shared
(_dbus_connection_close_possibly_shared): rename from
_dbus_connection_close_internal
(dbus_connection_close, dbus_connection_open,
dbus_connection_open_private): Improve docs to explain the deal
with when you should close or unref or both
* dbus/dbus-bus.c
(_dbus_bus_notify_shared_connection_disconnected_unlocked): rename
from _dbus_bus_check_connection_and_unref_unlocked and modify to
loop over all connections
* test/test-utils.c (test_connection_shutdown): don't try to close
shared connections.
* test/name-test/test-threads-init.c (main): fix warnings in here
* dbus/dbus-sysdeps.c (_dbus_abort): support DBUS_BLOCK_ON_ABORT
env variable to cause blocking waiting for gdb; drop
DBUS_PRINT_BACKTRACE and just call _dbus_print_backtrace()
unconditionally.
* configure.in: add -export-dynamic to libtool flags if assertions enabled
so _dbus_print_backtrace works.
* dbus/dbus-sysdeps-unix.c (_dbus_print_backtrace): use fprintf
instead of _dbus_verbose to print the backtrace, and diagnose lack
of -rdynamic/-export-dynamic
151 lines
4.2 KiB
Makefile
151 lines
4.2 KiB
Makefile
SUBDIRS=name-test
|
|
DIST_SUBDIRS=name-test
|
|
|
|
INCLUDES=-I$(top_srcdir) $(DBUS_TEST_CFLAGS)
|
|
|
|
|
|
if DBUS_BUILD_TESTS
|
|
## break-loader removed for now
|
|
TEST_BINARIES=test-service test-names test-shell-service shell-test spawn-test test-segfault test-exit test-sleep-forever
|
|
|
|
#enable stand alone make check test
|
|
TESTS=shell-test
|
|
else
|
|
TEST_BINARIES=
|
|
TESTS=
|
|
endif
|
|
|
|
if DBUS_GCOV_ENABLED
|
|
GCOV_BINARIES=decode-gcov
|
|
else
|
|
GCOV_BINARIES=
|
|
endif
|
|
|
|
noinst_PROGRAMS= $(TEST_BINARIES) $(GCOV_BINARIES)
|
|
|
|
test_service_SOURCES= \
|
|
test-service.c \
|
|
test-utils.c \
|
|
test-utils.h
|
|
|
|
test_names_SOURCES= \
|
|
test-names.c \
|
|
test-utils.c \
|
|
test-utils.h
|
|
|
|
##break_loader_SOURCES= \
|
|
## break-loader.c
|
|
|
|
test_shell_service_SOURCES = \
|
|
test-shell-service.c \
|
|
test-utils.c \
|
|
test-utils.h
|
|
|
|
shell_test_SOURCES= \
|
|
shell-test.c
|
|
|
|
spawn_test_SOURCES= \
|
|
spawn-test.c
|
|
|
|
test_exit_SOURCES = \
|
|
test-exit.c
|
|
|
|
test_segfault_SOURCES = \
|
|
test-segfault.c
|
|
|
|
test_sleep_forever_SOURCES = \
|
|
test-sleep-forever.c
|
|
|
|
decode_gcov_SOURCES= \
|
|
decode-gcov.c
|
|
|
|
TEST_LIBS=$(DBUS_TEST_LIBS) $(top_builddir)/dbus/libdbus-convenience.la
|
|
|
|
test_service_LDADD=$(TEST_LIBS)
|
|
test_service_LDFLAGS=@R_DYNAMIC_LDFLAG@
|
|
test_names_LDADD=$(TEST_LIBS)
|
|
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_LDFLAGS=@R_DYNAMIC_LDFLAG@
|
|
shell_test_LDADD=$(TEST_LIBS)
|
|
shell_test_LDFLAGS=@R_DYNAMIC_LDFLAG@
|
|
spawn_test_LDADD=$(TEST_LIBS)
|
|
spawn_test_LDFLAGS=@R_DYNAMIC_LDFLAG@
|
|
decode_gcov_LDADD=$(TEST_LIBS)
|
|
decode_gcov_LDFLAGS=@R_DYNAMIC_LDFLAG@
|
|
|
|
EXTRA_DIST=
|
|
|
|
## keep these in creation order, i.e. uppermost dirs first
|
|
TESTDIRS= \
|
|
data \
|
|
data/valid-messages \
|
|
data/invalid-messages \
|
|
data/incomplete-messages \
|
|
data/auth \
|
|
data/sha-1 \
|
|
data/valid-config-files \
|
|
data/valid-config-files/basic.d \
|
|
data/valid-config-files/system.d \
|
|
data/valid-service-files \
|
|
data/invalid-config-files \
|
|
data/equiv-config-files \
|
|
data/equiv-config-files/basic \
|
|
data/equiv-config-files/basic/basic.d \
|
|
data/equiv-config-files/entities \
|
|
data/equiv-config-files/entities/basic.d
|
|
|
|
|
|
FIND_TESTS=find . -name "*.message" -o -name "*.message-raw" -o -name "*.auth-script" -o -name "*.sha1" -o -name "*.txt" -o -name "*.conf" -o -name "*.service"
|
|
|
|
dist-hook:
|
|
for D in $(TESTDIRS); do \
|
|
test -d $(distdir)/$$D || mkdir $(distdir)/$$D || exit 1 ; \
|
|
done ; \
|
|
FILES=`(cd $(srcdir) && $(FIND_TESTS) -o -name "*.in" -a -not -name Makefile.in)` ; \
|
|
for F in $$FILES; do \
|
|
echo '-- Disting file '$$F ; \
|
|
cp -f $(srcdir)/$$F $(distdir)/$$F || exit 1 ; \
|
|
done
|
|
|
|
## copy tests to builddir so that generated tests and static tests
|
|
## are all in one place.
|
|
all-local:
|
|
for D in $(TESTDIRS); do \
|
|
test -d $(top_builddir)/test/$$D || mkdir $(top_builddir)/test/$$D || exit 1 ; \
|
|
done ; \
|
|
if ! (test $(srcdir) = . || test $(srcdir) -ef .) ; then \
|
|
FILES=`(cd $(srcdir) && $(FIND_TESTS))` ; \
|
|
for F in $$FILES; do \
|
|
SRC=$(srcdir)/$$F ; \
|
|
DEST=$(top_builddir)/test/$$F ; \
|
|
echo '-- Copying test file '$$F ; \
|
|
cp $$SRC $$DEST || exit 1 ; \
|
|
chmod u+w $$DEST || exit 1 ; \
|
|
done ; \
|
|
else \
|
|
echo '-- No need to copy test data as srcdir = builddir' ; \
|
|
fi ; \
|
|
echo '-- Copying' $(top_builddir)/bus/*.conf 'to test directory' ; \
|
|
cp $(top_builddir)/bus/*.conf $(top_builddir)/test/data/valid-config-files || exit 1 ; \
|
|
chmod u+w $(top_builddir)/test/data/valid-config-files/*.conf || exit 1
|
|
|
|
## this doesn't clean generated test data files when srcdir=builddir
|
|
clean-local:
|
|
if test $(srcdir) != . ; then \
|
|
FILES=`(cd $(top_builddir)/test && $(FIND_TESTS))` ; \
|
|
for F in $$FILES; do \
|
|
DEST=$(top_builddir)/test/$$F ; \
|
|
echo '-- Deleting test file '$$F ; \
|
|
rm $$DEST || exit 1 ; \
|
|
done ; \
|
|
REVERSEDIRS= ; \
|
|
for D in $(TESTDIRS); do \
|
|
REVERSEDIRS="$$D $$REVERSEDIRS" ; \
|
|
done ; \
|
|
for D in $$REVERSEDIRS; do \
|
|
rmdir $(top_builddir)/test/$$D || exit 1 ; \
|
|
done ; \
|
|
fi
|