From f9eb9eed10b7123ef000e49be1290755b2d6ae8f Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Thu, 30 May 2013 00:07:32 -0400 Subject: [PATCH] Rework the build system for a new tests approach Perform a substantial cleanup of the build system with respect to building and installing testcases. First, Makefile.decl has been renamed glib.mk and substantially expanded. We intend to add more stuff here in the future, like canned rules for mkenums, marshallers, resources, etc. By default, tests are no longer compiled as part of 'make'. They will be built when 'make check' is run. The old behaviour can be obtained with --enable-always-build-tests. --disable-modular-tests is gone (because tests are no longer built by default). There is no longer any way to cause 'make check' to be a no-op, but that's not very useful anyway. A new glibtests.m4 file is introduced. Along with glib.mk, this provides for consistent handling of --enable-installed-tests and --enable-always-build-tests (mentioned above). Port our various test-installing Makefiles to the new framework. This patch substantially improves the situation in the toplevel tests/ directory. Things are now somewhat under control there. There were some tests being built that weren't even being run and we run those now. The long-running GObject performance tests in this directory have been removed from 'make check' because they take too long. As an experiment, 'make check' now runs the testcases on win32 builds, by default. We can't run them under gtester (since it uses a pipe to communicate with the subprocess) so just toss them in TESTS. Most of them are passing on win32. Things are not quite done here, but this patch is already a substantial improvement. More to come. --- Makefile.am | 17 +- Makefile.decl | 97 --- configure.ac | 28 +- gio/Makefile.am | 20 +- gio/fam/Makefile.am | 4 +- gio/fen/Makefile.am | 6 +- gio/gdbus-2.0/codegen/Makefile.am | 4 +- gio/glib-compile-schemas.c | 4 +- gio/inotify/Makefile.am | 6 +- gio/kqueue/Makefile.am | 6 +- gio/tests/Makefile.am | 728 ++++++++---------- gio/tests/appinfo.c | 6 + gio/tests/file.c | 2 +- .../gdbus-example-objectmanager-client.c | 2 +- .../gdbus-example-objectmanager-server.c | 2 +- .../gdbus-object-manager-example/Makefile.am | 39 +- gio/tests/gdbus-peer.c | 2 +- gio/tests/gdbus-test-fixture.c | 2 +- gio/tests/gschema-compile.c | 6 +- gio/tests/gsettings.c | 65 +- gio/win32/Makefile.am | 6 +- gio/xdgmime/Makefile.am | 4 +- glib.mk | 223 ++++++ glib/Makefile.am | 15 +- glib/gnulib/Makefile.am | 4 +- glib/libcharset/Makefile.am | 6 +- glib/pcre/Makefile.am | 4 +- glib/tests/Makefile.am | 204 +++-- glib/update-pcre/Makefile.am | 2 +- gmodule/Makefile.am | 8 +- gobject/Makefile.am | 14 +- gobject/tests/Makefile.am | 86 +-- gthread/Makefile.am | 6 +- m4macros/Makefile.am | 2 +- m4macros/glibtests.m4 | 28 + tests/Makefile.am | 324 ++++---- tests/gobject/Makefile.am | 122 ++- tests/refcount/Makefile.am | 33 +- 38 files changed, 996 insertions(+), 1141 deletions(-) delete mode 100644 Makefile.decl create mode 100644 glib.mk create mode 100644 m4macros/glibtests.m4 diff --git a/Makefile.am b/Makefile.am index b2555adc6..807bc6063 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,23 +1,18 @@ ## Process this file with automake to produce Makefile.in -include $(top_srcdir)/Makefile.decl +include $(top_srcdir)/glib.mk # http://people.gnome.org/~walters/docs/build-api.txt .buildapi-allow-builddir: ACLOCAL_AMFLAGS = -I m4macros ${ACLOCAL_FLAGS} -SUBDIRS = . m4macros glib gmodule gthread gobject gio po docs +SUBDIRS = . m4macros glib gmodule gthread gobject gio po docs tests DIST_SUBDIRS = $(SUBDIRS) build -if BUILD_MODULAR_TESTS -SUBDIRS += tests -else -DIST_SUBDIRS += tests -endif bin_SCRIPTS = glib-gettextize if OS_LINUX -TESTS = check-abis.sh +TESTS += check-abis.sh endif AM_CPPFLAGS = \ @@ -49,7 +44,7 @@ EXTRA_DIST += \ README.win32 \ HACKING \ autogen.sh \ - Makefile.decl \ + glib.mk \ makefile.msc \ msvc_recommended_pragmas.h \ config.h.win32.in \ @@ -67,7 +62,7 @@ EXTRA_DIST += \ # These may be in the builddir too -BUILT_EXTRA_DIST = \ +BUILT_EXTRA_DIST += \ README \ INSTALL \ ChangeLog \ @@ -105,7 +100,7 @@ $(pkgconfig_DATA): config.status # build documentation when doing distcheck DISTCHECK_CONFIGURE_FLAGS = --enable-debug --enable-gtk-doc --enable-man --disable-maintainer-mode -DISTCLEANFILES = config.lt +DISTCLEANFILES += config.lt distclean-local: lcov-clean if test $(srcdir) = .; then :; else \ diff --git a/Makefile.decl b/Makefile.decl deleted file mode 100644 index 067e7e5cd..000000000 --- a/Makefile.decl +++ /dev/null @@ -1,97 +0,0 @@ -# GLIB - Library of useful C routines - -#GTESTER = gtester # for non-GLIB packages -GTESTER = $(top_builddir)/glib/gtester # for the GLIB package -GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package - -# initialize variables for unconditional += appending -EXTRA_DIST = -TEST_PROGS = - -### testing rules - -# test: run all tests in cwd and subdirs -test: test-nonrecursive -if OS_UNIX - @ for subdir in $(SUBDIRS) . ; do \ - test "$$subdir" = "." -o "$$subdir" = "po" || \ - ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \ - done - -# test-nonrecursive: run tests only in cwd -test-nonrecursive: ${TEST_PROGS} - @test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS} -else -test-nonrecursive: -endif - -# test-report: run tests in subdirs and generate report -# perf-report: run tests in subdirs with -m perf and generate report -# full-report: like test-report: with -m perf and -m slow -test-report perf-report full-report: ${TEST_PROGS} - @test -z "${TEST_PROGS}" || { \ - case $@ in \ - test-report) test_options="-k";; \ - perf-report) test_options="-k -m=perf";; \ - full-report) test_options="-k -m=perf -m=slow";; \ - esac ; \ - if test -z "$$GTESTER_LOGDIR" ; then \ - G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \ - elif test -n "${TEST_PROGS}" ; then \ - G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \ - fi ; \ - } - @ ignore_logdir=true ; \ - if test -z "$$GTESTER_LOGDIR" ; then \ - GTESTER_LOGDIR=`mktemp -d "\`pwd\`/.testlogs-XXXXXX"`; export GTESTER_LOGDIR ; \ - ignore_logdir=false ; \ - fi ; \ - if test -d "$(top_srcdir)/.git" ; then \ - REVISION=`git describe` ; \ - else \ - REVISION=$(VERSION) ; \ - fi ; \ - for subdir in $(SUBDIRS) . ; do \ - test "$$subdir" = "." -o "$$subdir" = "po" || \ - ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \ - done ; \ - $$ignore_logdir || { \ - echo '' > $@.xml ; \ - echo '' >> $@.xml ; \ - echo '' >> $@.xml ; \ - echo ' $(PACKAGE)' >> $@.xml ; \ - echo ' $(VERSION)' >> $@.xml ; \ - echo " $$REVISION" >> $@.xml ; \ - echo '' >> $@.xml ; \ - for lf in `ls -L "$$GTESTER_LOGDIR"/.` ; do \ - sed '1,1s/^?]*?>//' <"$$GTESTER_LOGDIR"/"$$lf" >> $@.xml ; \ - done ; \ - echo >> $@.xml ; \ - echo '' >> $@.xml ; \ - rm -rf "$$GTESTER_LOGDIR"/ ; \ - ${GTESTER_REPORT} --version 2>/dev/null 1>&2 ; test "$$?" != 0 || ${GTESTER_REPORT} $@.xml >$@.html ; \ - } -.PHONY: test test-report perf-report full-report test-nonrecursive - -.PHONY: lcov genlcov lcov-clean -# use recursive makes in order to ignore errors during check -lcov: - -$(MAKE) $(AM_MAKEFLAGS) -k check - $(MAKE) $(AM_MAKEFLAGS) genlcov - -# we have to massage the lcov.info file slightly to hide the effect of libtool -# placing the objects files in the .libs/ directory separate from the *.c -# we also have to delete tests/.libs/libmoduletestplugin_*.gcda -genlcov: - rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda - $(LTP) --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool - LANG=C $(LTP_GENHTML) --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --show-details glib-lcov.info - @echo "file://$(abs_top_builddir)/glib-lcov/index.html" - -lcov-clean: - -$(LTP) --directory $(top_builddir) -z - -rm -rf glib-lcov.info glib-lcov - -find -name '*.gcda' -print | xargs rm - -# run tests in cwd as part of make check -check-local: test-nonrecursive diff --git a/configure.ac b/configure.ac index 7617c1b2a..eb37a4d02 100644 --- a/configure.ac +++ b/configure.ac @@ -254,16 +254,8 @@ AC_ARG_ENABLE(rebuilds, [AS_HELP_STRING([--disable-rebuilds], [disable all source autogeneration rules])],, [enable_rebuilds=yes]) -AC_ARG_ENABLE(modular_tests, - AS_HELP_STRING([--disable-modular-tests], - [Disable build of test programs (default: no)]),, - [enable_modular_tests=yes]) -AC_ARG_ENABLE(installed_tests, - AS_HELP_STRING([--enable-installed-tests], - [Install test programs (default: no)]),, - [enable_installed_tests=no]) -AM_CONDITIONAL(BUILD_MODULAR_TESTS, test x$enable_modular_tests = xyes || test x$enable_installed_tests=xyes) -AM_CONDITIONAL(BUILDOPT_INSTALL_TESTS, test x$enable_installed_tests = xyes) + +GLIB_TESTS AC_MSG_CHECKING([whether to enable garbage collector friendliness]) AS_IF([test "x$enable_gc_friendly" = "xyes"], [ @@ -2710,7 +2702,7 @@ dnl ****************************************************************** AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes) -AS_IF([ test $cross_compiling = yes && test x$enable_modular_tests = xyes], [ +AS_IF([ test $cross_compiling = yes ], [ AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal, no) if test x$GLIB_GENMARSHAL = xno; then AC_MSG_ERROR(Could not find a glib-genmarshal in your PATH) @@ -3653,14 +3645,12 @@ AC_CHECK_ALIGNOF([unsigned long]) # Check for libdbus1 - Optional - is only used in the GDBus test cases # # 1.2.14 required for dbus_message_set_serial -AS_IF([ test x$enable_modular_tests = xyes], [ - PKG_CHECK_MODULES(DBUS1, - dbus-1 >= 1.2.14, - [AC_DEFINE(HAVE_DBUS1, 1, [Define if dbus-1 is available]) have_dbus1=yes], - have_dbus1=no) - AC_SUBST(DBUS1_CFLAGS) - AC_SUBST(DBUS1_LIBS) -]) +PKG_CHECK_MODULES(DBUS1, + dbus-1 >= 1.2.14, + [AC_DEFINE(HAVE_DBUS1, 1, [Define if dbus-1 is available]) have_dbus1=yes], + have_dbus1=no) +AC_SUBST(DBUS1_CFLAGS) +AC_SUBST(DBUS1_LIBS) AM_CONDITIONAL(HAVE_DBUS1, [test "x$have_dbus1" = "xyes"]) AC_CHECK_PROGS([DBUS_DAEMON], [dbus-daemon]) diff --git a/gio/Makefile.am b/gio/Makefile.am index ff662638f..1e7b6b717 100644 --- a/gio/Makefile.am +++ b/gio/Makefile.am @@ -1,6 +1,4 @@ -include $(top_srcdir)/Makefile.decl - -NULL = +include $(top_srcdir)/glib.mk SUBDIRS = gdbus-2.0/codegen @@ -10,7 +8,7 @@ endif if OS_WIN32_AND_DLL_COMPILATION if MS_LIB_AVAILABLE -noinst_DATA = gio-2.0.lib +noinst_DATA += gio-2.0.lib install_ms_lib_cmd = $(INSTALL) gio-2.0.lib $(DESTDIR)$(libdir) uninstall_ms_lib_cmd = -rm $(DESTDIR)$(libdir)/gio-2.0.lib @@ -233,7 +231,7 @@ platform_libadd += win32/libgiowin32.la platform_deps += win32/libgiowin32.la endif -SUBDIRS += . +SUBDIRS += . tests if HAVE_FAM SUBDIRS += fam @@ -327,10 +325,6 @@ giowin32include_HEADERS = \ endif -if BUILD_MODULAR_TESTS -SUBDIRS += tests -endif - libgio_2_0_la_SOURCES = \ gappinfo.c \ gasynchelper.c \ @@ -622,7 +616,7 @@ gioinclude_HEADERS = \ gioenumtypes.h # these sources (also mentioned above) are generated. -BUILT_SOURCES = \ +BUILT_SOURCES += \ gconstructor_as_data.h \ gioenumtypes.h \ gioenumtypes.c \ @@ -642,17 +636,17 @@ EXTRA_DIST += \ gnetworking.h.win32 \ $(NULL) -BUILT_EXTRA_DIST = \ +BUILT_EXTRA_DIST += \ gio.rc # This is read by gobject-introspection/misc/ and gtk-doc gio-public-headers.txt: Makefile $(AM_V_GEN) echo $(gioinclude_HEADERS) $(giowin32include_HEADERS) $(giounixinclude_HEADERS) > $@.tmp && mv $@.tmp $@ -CLEANFILES = gdbus-daemon-generated.c gdbus-daemon-generated.h gio-public-headers.txt gconstructor_as_data.h +CLEANFILES += gdbus-daemon-generated.c gdbus-daemon-generated.h gio-public-headers.txt gconstructor_as_data.h -DISTCLEANFILES = \ +DISTCLEANFILES += \ gioenumtypes.h \ gioenumtypes.c diff --git a/gio/fam/Makefile.am b/gio/fam/Makefile.am index 429d7f424..67e0d6766 100644 --- a/gio/fam/Makefile.am +++ b/gio/fam/Makefile.am @@ -1,6 +1,4 @@ -include $(top_srcdir)/Makefile.decl - -NULL = +include $(top_srcdir)/glib.mk module_flags = -export_dynamic -avoid-version -module -no-undefined -export-symbols-regex '^g_io_module_(load|unload|query)' diff --git a/gio/fen/Makefile.am b/gio/fen/Makefile.am index 0a22a6456..2b5eb50d0 100644 --- a/gio/fen/Makefile.am +++ b/gio/fen/Makefile.am @@ -1,8 +1,6 @@ -include $(top_srcdir)/Makefile.decl +include $(top_srcdir)/glib.mk -NULL = - -noinst_LTLIBRARIES = libfen.la +noinst_LTLIBRARIES += libfen.la libfen_la_SOURCES = \ fen-dump.c \ diff --git a/gio/gdbus-2.0/codegen/Makefile.am b/gio/gdbus-2.0/codegen/Makefile.am index 1afdaf08b..b3fb2c292 100644 --- a/gio/gdbus-2.0/codegen/Makefile.am +++ b/gio/gdbus-2.0/codegen/Makefile.am @@ -1,8 +1,6 @@ -include $(top_srcdir)/Makefile.decl +include $(top_srcdir)/glib.mk -NULL = bin_SCRIPTS = -CLEANFILES = codegendir = $(datadir)/glib-2.0/codegen codegen_PYTHON = \ diff --git a/gio/glib-compile-schemas.c b/gio/glib-compile-schemas.c index b80c08ade..d414d1c35 100644 --- a/gio/glib-compile-schemas.c +++ b/gio/glib-compile-schemas.c @@ -1126,7 +1126,7 @@ parse_state_start_schema (ParseState *state, { g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT, - _(" extends not-yet-existing " + _(" extends not yet existing " "schema '%s'"), id, extends_name); return; } @@ -1142,7 +1142,7 @@ parse_state_start_schema (ParseState *state, { g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT, - _(" is list of not-yet-existing " + _(" is list of not yet existing " "schema '%s'"), id, list_of); return; } diff --git a/gio/inotify/Makefile.am b/gio/inotify/Makefile.am index b51a0a903..283868553 100644 --- a/gio/inotify/Makefile.am +++ b/gio/inotify/Makefile.am @@ -1,8 +1,6 @@ -include $(top_srcdir)/Makefile.decl +include $(top_srcdir)/glib.mk -NULL = - -noinst_LTLIBRARIES = libinotify.la +noinst_LTLIBRARIES += libinotify.la libinotify_la_SOURCES = \ inotify-kernel.c \ diff --git a/gio/kqueue/Makefile.am b/gio/kqueue/Makefile.am index 652c43ed6..77f4cb2aa 100644 --- a/gio/kqueue/Makefile.am +++ b/gio/kqueue/Makefile.am @@ -1,8 +1,6 @@ -include $(top_srcdir)/Makefile.decl +include $(top_srcdir)/glib.mk -NULL = - -noinst_LTLIBRARIES = libkqueue.la +noinst_LTLIBRARIES += libkqueue.la libkqueue_la_SOURCES = \ gkqueuefilemonitor.c \ diff --git a/gio/tests/Makefile.am b/gio/tests/Makefile.am index f9d5d8021..14982515e 100644 --- a/gio/tests/Makefile.am +++ b/gio/tests/Makefile.am @@ -1,311 +1,101 @@ - -NULL = -BUILT_SOURCES = - -include $(top_srcdir)/Makefile.decl - -insttestdir = $(pkglibexecdir)/installed-tests +include $(top_srcdir)/glib.mk +dist_uninstalled_test_data = +test_ltlibraries = SUBDIRS = gdbus-object-manager-example services -AM_CPPFLAGS = \ - -DG_LOG_DOMAIN=\"GLib-GIO\" \ - $(gio_INCLUDES) \ - $(GLIB_DEBUG_FLAGS) \ - -I$(top_builddir)/gio \ - -I$(top_srcdir)/gio \ - $(DBUS1_CFLAGS) \ - -DSRCDIR=\""$(srcdir)"\" \ - -DBUILDDIR=\""$(abs_builddir)"\" \ - -DTEST_SERVICES=\""$(abs_top_builddir)/gio/tests/services"\" - -AM_CFLAGS = $(GLIB_WARN_CFLAGS) - -noinst_PROGRAMS = $(TEST_PROGS) $(SAMPLE_PROGS) -noinst_DATA = $(MISC_STUFF) - -LDADD = \ - $(top_builddir)/glib/libglib-2.0.la \ - $(top_builddir)/gthread/libgthread-2.0.la \ +LDADD = \ + $(top_builddir)/glib/libglib-2.0.la \ $(top_builddir)/gobject/libgobject-2.0.la \ $(top_builddir)/gmodule/libgmodule-2.0.la \ $(top_builddir)/gio/libgio-2.0.la +AM_CPPFLAGS = $(gio_INCLUDES) $(GLIB_DEBUG_FLAGS) -I$(top_builddir)/gio -I$(top_srcdir)/gio +DEFS = -DG_LOG_DOMAIN=\"GLib-GIO\" -DTEST_SERVICES=\""$(abs_top_builddir)/gio/tests/services"\" +AM_CFLAGS = $(GLIB_WARN_CFLAGS) -test_progs = \ - io-stream \ - memory-input-stream \ - memory-output-stream \ - readwrite \ - g-file \ - g-file-info \ - converter-stream \ - data-input-stream \ - data-output-stream \ - g-icon \ - buffered-input-stream \ - buffered-output-stream \ - sleepy-stream \ - filter-streams \ - volumemonitor \ - simple-async-result \ - srvtarget \ - contexts \ - gsettings \ - gschema-compile \ - async-close-output-stream \ - gdbus-addresses \ - network-address \ - gdbus-message \ - socket \ - pollable \ - tls-certificate \ - tls-interaction \ - cancellable \ - vfs \ - network-monitor \ - fileattributematcher \ - resources \ - proxy-test \ - simple-proxy \ - inet-address \ - permission \ - task \ - credentials \ +# ----------------------------------------------------------------------------- +# Test programs buildable on all platforms + +test_programs = \ + io-stream \ + memory-input-stream \ + memory-output-stream \ + readwrite \ + g-file \ + g-file-info \ + converter-stream \ + data-input-stream \ + data-output-stream \ + g-icon \ + buffered-input-stream \ + buffered-output-stream \ + sleepy-stream \ + filter-streams \ + volumemonitor \ + simple-async-result \ + srvtarget \ + contexts \ + async-close-output-stream \ + gdbus-addresses \ + network-address \ + gdbus-message \ + socket \ + pollable \ + tls-interaction \ + cancellable \ + vfs \ + network-monitor \ + fileattributematcher \ + proxy-test \ + simple-proxy \ + inet-address \ + permission \ + task \ + credentials \ $(NULL) -if HAVE_DBUS_DAEMON -test_progs += \ - actions \ - gdbus-connection \ - gdbus-connection-loss \ - gdbus-connection-slow \ - gdbus-names \ - gdbus-proxy \ - gdbus-proxy-threads \ - gdbus-proxy-well-known-name \ - gdbus-introspection \ - gdbus-threading \ - gdbus-export \ - gdbus-error \ - gdbus-bz627724 \ - gmenumodel \ - $(NULL) -endif - -if OS_UNIX -test_progs += \ - gdbus-close-pending \ - gdbus-connection-flush \ - gdbus-peer \ - gdbus-overflow \ - gdbus-exit-on-close \ - gdbus-non-socket \ - gdbus-peer-object-manager \ - appinfo \ - contenttype \ - mimeapps \ - file \ - $(NULL) -endif - -SAMPLE_PROGS = \ - resolver \ - socket-server \ - socket-client \ - echo-server \ - httpd \ - send-data \ - filter-cat \ - gdbus-example-export \ - gdbus-example-own-name \ - gdbus-example-watch-name \ - gdbus-example-watch-proxy \ - gdbus-example-server \ - gdbus-example-subtree \ - gdbus-example-peer \ - gdbus-example-proxy-subclass \ - proxy \ - gapplication-example-open \ - gapplication-example-cmdline \ - gapplication-example-cmdline2 \ - gapplication-example-cmdline3 \ - gapplication-example-actions \ - gapplication-example-dbushooks \ - gdbus-daemon \ +uninstalled_test_programs = \ $(NULL) -other_progs = \ - gdbus-testserver \ - gdbus-connection-flush-helper \ - $(NULL) -noinst_PROGRAMS += $(other_progs) - -if OS_UNIX -test_progs += \ - live-g-file \ - desktop-app-info \ - unix-fd \ - unix-streams \ - gapplication \ - basic-application \ - gdbus-test-codegen \ - socket-address \ +dist_test_data = \ + contexts.c \ + g-icon.c \ $(NULL) -other_progs += \ - appinfo-test \ +test_data = \ + test.gresource \ $(NULL) -SAMPLE_PROGS += \ - gdbus-example-unix-fd-client \ - gdbus-example-objectmanager-server \ - gdbus-example-objectmanager-client \ - gdbus-test-fixture \ - $(NULL) -endif - -if OS_WIN32 -TEST_PROGS += win32-streams -endif - -if PLATFORM_WIN32 -no_undefined = -no-undefined -endif - -actions_SOURCES = actions.c gdbus-sessionbus.c gdbus-sessionbus.h - -unix_streams_LDADD = $(LDADD) \ - $(top_builddir)/gthread/libgthread-2.0.la - -win32_streams_LDADD = $(LDADD) \ - $(top_builddir)/gthread/libgthread-2.0.la - -resolver_LDADD = $(LDADD) \ - $(top_builddir)/gthread/libgthread-2.0.la - -socket_server_LDADD = $(LDADD) \ - $(top_builddir)/gthread/libgthread-2.0.la - -socket_client_SOURCES = socket-client.c \ - gtlsconsoleinteraction.c \ - gtlsconsoleinteraction.h -socket_client_LDADD = $(LDADD) \ - $(top_builddir)/gthread/libgthread-2.0.la - -echo_server_LDADD = $(LDADD) \ - $(top_builddir)/gthread/libgthread-2.0.la - -httpd_LDADD = $(LDADD) \ - $(top_builddir)/gthread/libgthread-2.0.la - -send_data_LDADD = $(LDADD) \ - $(top_builddir)/gthread/libgthread-2.0.la - -contexts_LDADD = $(LDADD) \ - $(top_builddir)/gthread/libgthread-2.0.la - -gdbus_daemon_SOURCES = gdbus-daemon.c $(top_srcdir)/gio/gdbusdaemon.c $(top_builddir)/gio/gdbus-daemon-generated.c - -gdbus_testserver_SOURCES = gdbus-testserver.c - -if HAVE_DBUS1 -test_progs += gdbus-serialization -gdbus_serialization_SOURCES = gdbus-serialization.c gdbus-tests.h gdbus-tests.c -gdbus_serialization_CFLAGS = $(AM_CFLAGS) $(DBUS1_CFLAGS) -gdbus_serialization_LDADD = $(LDADD) $(DBUS1_LIBS) -endif - -test_progs += gdbus-auth -gdbus_auth_SOURCES = gdbus-auth.c gdbus-sessionbus.c gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c -gdbus_auth_LDADD = $(LDADD) - -gdbus_bz627724_SOURCES = gdbus-bz627724.c gdbus-sessionbus.c gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c - -gdbus_close_pending_SOURCES = gdbus-close-pending.c gdbus-sessionbus.c gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c - -if OS_UNIX -gdbus-test-codegen-generated.h gdbus-test-codegen-generated.c : test-codegen.xml Makefile $(top_builddir)/gio/gdbus-2.0/codegen/gdbus-codegen - $(AM_V_GEN) UNINSTALLED_GLIB_SRCDIR=$(top_srcdir) \ - UNINSTALLED_GLIB_BUILDDIR=$(top_builddir) \ - $(PYTHON) $(top_builddir)/gio/gdbus-2.0/codegen/gdbus-codegen \ - --interface-prefix org.project. \ - --generate-c-code gdbus-test-codegen-generated \ - --c-generate-object-manager \ - --c-namespace Foo_iGen \ - --generate-docbook gdbus-test-codegen-generated-doc \ - --annotate "org.project.Bar" Key1 Value1 \ - --annotate "org.project.Bar" org.gtk.GDBus.Internal Value2 \ - --annotate "org.project.Bar.HelloWorld()" Key3 Value3 \ - --annotate "org.project.Bar::TestSignal" Key4 Value4 \ - --annotate "org.project.Bar:ay" Key5 Value5 \ - --annotate "org.project.Bar.TestPrimitiveTypes()[val_int32]" Key6 Value6 \ - --annotate "org.project.Bar.TestPrimitiveTypes()[ret_uint32]" Key7 Value7 \ - --annotate "org.project.Bar::TestSignal[array_of_strings]" Key8 Value8 \ - $(srcdir)/test-codegen.xml \ - $(NULL) - -BUILT_SOURCES += gdbus-test-codegen-generated.c gdbus-test-codegen-generated.h - -gdbus_test_codegen_SOURCES = gdbus-test-codegen.c gdbus-sessionbus.c gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c -gdbus_test_codegen_SOURCES += gdbus-test-codegen-generated.c gdbus-test-codegen-generated.h - -endif # OS_UNIX - -gdbus_connection_SOURCES = gdbus-connection.c gdbus-sessionbus.c gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c - -gdbus_connection_flush_SOURCES = \ - gdbus-connection-flush.c \ - test-io-stream.c \ - test-io-stream.h \ - test-pipe-unix.c \ - test-pipe-unix.h \ +uninstalled_test_extra_programs = \ + resolver \ + socket-server \ + echo-server \ + httpd \ + send-data \ + filter-cat \ + gdbus-example-export \ + gdbus-example-own-name \ + gdbus-example-watch-name \ + gdbus-example-watch-proxy \ + gdbus-example-server \ + gdbus-example-subtree \ + gdbus-example-peer \ + gdbus-example-proxy-subclass \ + proxy \ + gapplication-example-open \ + gapplication-example-cmdline \ + gapplication-example-cmdline2 \ + gapplication-example-cmdline3 \ + gapplication-example-actions \ + gapplication-example-dbushooks \ $(NULL) -gdbus_connection_loss_SOURCES = gdbus-connection-loss.c gdbus-sessionbus.c gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c - -gdbus_connection_slow_SOURCES = gdbus-connection-slow.c gdbus-sessionbus.c gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c - -gdbus_names_SOURCES = gdbus-names.c gdbus-sessionbus.c gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c - -gdbus_proxy_SOURCES = gdbus-proxy.c gdbus-sessionbus.c gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c - -gdbus_proxy_threads_SOURCES = gdbus-proxy-threads.c gdbus-sessionbus.c gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c - -gdbus_proxy_well_known_name_SOURCES = gdbus-proxy-well-known-name.c gdbus-sessionbus.c gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c - -gdbus_introspection_SOURCES = gdbus-introspection.c gdbus-sessionbus.c gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c - -gdbus_threading_SOURCES = gdbus-threading.c gdbus-sessionbus.c gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c - -gdbus_export_SOURCES = gdbus-export.c gdbus-sessionbus.c gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c - -gdbus_error_SOURCES = gdbus-error.c gdbus-sessionbus.c gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c - -gdbus_non_socket_SOURCES = \ - gdbus-non-socket.c \ - gdbus-tests.c \ - gdbus-tests.h \ - test-io-stream.c \ - test-io-stream.h \ - test-pipe-unix.c \ - test-pipe-unix.h \ +test_extra_programs = \ + gdbus-testserver \ + gdbus-connection-flush-helper \ $(NULL) -gdbus_exit_on_close_SOURCES = gdbus-exit-on-close.c gdbus-sessionbus.c gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c - -resources_SOURCES = resources.c test_resources.c test_resources2.c test_resources2.h -resources_DEPENDENCIES = test.gresource - -gapplication_SOURCES = gapplication.c gdbus-sessionbus.h gdbus-sessionbus.c gdbus-tests.h gdbus-tests.c - -gmenumodel_SOURCES = gmenumodel.c gdbus-sessionbus.h gdbus-sessionbus.c - -TEST_PROGS += $(test_progs) - -TESTS_ENVIRONMENT = \ - GLIB_MKENUMS=../../gobject/glib-mkenums \ - GLIB_COMPILE_SCHEMAS=../glib-compile-schemas - +dist_uninstalled_test_data += $(addprefix schema-tests/,$(schema_tests)) schema_tests = \ array-default-not-in-choices.gschema.xml \ bad-choice.gschema.xml \ @@ -358,7 +148,7 @@ schema_tests = \ key-in-list-indirect.gschema.xml \ key-in-list.gschema.xml \ list-of-missing.gschema.xml \ - missing-quotes.gschema.xml \ + missing-quotes.gschema.xml \ no-default.gschema.xml \ overflow.gschema.xml \ override-missing.gschema.xml \ @@ -380,78 +170,257 @@ schema_tests = \ wrong-category.gschema.xml \ $(NULL) -schema_test_files = $(addprefix schema-tests/,$(schema_tests)) - -proxy_LDADD = $(LDADD) \ - $(top_builddir)/gthread/libgthread-2.0.la - -tls_certificate_SOURCES = tls-certificate.c gtesttlsbackend.c gtesttlsbackend.h - -cert_tests = \ - cert1.pem \ - cert2.pem \ - cert3.pem \ - cert-key.pem \ - cert-list.pem \ - key8.pem \ - key-cert.pem \ - key.pem \ - nothing.pem \ +test_programs += tls-certificate +tls_certificate_SOURCES = \ + tls-certificate.c \ + gtesttlsbackend.c \ + gtesttlsbackend.h +dist_test_data += $(cert_data_files) +cert_data_files = $(addprefix cert-tests/,$(cert_tests)) +cert_tests = \ + cert1.pem \ + cert2.pem \ + cert3.pem \ + cert-key.pem \ + cert-list.pem \ + key8.pem \ + key-cert.pem \ + key.pem \ + nothing.pem \ $(NULL) -cert_test_files = $(addprefix cert-tests/,$(cert_tests)) +uninstalled_test_extra_programs += socket-client +socket_client_SOURCES = \ + socket-client.c \ + gtlsconsoleinteraction.c \ + gtlsconsoleinteraction.h +EXTRA_DIST += socket-common.c + +uninstalled_test_extra_programs += gdbus-daemon +nodist_gdbus_daemon_SOURCES = \ + $(top_builddir)/gio/gdbus-daemon-generated.c +gdbus_daemon_SOURCES = \ + gdbus-daemon.c \ + $(top_srcdir)/gio/gdbusdaemon.c # ----------------------------------------------------------------------------- +# Test programs buildable on UNIX only if OS_UNIX -gdbus_example_objectmanager_server_CFLAGS = $(AM_CFLAGS) -I$(top_builddir)/gio/tests/gdbus-object-manager-example -gdbus_example_objectmanager_server_LDADD = $(top_builddir)/gio/tests/gdbus-object-manager-example/libgdbus-example-objectmanager.la $(LDADD) +test_programs += \ + live-g-file \ + unix-fd \ + unix-streams \ + basic-application \ + socket-address \ + gdbus-peer-object-manager \ + contenttype \ + file \ + $(NULL) -gdbus_example_objectmanager_client_CFLAGS = $(AM_CFLAGS) -I$(top_builddir)/gio/tests/gdbus-object-manager-example -gdbus_example_objectmanager_client_LDADD = $(top_builddir)/gio/tests/gdbus-object-manager-example/libgdbus-example-objectmanager.la $(LDADD) +# Uninstalled because of the check-for-executable logic in DesktopAppInfo unable to find the installed executable +uninstalled_test_programs += \ + appinfo \ + desktop-app-info \ + $(NULL) -gdbus_peer_SOURCES = gdbus-peer.c gdbus-tests.h gdbus-tests.c -gdbus_peer_CFLAGS = $(AM_CFLAGS) -I$(top_builddir)/gio/tests/gdbus-object-manager-example -gdbus_peer_LDADD = $(top_builddir)/gio/tests/gdbus-object-manager-example/libgdbus-example-objectmanager.la $(LDADD) - -gdbus_test_fixture_SOURCES = gdbus-test-fixture.c -gdbus_test_fixture_CFLAGS = $(AM_CFLAGS) -I$(top_builddir)/gio/tests/gdbus-object-manager-example -gdbus_test_fixture_LDADD = $(top_builddir)/gio/tests/gdbus-object-manager-example/libgdbus-example-objectmanager.la $(LDADD) - -endif OS_UNIX - -# ----------------------------------------------------------------------------- - -desktop_test_files = \ +dist_test_data += \ appinfo-test.desktop \ appinfo-test2.desktop \ appinfo-test-gnome.desktop \ appinfo-test-notgnome.desktop \ + file.c \ $(NULL) -EXTRA_DIST += \ - socket-common.c \ - org.gtk.test.gschema.xml \ - de.po \ - $(schema_test_files) \ - test-codegen.xml \ - $(cert_test_files) \ - test.gresource.xml \ - test1.txt \ - test2.gresource.xml \ - test2.txt \ - test3.gresource.xml \ - test3.txt \ - test4.gresource.xml \ - $(desktop_test_files) \ +test_extra_programs += \ + appinfo-test \ $(NULL) -MISC_STUFF = test.mo test.gresource +uninstalled_test_extra_programs += \ + gdbus-example-unix-fd-client \ + $(NULL) +test_programs += mimeapps +clean-local: clean-mimeapps +clean-mimeapps: + rm -rf xdgdatadir xdgdatahome + +uninstalled_test_programs += gsettings gschema-compile +gsettings_DEPENDENCIES = test.mo +CLEANFILES += test.mo de/LC_MESSAGES/test.mo +gsettings_CFLAGS = $(AM_CFLAGS) -DSRCDIR=\"$(abs_srcdir)\" test.mo: de.po - $(MSGFMT) -o test.mo $(srcdir)/de.po; \ + $(AM_V_GEN) $(MSGFMT) -o test.mo $(srcdir)/de.po; \ $(MKDIR_P) de/LC_MESSAGES; \ cp -f test.mo de/LC_MESSAGES +EXTRA_DIST += de.po +dist_uninstalled_test_data += \ + org.gtk.test.gschema.xml \ + org.gtk.schemasourcecheck.gschema.xml \ + testenum.h \ + enums.xml.template +# Generated while running the testcase itself... +CLEANFILES += \ + org.gtk.test.enums.xml \ + gsettings.store \ + gschemas.compiled \ + schema-source/gschemas.compiled + +test_programs += gdbus-connection-flush +gdbus_connection_flush_SOURCES = \ + gdbus-connection-flush.c \ + test-io-stream.c \ + test-io-stream.h \ + test-pipe-unix.c \ + test-pipe-unix.h + +test_programs += gdbus-exit-on-close +gdbus_exit_on_close_SOURCES = gdbus-exit-on-close.c $(gdbus_tests_sources) $(gdbus_sessionbus_sources) + +test_programs += gdbus-non-socket +gdbus_non_socket_SOURCES = \ + gdbus-non-socket.c \ + gdbus-tests.c \ + gdbus-tests.h \ + test-io-stream.c \ + test-io-stream.h \ + test-pipe-unix.c \ + test-pipe-unix.h + +# These three are manual-run tests because they need a session bus but don't bring one up themselves +uninstalled_test_extra_programs += gdbus-example-objectmanager-client +gdbus_example_objectmanager_client_LDADD = gdbus-object-manager-example/libgdbus-example-objectmanager.la $(LDADD) + +uninstalled_test_extra_programs += gdbus-example-objectmanager-server +gdbus_example_objectmanager_server_LDADD = gdbus-object-manager-example/libgdbus-example-objectmanager.la $(LDADD) + +uninstalled_test_extra_programs += gdbus-test-fixture +gdbus_test_fixture_LDADD = gdbus-object-manager-example/libgdbus-example-objectmanager.la $(LDADD) + +# This is peer to peer so it doesn't need a session bus (so we can run it normally) +test_programs += gdbus-peer +gdbus_peer_LDADD = gdbus-object-manager-example/libgdbus-example-objectmanager.la $(LDADD) + +# This test is currently unreliable +test_extra_programs += gdbus-overflow + +# ----------------------------------------------------------------------------- +# Test programs that need to bring up a session bus (requires dbus-daemon) + +if HAVE_DBUS_DAEMON +gdbus_sessionbus_sources = gdbus-sessionbus.c gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c + +test_programs += \ + gapplication \ + actions \ + gdbus-auth \ + gdbus-connection \ + gdbus-bz627724 \ + gdbus-connection-loss \ + gdbus-connection-slow \ + gdbus-names \ + gdbus-proxy \ + gdbus-proxy-threads \ + gdbus-proxy-well-known-name \ + gdbus-introspection \ + gdbus-threading \ + gdbus-export \ + gdbus-test-codegen \ + gdbus-close-pending \ + gdbus-error \ + gmenumodel \ + $(NULL) + +gdbus_proxy_threads_CFLAGS = $(AM_CFLAGS) $(DBUS1_CFLAGS) +gapplication_SOURCES = $(gdbus_sessionbus_sources) gapplication.c +actions_SOURCES = $(gdbus_sessionbus_sources) actions.c +gdbus_auth_SOURCES = $(gdbus_sessionbus_sources) gdbus-auth.c +gdbus_connection_SOURCES = $(gdbus_sessionbus_sources) gdbus-connection.c +gdbus_bz627724_SOURCES = $(gdbus_sessionbus_sources) gdbus-bz627724.c +gdbus_connection_loss_SOURCES = $(gdbus_sessionbus_sources) gdbus-connection-loss.c +gdbus_connection_slow_SOURCES = $(gdbus_sessionbus_sources) gdbus-connection-slow.c +gdbus_names_SOURCES = $(gdbus_sessionbus_sources) gdbus-names.c +gdbus_proxy_SOURCES = $(gdbus_sessionbus_sources) gdbus-proxy.c +gdbus_proxy_threads_SOURCES = $(gdbus_sessionbus_sources) gdbus-proxy-threads.c +gdbus_proxy_well_known_name_SOURCES = $(gdbus_sessionbus_sources) gdbus-proxy-well-known-name.c +gdbus_introspection_SOURCES = $(gdbus_sessionbus_sources) gdbus-introspection.c +gdbus_threading_SOURCES = $(gdbus_sessionbus_sources) gdbus-threading.c +gdbus_export_SOURCES = $(gdbus_sessionbus_sources) gdbus-export.c +gdbus_error_SOURCES = $(gdbus_sessionbus_sources) gdbus-error.c +gmenumodel_SOURCES = $(gdbus_sessionbus_sources) gmenumodel.c +gdbus_close_pending_SOURCES = $(gdbus_sessionbus_sources) gdbus-close-pending.c +gdbus_test_codegen_SOURCES = $(gdbus_sessionbus_sources) gdbus-test-codegen.c +nodist_gdbus_test_codegen_SOURCES = gdbus-test-codegen-generated.c gdbus-test-codegen-generated.h + +gdbus-test-codegen.o: gdbus-test-codegen-generated.h +gdbus-test-codegen-generated.h gdbus-test-codegen-generated.c: test-codegen.xml Makefile $(top_builddir)/gio/gdbus-2.0/codegen/gdbus-codegen + $(AM_V_GEN) UNINSTALLED_GLIB_SRCDIR=$(top_srcdir) \ + UNINSTALLED_GLIB_BUILDDIR=$(top_builddir) \ + $(PYTHON) $(top_builddir)/gio/gdbus-2.0/codegen/gdbus-codegen \ + --interface-prefix org.project. \ + --generate-c-code gdbus-test-codegen-generated \ + --c-generate-object-manager \ + --c-namespace Foo_iGen \ + --generate-docbook gdbus-test-codegen-generated-doc \ + --annotate "org.project.Bar" Key1 Value1 \ + --annotate "org.project.Bar" org.gtk.GDBus.Internal Value2 \ + --annotate "org.project.Bar.HelloWorld()" Key3 Value3 \ + --annotate "org.project.Bar::TestSignal" Key4 Value4 \ + --annotate "org.project.Bar:ay" Key5 Value5 \ + --annotate "org.project.Bar.TestPrimitiveTypes()[val_int32]" Key6 Value6 \ + --annotate "org.project.Bar.TestPrimitiveTypes()[ret_uint32]" Key7 Value7 \ + --annotate "org.project.Bar::TestSignal[array_of_strings]" Key8 Value8 \ + $(srcdir)/test-codegen.xml \ + $(NULL) + +EXTRA_DIST += test-codegen.xml +CLEANFILES += gdbus-test-codegen-generated.[ch] gdbus-test-codegen-generated-doc-*.xml +endif # OS_UNIX +endif # HAVE_DBUS_DAEMON + +# ----------------------------------------------------------------------------- + +if OS_WIN32 +test_programs += win32-streams +endif + +if PLATFORM_WIN32 +no_undefined = -no-undefined +endif + +if HAVE_DBUS1 +test_programs += gdbus-serialization +gdbus_serialization_CFLAGS = $(AM_CFLAGS) $(DBUS1_CFLAGS) +gdbus_serialization_LDADD = $(LDADD) $(DBUS1_LIBS) +gdbus_serialization_SOURCES = \ + gdbus-serialization.c \ + gdbus-tests.h \ + gdbus-tests.c +endif + +# ----------------------------------------------------------------------------- +# The resources test is a bit more complicated... + +test_programs += resources +resources_SOURCES = resources.c +nodist_resources_SOURCES = test_resources.c test_resources2.c test_resources2.h +resources_DEPENDENCIES = test.gresource + +test_ltlibraries += libresourceplugin.la +libresourceplugin_la_SOURCES = resourceplugin.c plugin_resources.c +libresourceplugin_la_LDFLAGS = -avoid-version -module -export-dynamic $(no_undefined) +libresourceplugin_la_LIBADD = $(LDADD) + +# libtool contains a bug whereby the created .la file doesn't contain the correct dlname='' in the case that +# you're building a library but not installing it. This is apparently because the only considered use for an +# uninstalled library is as a convenience library for linking (despite the fact that we give -module). The lack +# of dlname='' in the .la trips up libltdl and GModule as well. We can trick libtool into believing that we +# will install the module by giving it a bogus -rpath for the uninstalled cases. +# +# See http://lists.gnu.org/archive/html/bug-libtool/2013-05/msg00009.html +if !ENABLE_INSTALLED_TESTS +libresourceplugin_la_LDFLAGS += -rpath / +endif if CROSS_COMPILING glib_compile_resources=$(GLIB_COMPILE_RESOURCES) @@ -459,7 +428,7 @@ else glib_compile_resources=$(top_builddir)/gio/glib-compile-resources endif -BUILT_SOURCES += test_resources.c test_resources2.c test_resources2.h +resources.o: test_resources2.h test_resources.c: test2.gresource.xml Makefile $(shell $(glib_compile_resources) --sourcedir=$(srcdir) --generate-dependencies $(srcdir)/test2.gresource.xml) $(AM_V_GEN) $(glib_compile_resources) --target=$@ --sourcedir=$(srcdir) --generate-source --c-name _g_test1 $< @@ -472,75 +441,6 @@ plugin_resources.c: test4.gresource.xml Makefile $(shell $(glib_compile_resource test.gresource: test.gresource.xml Makefile $(shell $(glib_compile_resources) --sourcedir=$(srcdir) --generate-dependencies $(srcdir)/test.gresource.xml) $(AM_V_GEN) $(glib_compile_resources) --target=$@ --sourcedir=$(srcdir) $< -if BUILDOPT_INSTALL_TESTS -insttest_LTLIBRARIES = libresourceplugin.la -else -noinst_LTLIBRARIES = libresourceplugin.la -endif +EXTRA_DIST += test.gresource.xml test1.txt test2.gresource.xml test2.txt test3.gresource.xml test3.txt test4.gresource.xml -libresourceplugin_la_SOURCES = resourceplugin.c plugin_resources.c -libresourceplugin_la_LDFLAGS = -avoid-version -module $(no_undefined) -rpath $(insttestdir) -libresourceplugin_la_LIBADD = $(LDADD) - -CLEANFILES = gdbus-test-codegen-generated.[ch] gdbus-test-codegen-generated-doc-*.xml test_resources2.[ch] plugin_resources.c - -DISTCLEANFILES = \ - applications/mimeinfo.cache \ - org.gtk.test.enums.xml \ - de/LC_MESSAGES/test.mo \ - test.mo \ - test.gresource \ - test_resources.c \ - gsettings.store \ - gschemas.compiled \ - schema-source/gschemas.compiled - -distclean-local: - rm -rf xdgdatahome xdgdatadir - -test_files = \ - contexts.c \ - g-icon.c \ - file.c \ - enums.xml.template \ - testenum.h \ - org.gtk.test.gschema.xml \ - org.gtk.schemasourcecheck.gschema.xml \ - test.gresource \ - $(NULL) -EXTRA_DIST += $(test_files) - -if BUILDOPT_INSTALL_TESTS -insttest_PROGRAMS = $(test_progs) $(other_progs) - -schematestdir = $(insttestdir)/schema-tests -schematest_DATA = $(schema_test_files) - -certtestdir = $(insttestdir)/cert-tests -certtest_DATA = $(cert_test_files) - -testdatadir = $(insttestdir) -testdata_DATA = $(test_files) - -testmetadir = $(datadir)/installed-tests/$(PACKAGE) -xfail_tests = desktop-app-info.test -developer_only_tests = gsettings.test gdbus-overflow.test -testmeta_DATA = $(filter-out $(xfail_tests) $(developer_only_tests),$(test_progs:=.test)) - -%.test: %$(EXEEXT) Makefile - $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ - echo 'Type=session' >> $@.tmp; \ - echo 'Exec=$(pkglibexecdir)/installed-tests/$<' >> $@.tmp; \ - mv $@.tmp $@) - -%.desktop.insttest: %.desktop - sed -e s,Exec=./appinfo-test,Exec=$(insttestdir)/appinfo-test, < $< >$@.tmp && mv $@.tmp $@ - -installed_desktop_test_files = $(desktop_test_files:.desktop=.desktop.insttest) -install-data-local: $(installed_desktop_test_files) - for x in $(desktop_test_files); do \ - install -m 0644 $${x}.insttest $(DESTDIR)$(testdatadir)/$$x; \ - done - install -d -m 0755 $(DESTDIR)$(testdatadir)/schema-tests - -endif +CLEANFILES += test_resources.c test_resources2.[ch] plugin_resources.c test.gresource diff --git a/gio/tests/appinfo.c b/gio/tests/appinfo.c index f077a369a..5f84cbd63 100644 --- a/gio/tests/appinfo.c +++ b/gio/tests/appinfo.c @@ -15,6 +15,12 @@ test_launch (void) const gchar *path; gchar *uri; + if (!g_getenv ("DISPLAY")) + { + g_printerr ("No DISPLAY. Skipping test. "); + return; + } + path = g_test_get_filename (G_TEST_DIST, "appinfo-test.desktop", NULL); appinfo = (GAppInfo*)g_desktop_app_info_new_from_filename (path); g_assert (appinfo != NULL); diff --git a/gio/tests/file.c b/gio/tests/file.c index 86d00581d..c59a66013 100644 --- a/gio/tests/file.c +++ b/gio/tests/file.c @@ -91,7 +91,7 @@ test_type (void) g_assert_cmpint (type, ==, G_FILE_TYPE_REGULAR); g_object_unref (file); - file = g_file_get_child (datapath_f, "schema-tests"); + file = g_file_get_child (datapath_f, "cert-tests"); type = g_file_query_file_type (file, 0, NULL); g_assert_cmpint (type, ==, G_FILE_TYPE_DIRECTORY); diff --git a/gio/tests/gdbus-example-objectmanager-client.c b/gio/tests/gdbus-example-objectmanager-client.c index a99399665..b235ca140 100644 --- a/gio/tests/gdbus-example-objectmanager-client.c +++ b/gio/tests/gdbus-example-objectmanager-client.c @@ -1,5 +1,5 @@ -#include "gdbus-example-objectmanager-generated.h" +#include "gdbus-object-manager-example/gdbus-example-objectmanager-generated.h" /* ---------------------------------------------------------------------------------------------------- */ diff --git a/gio/tests/gdbus-example-objectmanager-server.c b/gio/tests/gdbus-example-objectmanager-server.c index 1233958b7..2a7bf63b6 100644 --- a/gio/tests/gdbus-example-objectmanager-server.c +++ b/gio/tests/gdbus-example-objectmanager-server.c @@ -1,5 +1,5 @@ -#include "gdbus-example-objectmanager-generated.h" +#include "gdbus-object-manager-example/gdbus-example-objectmanager-generated.h" /* ---------------------------------------------------------------------------------------------------- */ diff --git a/gio/tests/gdbus-object-manager-example/Makefile.am b/gio/tests/gdbus-object-manager-example/Makefile.am index 6875210a6..d6d141289 100644 --- a/gio/tests/gdbus-object-manager-example/Makefile.am +++ b/gio/tests/gdbus-object-manager-example/Makefile.am @@ -1,24 +1,14 @@ -NULL = -BUILT_SOURCES = -CLEANFILES = +include $(top_srcdir)/glib.mk -include $(top_srcdir)/Makefile.decl - -AM_CPPFLAGS = \ - -g \ - $(gio_INCLUDES) \ - $(GLIB_DEBUG_FLAGS) \ - -I$(top_builddir)/gio \ - -I$(top_srcdir)/gio \ - -DSRCDIR=\""$(srcdir)"\" +AM_CPPFLAGS = -g $(gio_INCLUDES) $(GLIB_DEBUG_FLAGS) -I$(top_builddir)/gio -I$(top_srcdir)/gio # ------------------------------------------------------------------------ -GDBUS_GENERATED = \ - gdbus-example-objectmanager-generated.h \ - gdbus-example-objectmanager-generated.c \ +GDBUS_GENERATED = \ + gdbus-example-objectmanager-generated.h \ + gdbus-example-objectmanager-generated.c \ gdbus-example-objectmanager-generated-org.gtk.GDBus.Example.ObjectManager.Animal.xml \ - gdbus-example-objectmanager-generated-org.gtk.GDBus.Example.ObjectManager.Cat.xml \ + gdbus-example-objectmanager-generated-org.gtk.GDBus.Example.ObjectManager.Cat.xml \ $(NULL) $(GDBUS_GENERATED) : gdbus-example-objectmanager.xml Makefile $(top_builddir)/gio/gdbus-2.0/codegen/gdbus-codegen @@ -33,11 +23,19 @@ $(GDBUS_GENERATED) : gdbus-example-objectmanager.xml Makefile $(top_builddir)/gi $< \ $(NULL) -BUILT_SOURCES += $(GDBUS_GENERATED) +test_ltlibraries = libgdbus-example-objectmanager.la -noinst_LTLIBRARIES = libgdbus-example-objectmanager.la -libgdbus_example_objectmanager_la_SOURCES = gdbus-example-objectmanager-generated.h gdbus-example-objectmanager-generated.c -libgdbus_example_objectmanager_la_LIBADD = \ +if ENABLE_GTK_DOC +# The docs pull these in, so we need them even if not doing 'make check' +BUILT_SOURCES += $(GDBUS_GENERATED) +noinst_LTLIBRARIES += libgdbus-example-objectmanager.la +endif + +nodist_libgdbus_example_objectmanager_la_SOURCES = \ + gdbus-example-objectmanager-generated.h \ + gdbus-example-objectmanager-generated.c + +libgdbus_example_objectmanager_la_LIBADD = \ $(top_builddir)/glib/libglib-2.0.la \ $(top_builddir)/gobject/libgobject-2.0.la \ $(top_builddir)/gmodule/libgmodule-2.0.la \ @@ -47,4 +45,3 @@ libgdbus_example_objectmanager_la_LIBADD = \ EXTRA_DIST += gdbus-example-objectmanager.xml CLEANFILES += $(GDBUS_GENERATED) - diff --git a/gio/tests/gdbus-peer.c b/gio/tests/gdbus-peer.c index d85e94821..dba892b6b 100644 --- a/gio/tests/gdbus-peer.c +++ b/gio/tests/gdbus-peer.c @@ -53,7 +53,7 @@ #include "gdbus-tests.h" -#include "gdbus-example-objectmanager-generated.h" +#include "gdbus-object-manager-example/gdbus-example-objectmanager-generated.h" #ifdef G_OS_UNIX static gboolean is_unix = TRUE; diff --git a/gio/tests/gdbus-test-fixture.c b/gio/tests/gdbus-test-fixture.c index a4403dd72..1e0a3223c 100644 --- a/gio/tests/gdbus-test-fixture.c +++ b/gio/tests/gdbus-test-fixture.c @@ -1,5 +1,5 @@ -#include "gdbus-example-objectmanager-generated.h" +#include "gdbus-object-manager-example/gdbus-example-objectmanager-generated.h" /* ---------------------------------------------------------------------------------------------------- */ diff --git a/gio/tests/gschema-compile.c b/gio/tests/gschema-compile.c index aa83731f8..b687ab431 100644 --- a/gio/tests/gschema-compile.c +++ b/gio/tests/gschema-compile.c @@ -107,14 +107,14 @@ static const SchemaTest tests[] = { { "range-parse-error", NULL, "*invalid character in number*" }, { "from-docs", NULL, NULL }, { "extending", NULL, NULL }, - { "extend-missing", NULL, "*extends not-yet-existing schema*" }, + { "extend-missing", NULL, "*extends not yet existing schema*" }, { "extend-nonlist", NULL, "*which is not a list*" }, - { "extend-self", NULL, "*not-yet-existing*" }, + { "extend-self", NULL, "*not yet existing*" }, { "extend-wrong-list-indirect", NULL, "*'y' does not extend 'x'*" }, { "extend-wrong-list", NULL, "*'y' does not extend 'x'*" }, { "key-in-list-indirect", NULL, "*cannot add keys to a 'list*" }, { "key-in-list", NULL, "*cannot add keys to a 'list*" }, - { "list-of-missing", NULL, "*is list of not-yet-existing schema*" }, + { "list-of-missing", NULL, "*is list of not yet existing schema*" }, { "extend-and-shadow", NULL, "*shadows*use *" }, { "extend-and-shadow-indirect", NULL, "*shadows*use *" }, { "override", NULL, NULL }, diff --git a/gio/tests/gsettings.c b/gio/tests/gsettings.c index 922eea262..20967f463 100644 --- a/gio/tests/gsettings.c +++ b/gio/tests/gsettings.c @@ -660,14 +660,20 @@ test_l10n (void) str = NULL; setlocale (LC_MESSAGES, "de_DE"); - str = g_settings_get_string (settings, "error-message"); + /* Only do the test if translation is actually working... */ + if (g_str_equal (dgettext ("test", "\"Unnamed\""), "\"Unbenannt\"")) + { + str = g_settings_get_string (settings, "error-message"); + + g_assert_cmpstr (str, ==, "Unbenannt"); + g_object_unref (settings); + g_free (str); + str = NULL; + } + else + g_printerr ("warning: translation is not working... skipping test. "); + setlocale (LC_MESSAGES, locale); - - g_assert_cmpstr (str, ==, "Unbenannt"); - g_object_unref (settings); - g_free (str); - str = NULL; - g_free (locale); } @@ -701,14 +707,20 @@ test_l10n_context (void) str = NULL; setlocale (LC_MESSAGES, "de_DE"); - g_settings_get (settings, "backspace", "s", &str); + /* Only do the test if translation is actually working... */ + if (g_str_equal (dgettext ("test", "\"Unnamed\""), "\"Unbenannt\"")) + { + g_settings_get (settings, "backspace", "s", &str); + + g_assert_cmpstr (str, ==, "Löschen"); + g_object_unref (settings); + g_free (str); + str = NULL; + } + else + g_printerr ("warning: translation is not working... skipping test. "); + setlocale (LC_MESSAGES, locale); - - g_assert_cmpstr (str, ==, "Löschen"); - g_object_unref (settings); - g_free (str); - str = NULL; - g_free (locale); } @@ -1578,24 +1590,6 @@ test_child_schema (void) g_object_unref (settings); } -static gboolean -glib_translations_work (void) -{ - gboolean works; - gchar *locale; - gchar *orig = "Unnamed"; - - locale = g_strdup (setlocale (LC_MESSAGES, NULL)); - if (!setlocale (LC_MESSAGES, "de")) - works = FALSE; - else - works = dgettext ("glib20", orig) != orig; - setlocale (LC_MESSAGES, locale); - g_free (locale); - - return works; -} - #include "../strinfo.c" static void @@ -2316,11 +2310,8 @@ main (int argc, char *argv[]) g_test_add_func ("/gsettings/complex-types", test_complex_types); g_test_add_func ("/gsettings/changes", test_changes); - if (glib_translations_work ()) - { - g_test_add_func ("/gsettings/l10n", test_l10n); - g_test_add_func ("/gsettings/l10n-context", test_l10n_context); - } + g_test_add_func ("/gsettings/l10n", test_l10n); + g_test_add_func ("/gsettings/l10n-context", test_l10n_context); g_test_add_func ("/gsettings/delay-apply", test_delay_apply); g_test_add_func ("/gsettings/delay-revert", test_delay_revert); diff --git a/gio/win32/Makefile.am b/gio/win32/Makefile.am index b75bc36de..a48c68f03 100644 --- a/gio/win32/Makefile.am +++ b/gio/win32/Makefile.am @@ -1,8 +1,6 @@ -include $(top_srcdir)/Makefile.decl +include $(top_srcdir)/glib.mk -NULL = - -noinst_LTLIBRARIES = libgiowin32.la +noinst_LTLIBRARIES += libgiowin32.la libgiowin32_la_SOURCES = \ gwin32directorymonitor.c \ diff --git a/gio/xdgmime/Makefile.am b/gio/xdgmime/Makefile.am index fa39d05e5..42348a6ab 100644 --- a/gio/xdgmime/Makefile.am +++ b/gio/xdgmime/Makefile.am @@ -1,8 +1,8 @@ -include $(top_srcdir)/Makefile.decl +include $(top_srcdir)/glib.mk AM_CPPFLAGS = -DXDG_PREFIX=_gio_xdg -noinst_LTLIBRARIES = libxdgmime.la +noinst_LTLIBRARIES += libxdgmime.la libxdgmime_la_CFLAGS = $(GLIB_HIDDEN_VISIBILITY_CFLAGS) libxdgmime_la_SOURCES = \ diff --git a/glib.mk b/glib.mk new file mode 100644 index 000000000..e38d0662a --- /dev/null +++ b/glib.mk @@ -0,0 +1,223 @@ +# GLIB - Library of useful C routines + +#GTESTER = gtester # for non-GLIB packages +GTESTER = $(top_builddir)/glib/gtester # for the GLIB package +GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package +NULL = + +# initialize variables for unconditional += appending +BUILT_SOURCES = +BUILT_EXTRA_DIST = +CLEANFILES = +DISTCLEANFILES = +MAINTAINERCLEANFILES = +EXTRA_DIST = +TEST_PROGS = + +installed_test_LTLIBRARIES = +installed_test_PROGRAMS = +installed_test_SCRIPTS = +nobase_installed_test_DATA = + +noinst_LTLIBRARIES = +noinst_PROGRAMS = +noinst_SCRIPTS = +noinst_DATA = + +check_LTLIBRARIES = +check_PROGRAMS = +check_SCRIPTS = +check_DATA = + +TESTS = + +### testing rules + +# test: run all tests in cwd and subdirs +test: test-nonrecursive +if OS_UNIX + @ for subdir in $(SUBDIRS) . ; do \ + test "$$subdir" = "." -o "$$subdir" = "po" || \ + ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \ + done + +# test-nonrecursive: run tests only in cwd +test-nonrecursive: ${TEST_PROGS} + @test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS} +else +test-nonrecursive: +endif + +if OS_WIN32 +TESTS += $(addsuffix .exe, $(TEST_PROGS)) +endif + +# test-report: run tests in subdirs and generate report +# perf-report: run tests in subdirs with -m perf and generate report +# full-report: like test-report: with -m perf and -m slow +test-report perf-report full-report: ${TEST_PROGS} + @test -z "${TEST_PROGS}" || { \ + case $@ in \ + test-report) test_options="-k";; \ + perf-report) test_options="-k -m=perf";; \ + full-report) test_options="-k -m=perf -m=slow";; \ + esac ; \ + if test -z "$$GTESTER_LOGDIR" ; then \ + G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \ + elif test -n "${TEST_PROGS}" ; then \ + G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \ + fi ; \ + } + @ ignore_logdir=true ; \ + if test -z "$$GTESTER_LOGDIR" ; then \ + GTESTER_LOGDIR=`mktemp -d "\`pwd\`/.testlogs-XXXXXX"`; export GTESTER_LOGDIR ; \ + ignore_logdir=false ; \ + fi ; \ + if test -d "$(top_srcdir)/.git" ; then \ + REVISION=`git describe` ; \ + else \ + REVISION=$(VERSION) ; \ + fi ; \ + for subdir in $(SUBDIRS) . ; do \ + test "$$subdir" = "." -o "$$subdir" = "po" || \ + ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \ + done ; \ + $$ignore_logdir || { \ + echo '' > $@.xml ; \ + echo '' >> $@.xml ; \ + echo '' >> $@.xml ; \ + echo ' $(PACKAGE)' >> $@.xml ; \ + echo ' $(VERSION)' >> $@.xml ; \ + echo " $$REVISION" >> $@.xml ; \ + echo '' >> $@.xml ; \ + for lf in `ls -L "$$GTESTER_LOGDIR"/.` ; do \ + sed '1,1s/^?]*?>//' <"$$GTESTER_LOGDIR"/"$$lf" >> $@.xml ; \ + done ; \ + echo >> $@.xml ; \ + echo '' >> $@.xml ; \ + rm -rf "$$GTESTER_LOGDIR"/ ; \ + ${GTESTER_REPORT} --version 2>/dev/null 1>&2 ; test "$$?" != 0 || ${GTESTER_REPORT} $@.xml >$@.html ; \ + } +.PHONY: test test-report perf-report full-report test-nonrecursive + +.PHONY: lcov genlcov lcov-clean +# use recursive makes in order to ignore errors during check +lcov: + -$(MAKE) $(AM_MAKEFLAGS) -k check + $(MAKE) $(AM_MAKEFLAGS) genlcov + +# we have to massage the lcov.info file slightly to hide the effect of libtool +# placing the objects files in the .libs/ directory separate from the *.c +# we also have to delete tests/.libs/libmoduletestplugin_*.gcda +genlcov: + rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda + $(LTP) --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool + LANG=C $(LTP_GENHTML) --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --show-details glib-lcov.info + @echo "file://$(abs_top_builddir)/glib-lcov/index.html" + +lcov-clean: + -$(LTP) --directory $(top_builddir) -z + -rm -rf glib-lcov.info glib-lcov + -find -name '*.gcda' -print | xargs rm + +# run tests in cwd as part of make check +check-local: test-nonrecursive + +# We support a fairly large range of possible variables. It is expected that all types of files in a test suite +# will belong in exactly one of the following variables. +# +# First, we support the usual automake suffixes, but in lowercase, with the customary meaning: +# +# test_programs, test_scripts, test_data, test_ltlibraries +# +# The above are used to list files that are involved in both uninstalled and installed testing. The +# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite. +# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is +# installed in the same way as it appears in the package layout. +# +# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled', +# like so: +# +# installed_test_programs, uninstalled_test_programs +# installed_test_scripts, uninstalled_test_scripts +# installed_test_data, uninstalled_test_data +# installed_test_ltlibraries, uninstalled_test_ltlibraries +# +# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts +# that should not themselves be run as testcases (but exist to be used from other testcases): +# +# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs +# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts +# +# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data +# file automatically end up in the tarball. +# +# dist_test_scripts, dist_test_data, dist_test_extra_scripts +# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts +# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts +# +# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the +# standard automake convention of not disting programs scripts or data by default. +# +# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted +# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under +# gtester. That's a bit strange for scripts, but it's possible. + +# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace... +TEST_PROGS += $(strip $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \ + $(dist_test_scripts) $(dist_uninstalled_test_scripts)) + +# Note: build even the installed-only targets during 'make check' to ensure that they still work. +# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to +# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were +# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'. +all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \ + $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs) +all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) $(installed_test_scripts) \ + $(test_extra_scripts) $(uninstalled_test_extra_scripts) $(installed_test_extra_scripts) +all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \ + $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts) +all_test_scripts += $(all_dist_test_scripts) +EXTRA_DIST += $(all_dist_test_scripts) +all_test_data = $(test_data) $(uninstalled_test_data) $(installed_test_data) +all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data) +all_test_data += $(all_dist_test_data) +EXTRA_DIST += $(all_dist_test_data) +all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries) + +if ENABLE_ALWAYS_BUILD_TESTS +noinst_LTLIBRARIES += $(all_test_ltlibs) +noinst_PROGRAMS += $(all_test_programs) +noinst_SCRIPTS += $(all_test_scripts) +noinst_DATA += $(all_test_data) +else +check_LTLIBRARIES += $(all_test_ltlibs) +check_PROGRAMS += $(all_test_programs) +check_SCRIPTS += $(all_test_scripts) +check_DATA += $(all_test_data) +endif + +if ENABLE_INSTALLED_TESTS +installed_test_PROGRAMS += $(test_programs) $(installed_test_programs) \ + $(test_extra_programs) $(installed_test_extra_programs) +installed_test_SCRIPTS += $(test_scripts) $(installed_test_scripts) \ + $(test_extra_scripts) $(test_installed_extra_scripts) +installed_test_SCRIPTS += $(dist_test_scripts) $(dist_test_extra_scripts) \ + $(dist_installed_test_scripts) $(dist_installed_test_extra_scripts) +nobase_installed_test_DATA += $(test_data) $(installed_test_data) +nobase_installed_test_DATA += $(dist_test_data) $(dist_installed_test_data) +installed_test_LTLIBRARIES += $(test_ltlibraries) $(installed_test_ltlibraries) +installed_testcases = $(test_programs) $(installed_test_programs) \ + $(test_scripts) $(installed_test_scripts) \ + $(dist_test_scripts) $(dist_installed_test_scripts) + +installed_test_meta_DATA = $(installed_testcases:=.test) + +%.test: %$(EXEEXT) Makefile + $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ + echo 'Type=session' >> $@.tmp; \ + echo 'Exec=$(installed_testdir)/$<' >> $@.tmp; \ + mv $@.tmp $@) + +CLEANFILES += $(installed_test_meta_DATA) +endif diff --git a/glib/Makefile.am b/glib/Makefile.am index 0744a6c52..12463fa67 100644 --- a/glib/Makefile.am +++ b/glib/Makefile.am @@ -1,9 +1,5 @@ ## Process this file with automake to produce Makefile.in -include $(top_srcdir)/Makefile.decl - -BUILT_SOURCES = -DISTCLEANFILES = -CLEANFILES = +include $(top_srcdir)/glib.mk # # Generate glibconfig.h @@ -35,11 +31,8 @@ else MAYBE_PCRE = pcre endif -SUBDIRS = libcharset $(PRINTF_SUBDIR) $(MAYBE_PCRE) update-pcre . +SUBDIRS = libcharset $(PRINTF_SUBDIR) $(MAYBE_PCRE) update-pcre . tests DIST_SUBDIRS = libcharset gnulib pcre update-pcre tests -if BUILD_MODULAR_TESTS -SUBDIRS += tests -endif AM_CPPFLAGS = \ $(glib_INCLUDES) \ @@ -77,7 +70,7 @@ EXTRA_DIST += \ CLEANFILES += libglib-gdb.py # These may be in the builddir too -BUILT_EXTRA_DIST = \ +BUILT_EXTRA_DIST += \ makefile.msc \ glibconfig.h.win32 \ glib.rc @@ -86,7 +79,7 @@ lib_LTLIBRARIES = libglib-2.0.la if OS_WIN32_AND_DLL_COMPILATION if MS_LIB_AVAILABLE -noinst_DATA = glib-2.0.lib +noinst_DATA += glib-2.0.lib install_ms_lib_cmd = $(INSTALL) glib-2.0.lib $(DESTDIR)$(libdir) uninstall_ms_lib_cmd = -rm $(DESTDIR)$(libdir)/glib-2.0.lib diff --git a/glib/gnulib/Makefile.am b/glib/gnulib/Makefile.am index 03e1d1860..931230e55 100644 --- a/glib/gnulib/Makefile.am +++ b/glib/gnulib/Makefile.am @@ -1,5 +1,5 @@ ## Process this file with automake to produce Makefile.in -include $(top_srcdir)/Makefile.decl +include $(top_srcdir)/glib.mk AM_CPPFLAGS = \ $(glib_INCLUDES) \ @@ -8,7 +8,7 @@ AM_CPPFLAGS = \ -DG_DISABLE_DEPRECATED \ -DGLIB_COMPILATION -noinst_LTLIBRARIES = libgnulib.la +noinst_LTLIBRARIES += libgnulib.la libgnulib_la_CFLAGS = $(GLIB_HIDDEN_VISIBILITY_CFLAGS) libgnulib_la_SOURCES = \ diff --git a/glib/libcharset/Makefile.am b/glib/libcharset/Makefile.am index fb9a9785b..642f75c39 100644 --- a/glib/libcharset/Makefile.am +++ b/glib/libcharset/Makefile.am @@ -1,11 +1,11 @@ ## Process this file with automake to produce Makefile.in -include $(top_srcdir)/Makefile.decl +include $(top_srcdir)/glib.mk AM_CPPFLAGS = \ -DLIBDIR=\"$(libdir)\" \ $(config_h_INCLUDES) -noinst_LTLIBRARIES = libcharset.la +noinst_LTLIBRARIES += libcharset.la libcharset_la_CFLAGS = $(GLIB_HIDDEN_VISIBILITY_CFLAGS) libcharset_la_SOURCES = \ @@ -63,4 +63,4 @@ SUFFIXES = .sed .sin $(AM_V_GEN) $(SED) -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $< > t-$@ @mv t-$@ $@ -CLEANFILES = charset.alias ref-add.sed ref-del.sed +CLEANFILES += charset.alias ref-add.sed ref-del.sed diff --git a/glib/pcre/Makefile.am b/glib/pcre/Makefile.am index 53669a0b2..14442dcc0 100644 --- a/glib/pcre/Makefile.am +++ b/glib/pcre/Makefile.am @@ -1,6 +1,6 @@ -include $(top_srcdir)/Makefile.decl +include $(top_srcdir)/glib.mk -noinst_LTLIBRARIES = libpcre.la +noinst_LTLIBRARIES += libpcre.la libpcre_la_CPPFLAGS = \ -DG_LOG_DOMAIN=\"GLib-GRegex\" \ diff --git a/glib/tests/Makefile.am b/glib/tests/Makefile.am index 5ee09dd79..5753d531e 100644 --- a/glib/tests/Makefile.am +++ b/glib/tests/Makefile.am @@ -1,81 +1,31 @@ -include $(top_srcdir)/Makefile.decl -NULL = - -insttestdir=$(pkglibexecdir)/installed-tests - -bookmark_test_files = \ - bookmarks/fail-01.xbel \ - bookmarks/fail-02.xbel \ - bookmarks/fail-03.xbel \ - bookmarks/fail-04.xbel \ - bookmarks/fail-05.xbel \ - bookmarks/fail-06.xbel \ - bookmarks/fail-07.xbel \ - bookmarks/fail-08.xbel \ - bookmarks/fail-09.xbel \ - bookmarks/fail-10.xbel \ - bookmarks/fail-11.xbel \ - bookmarks/fail-12.xbel \ - bookmarks/fail-13.xbel \ - bookmarks/fail-14.xbel \ - bookmarks/fail-15.xbel \ - bookmarks/fail-16.xbel \ - bookmarks/fail-17.xbel \ - bookmarks/valid-01.xbel \ - bookmarks/valid-02.xbel \ - bookmarks/valid-03.xbel \ - $(NULL) - -markup_tests = \ - fail-1 fail-2 fail-3 fail-4 fail-5 \ - fail-6 fail-7 fail-8 fail-9 fail-10 \ - fail-11 fail-12 fail-13 fail-14 fail-15 \ - fail-16 fail-17 fail-18 fail-19 fail-20 \ - fail-21 fail-22 fail-23 fail-24 fail-25 \ - fail-26 fail-27 fail-28 fail-29 fail-30 \ - fail-31 fail-32 fail-33 fail-34 fail-35 \ - fail-36 fail-37 fail-38 fail-39 fail-40 \ - fail-41 fail-42 fail-43 fail-44 fail-45 \ - fail-46 fail-47 fail-48 fail-49 \ - valid-1 valid-2 valid-3 valid-4 valid-5 \ - valid-6 valid-7 valid-8 valid-9 valid-10 \ - valid-11 valid-12 valid-13 valid-14 valid-15 \ - $(NULL) - -all_markup_test_files = $(addprefix markups/,$(markup_tests:=.gmarkup) $(markup_tests:=.expected)) - -test_files = \ - keyfiletest.ini \ - pages.ini \ - keyfile.c \ - empty \ - 4096-random-bytes \ - $(NULL) - -test_script_files = \ - echo-script - -AM_CPPFLAGS = \ - -g \ - $(glib_INCLUDES) \ - -DG_LOG_DOMAIN=\"GLib\" \ - -DSRCDIR=\""$(srcdir)"\" \ - -DEXEEXT=\"$(EXEEXT)\" \ - $(GLIB_DEBUG_FLAGS) - -AM_CFLAGS = $(GLIB_WARN_CFLAGS) +include $(top_srcdir)/glib.mk LDADD = $(top_builddir)/glib/libglib-2.0.la -lm +AM_CPPFLAGS = -g $(glib_INCLUDES) $(GLIB_DEBUG_FLAGS) +DEFS = -DG_LOG_DOMAIN=\"GLib\" -DEXEEXT=\"$(EXEEXT)\" +AM_CFLAGS = $(GLIB_WARN_CFLAGS) -TEST_PROGS += \ - 1bit-emufutex \ - gwakeup \ +# ----------------------------------------------------------------------------- + +dist_test_data = \ + keyfiletest.ini \ + pages.ini \ + keyfile.c \ + empty \ + 4096-random-bytes \ $(NULL) -all_test_programs = \ +dist_test_extra_scripts = \ + echo-script \ + $(NULL) + +test_extra_programs = \ + test-spawn-echo \ + $(NULL) + +test_programs = \ array-test \ asyncqueue \ - atomic \ base64 \ bitlock \ bookmarkfile \ @@ -130,7 +80,7 @@ all_test_programs = \ spawn-singlethread \ strfuncs \ string \ - testing \ + testing \ test-printf \ thread \ timeout \ @@ -144,63 +94,79 @@ all_test_programs = \ uri \ 1bit-mutex \ 642026 \ - 642026-ec + $(NULL) -if OS_UNIX -all_test_programs += unix -all_test_programs += include -endif +uninstalled_test_programs = \ + $(NULL) -extra_test_binaries = test-spawn-echo +dist_test_data += \ + bookmarks/fail-01.xbel \ + bookmarks/fail-02.xbel \ + bookmarks/fail-03.xbel \ + bookmarks/fail-04.xbel \ + bookmarks/fail-05.xbel \ + bookmarks/fail-06.xbel \ + bookmarks/fail-07.xbel \ + bookmarks/fail-08.xbel \ + bookmarks/fail-09.xbel \ + bookmarks/fail-10.xbel \ + bookmarks/fail-11.xbel \ + bookmarks/fail-12.xbel \ + bookmarks/fail-13.xbel \ + bookmarks/fail-14.xbel \ + bookmarks/fail-15.xbel \ + bookmarks/fail-16.xbel \ + bookmarks/fail-17.xbel \ + bookmarks/valid-01.xbel \ + bookmarks/valid-02.xbel \ + bookmarks/valid-03.xbel \ + $(NULL) -if BUILD_MODULAR_TESTS -TEST_PROGS += $(all_test_programs) -noinst_PROGRAMS = $(TEST_PROGS) $(extra_test_binaries) -endif +markup_tests = \ + fail-1 fail-2 fail-3 fail-4 fail-5 \ + fail-6 fail-7 fail-8 fail-9 fail-10 \ + fail-11 fail-12 fail-13 fail-14 fail-15 \ + fail-16 fail-17 fail-18 fail-19 fail-20 \ + fail-21 fail-22 fail-23 fail-24 fail-25 \ + fail-26 fail-27 fail-28 fail-29 fail-30 \ + fail-31 fail-32 fail-33 fail-34 fail-35 \ + fail-36 fail-37 fail-38 fail-39 fail-40 \ + fail-41 fail-42 fail-43 fail-44 fail-45 \ + fail-46 fail-47 fail-48 fail-49 \ + valid-1 valid-2 valid-3 valid-4 valid-5 \ + valid-6 valid-7 valid-8 valid-9 valid-10 \ + valid-11 valid-12 valid-13 valid-14 valid-15 \ + $(NULL) -if BUILDOPT_INSTALL_TESTS -insttest_PROGRAMS = $(all_test_programs) $(extra_test_binaries) -testmetadir = $(datadir)/installed-tests/$(PACKAGE) -testmeta_DATA = $(all_test_programs:=.test) +dist_test_data += $(all_markup_data) +all_markup_data = $(addprefix markups/,$(markup_tests:=.gmarkup) $(markup_tests:=.expected)) -testdatadir=$(insttestdir) -testdata_DATA = $(test_files) - -testdata_SCRIPTS = $(test_script_files) - -bookmarksdir=$(insttestdir)/bookmarks -bookmarks_DATA = $(bookmark_test_files) - -markupsdir=$(insttestdir)/markups -markups_DATA = $(all_markup_test_files) -endif - -%.test: %$(EXEEXT) Makefile - $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ - echo 'Type=session' >> $@.tmp; \ - echo 'Exec=$(pkglibexecdir)/installed-tests/$<' >> $@.tmp; \ - mv $@.tmp $@) +# ----------------------------------------------------------------------------- +test_programs += atomic atomic_CFLAGS = $(AM_CFLAGS) if HAVE_GCC atomic_CFLAGS += -Wstrict-aliasing=2 endif +test_programs += 642026-ec 642026_ec_SOURCES = 642026.c 642026_ec_CFLAGS = -DG_ERRORCHECK_MUTEXES +uninstalled_test_programs += 1bit-emufutex 1bit_emufutex_SOURCES = 1bit-mutex.c 1bit_emufutex_CFLAGS = $(AM_CFLAGS) -DTEST_EMULATED_FUTEX +uninstalled_test_programs += gwakeup gwakeup_SOURCES = gwakeuptest.c ../../glib/gwakeup.c -if HAVE_EVENTFD -TEST_PROGS += gwakeup-fallback -gwakeup_fallback_SOURCES = gwakeuptest.c ../../glib/gwakeup.c -gwakeup_fallback_CFLAGS = $(AM_CFLAGS) -DTEST_EVENTFD_FALLBACK -endif +# ----------------------------------------------------------------------------- if OS_UNIX +test_programs += \ + unix \ + include \ + $(NULL) # some testing of gtester functionality XMLLINT = xmllint @@ -209,19 +175,21 @@ gtester-xmllint-check: # check testreport xml with xmllint if present ${GTESTER} -k --quiet -o tmpsample.xml --test-arg=--gtester-selftest ${GTESTER} ${XMLLINT} --version 2>/dev/null; test "$$?" != 0 || ${XMLLINT} --noout tmpsample.xml +CLEANFILES += tmpsample.xml + check-am: gtester-xmllint-check private_LDFLAGS = @G_THREAD_LIBS@ - endif -CLEANFILES = \ - tmpsample.xml +# ----------------------------------------------------------------------------- -EXTRA_DIST += \ - $(bookmark_test_files) \ - $(all_markup_test_files) \ - $(test_files) \ - $(test_script_files) \ - bookmarks.xbel \ - $(NULL) +if HAVE_EVENTFD +uninstalled_test_programs += gwakeup-fallback +gwakeup_fallback_SOURCES = gwakeuptest.c ../../glib/gwakeup.c +gwakeup_fallback_CFLAGS = $(AM_CFLAGS) -DTEST_EVENTFD_FALLBACK +endif + +# ----------------------------------------------------------------------------- + +EXTRA_DIST += bookmarks.xbel diff --git a/glib/update-pcre/Makefile.am b/glib/update-pcre/Makefile.am index 66943ec94..864880b3f 100644 --- a/glib/update-pcre/Makefile.am +++ b/glib/update-pcre/Makefile.am @@ -1,4 +1,4 @@ -include $(top_srcdir)/Makefile.decl +include $(top_srcdir)/glib.mk EXTRA_DIST += \ update.sh \ diff --git a/gmodule/Makefile.am b/gmodule/Makefile.am index 4a75a304b..6acd8464f 100644 --- a/gmodule/Makefile.am +++ b/gmodule/Makefile.am @@ -1,5 +1,5 @@ ## Process this file with automake to produce Makefile.in -include $(top_srcdir)/Makefile.decl +include $(top_srcdir)/glib.mk AM_CPPFLAGS = \ $(glib_INCLUDES) \ @@ -22,11 +22,11 @@ EXTRA_DIST += \ gmoduleconf.h.win32 \ gmodule.rc.in -BUILT_EXTRA_DIST = \ +BUILT_EXTRA_DIST += \ makefile.msc \ gmodule.rc -BUILT_SOURCES = gmoduleconf.h +BUILT_SOURCES += gmoduleconf.h gmoduleconf.h: gmoduleconf.h.in glibincludedir=$(includedir)/glib-2.0 @@ -41,7 +41,7 @@ lib_LTLIBRARIES = libgmodule-2.0.la if OS_WIN32_AND_DLL_COMPILATION if MS_LIB_AVAILABLE -noinst_DATA = gmodule-2.0.lib +noinst_DATA += gmodule-2.0.lib install_ms_lib_cmd = $(INSTALL) gmodule-2.0.lib $(DESTDIR)$(libdir) uninstall_ms_lib_cmd = -rm $(DESTDIR)$(libdir)/gmodule-2.0.lib diff --git a/gobject/Makefile.am b/gobject/Makefile.am index d1b52d103..f899e47c5 100644 --- a/gobject/Makefile.am +++ b/gobject/Makefile.am @@ -2,15 +2,9 @@ # Copyright (C) 1997,98,99,2000 Tim Janik and Red Hat, Inc. # ## Process this file with automake to produce Makefile.in -include $(top_srcdir)/Makefile.decl +include $(top_srcdir)/glib.mk -SUBDIRS = . -if BUILD_MODULAR_TESTS -SUBDIRS += tests -endif - -BUILT_SOURCES= -CLEANFILES= +SUBDIRS = . tests AM_CPPFLAGS = \ -DG_LOG_DOMAIN=\"GLib-GObject\" \ @@ -27,7 +21,7 @@ lib_LTLIBRARIES = libgobject-2.0.la if OS_WIN32_AND_DLL_COMPILATION if MS_LIB_AVAILABLE -noinst_DATA = gobject-2.0.lib +noinst_DATA += gobject-2.0.lib install_ms_lib_cmd = $(INSTALL) gobject-2.0.lib $(DESTDIR)$(libdir) uninstall_ms_lib_cmd = -rm $(DESTDIR)$(libdir)/gobject-2.0.lib @@ -210,7 +204,7 @@ EXTRA_DIST += \ CLEANFILES += libgobject-gdb.py -BUILT_EXTRA_DIST = \ +BUILT_EXTRA_DIST += \ makefile.msc \ gobject.rc diff --git a/gobject/tests/Makefile.am b/gobject/tests/Makefile.am index 988a13900..91dc49117 100644 --- a/gobject/tests/Makefile.am +++ b/gobject/tests/Makefile.am @@ -1,66 +1,48 @@ -include $(top_srcdir)/Makefile.decl -NULL = - -AM_CPPFLAGS = \ - -g \ - -DG_LOG_DOMAIN=\"GLib-GObject\" \ - $(gobject_INCLUDES) \ - $(GLIB_DEBUG_FLAGS) +include $(top_srcdir)/glib.mk +LDADD = ../libgobject-2.0.la $(top_builddir)/glib/libglib-2.0.la +AM_CPPFLAGS = -g $(gobject_INCLUDES) $(GLIB_DEBUG_FLAGS) +DEFS = -DG_LOG_DOMAIN=\"GLib-GObject\" AM_CFLAGS = $(GLIB_WARN_CFLAGS) +# ----------------------------------------------------------------------------- + +test_programs = \ + qdata \ + boxed \ + enums \ + param \ + threadtests \ + dynamictests \ + binding \ + properties \ + reference \ + valuearray \ + type \ + $(NULL) + +# ----------------------------------------------------------------------------- + +test_programs += ifaceproperties +ifaceproperties_SOURCES = ifaceproperties.c testcommon.h + +# ----------------------------------------------------------------------------- + +test_programs += signals +signals_SOURCES = signals.c +nodist_signals_SOURCES = marshalers.c marshalers.h +signals.o: marshalers.h +CLEANFILES += marshalers.h marshalers.c +EXTRA_DIST += marshalers.list + if CROSS_COMPILING glib_genmarshal=$(GLIB_GENMARSHAL) else glib_genmarshal=$(top_builddir)/gobject/glib-genmarshal endif -noinst_PROGRAMS = $(TEST_PROGS) -LDADD = ../libgobject-2.0.la $(top_builddir)/gthread/libgthread-2.0.la $(top_builddir)/glib/libglib-2.0.la - -TEST_PROGS += \ - qdata \ - boxed \ - enums \ - param \ - signals \ - threadtests \ - dynamictests \ - binding \ - properties \ - reference \ - ifaceproperties \ - valuearray \ - type \ - $(NULL) - -signals_SOURCES = signals.c marshalers.c - marshalers.h: Makefile.am marshalers.list $(AM_V_GEN) $(glib_genmarshal) --prefix=test $(srcdir)/marshalers.list --header --valist-marshallers > marshalers.h marshalers.c: Makefile.am marshalers.list $(AM_V_GEN) (echo "#include \"marshalers.h\""; $(glib_genmarshal) --prefix=test $(srcdir)/marshalers.list --body --valist-marshallers) > $@.tmp && mv $@.tmp $@ - -BUILT_SOURCES = marshalers.h marshalers.c -CLEANFILES = marshalers.h marshalers.c - -ifaceproperties_SOURCES = ifaceproperties.c testcommon.h - -EXTRA_DIST += marshalers.list - -if BUILDOPT_INSTALL_TESTS -insttestdir = $(pkglibexecdir)/installed-tests -insttest_PROGRAMS = $(TEST_PROGS) - -testmetadir = $(datadir)/installed-tests/$(PACKAGE) -testmeta_DATA = $(TEST_PROGS:=.test) - -%.test: %$(EXEEXT) Makefile - $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ - echo 'Type=session' >> $@.tmp; \ - echo 'Exec=$(pkglibexecdir)/installed-tests/$<' >> $@.tmp; \ - mv $@.tmp $@) - - -endif diff --git a/gthread/Makefile.am b/gthread/Makefile.am index 9132be631..f1ef78d6c 100644 --- a/gthread/Makefile.am +++ b/gthread/Makefile.am @@ -1,5 +1,5 @@ ## Process this file with automake to produce Makefile.in -include $(top_srcdir)/Makefile.decl +include $(top_srcdir)/glib.mk AM_CPPFLAGS = \ $(glib_INCLUDES) \ @@ -14,7 +14,7 @@ EXTRA_DIST += \ gthread.def \ gthread.rc.in -BUILT_EXTRA_DIST = \ +BUILT_EXTRA_DIST += \ makefile.msc \ gthread.rc @@ -26,7 +26,7 @@ lib_LTLIBRARIES = libgthread-2.0.la if OS_WIN32_AND_DLL_COMPILATION if MS_LIB_AVAILABLE -noinst_DATA = gthread-2.0.lib +noinst_DATA += gthread-2.0.lib install_ms_lib_cmd = $(INSTALL) gthread-2.0.lib $(DESTDIR)$(libdir) uninstall_ms_lib_cmd = -rm $(DESTDIR)$(libdir)/gthread-2.0.lib diff --git a/m4macros/Makefile.am b/m4macros/Makefile.am index 75a9ca05a..971871ce7 100644 --- a/m4macros/Makefile.am +++ b/m4macros/Makefile.am @@ -1,4 +1,4 @@ -include $(top_srcdir)/Makefile.decl +include $(top_srcdir)/glib.mk installed_m4= glib-2.0.m4 glib-gettext.m4 gsettings.m4 diff --git a/m4macros/glibtests.m4 b/m4macros/glibtests.m4 new file mode 100644 index 000000000..27e902466 --- /dev/null +++ b/m4macros/glibtests.m4 @@ -0,0 +1,28 @@ +dnl GLIB_TESTS +dnl + +AC_DEFUN([GLIB_TESTS], +[ + AC_ARG_ENABLE(installed-tests, + AS_HELP_STRING([--enable-installed-tests], + [Enable installation of some test cases]), + [case ${enableval} in + yes) ENABLE_INSTALLED_TESTS="1" ;; + no) ENABLE_INSTALLED_TESTS="" ;; + *) AC_MSG_ERROR([bad value ${enableval} for --enable-installed-tests]) ;; + esac]) + AM_CONDITIONAL([ENABLE_INSTALLED_TESTS], test "$ENABLE_INSTALLED_TESTS" = "1") + AC_ARG_ENABLE(always-build-tests, + AS_HELP_STRING([--enable-always-build-tests], + [Enable always building tests during 'make all']), + [case ${enableval} in + yes) ENABLE_ALWAYS_BUILD_TESTS="1" ;; + no) ENABLE_ALWAYS_BUILD_TESTS="" ;; + *) AC_MSG_ERROR([bad value ${enableval} for --enable-always-build-tests]) ;; + esac]) + AM_CONDITIONAL([ENABLE_ALWAYS_BUILD_TESTS], test "$ENABLE_ALWAYS_BUILD_TESTS" = "1") + if test "$ENABLE_INSTALLED_TESTS" == "1"; then + AC_SUBST(installed_test_metadir, [${datadir}/installed-tests/]AC_PACKAGE_NAME) + AC_SUBST(installed_testdir, [${libexecdir}/installed-tests/]AC_PACKAGE_NAME) + fi +]) diff --git a/tests/Makefile.am b/tests/Makefile.am index 5a342c529..b6b3ebd70 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,27 +1,135 @@ -include $(top_srcdir)/Makefile.decl +include $(top_srcdir)/glib.mk -insttestdir = $(pkglibexecdir)/installed-tests - -SUBDIRS=gobject refcount - -AM_CPPFLAGS = \ - $(gmodule_INCLUDES) \ - -DGLIB_DISABLE_DEPRECATION_WARNINGS \ - -DG_LOG_DOMAIN=\"GLib\" \ - -DSRCDIR=\"$(srcdir)\" \ - $(GLIB_DEBUG_FLAGS) +SUBDIRS = gobject refcount +LDADD = $(top_builddir)/glib/libglib-2.0.la +AM_CPPFLAGS = $(gmodule_INCLUDES) $(GLIB_DEBUG_FLAGS) +DEFS = -DGLIB_DISABLE_DEPRECATION_WARNINGS -DG_LOG_DOMAIN=\"GLib\" AM_CFLAGS = -g -EFENCE= +# Some random programs that appear not to be testcases and not used from any testcases +check_PROGRAMS += \ + testgdateparser \ + unicode-normalize \ + $(NULL) -libglib = $(top_builddir)/glib/libglib-2.0.la -libgthread = $(top_builddir)/gthread/libgthread-2.0.la -libgmodule = $(top_builddir)/gmodule/libgmodule-2.0.la -libgobject = $(top_builddir)/gobject/libgobject-2.0.la +# So far, this is the only gtester-ified testcase here +test_programs = \ + testglib \ + $(NULL) + +# These are not yet gtester-ified, so mark them as for 'installed' only so we +# don't run them under the framework. We will handle them manually below. +installed_test_programs = \ + testgdate \ + datetime \ + atomic-test \ + bit-test \ + child-test \ + completion-test \ + dirname-test \ + file-test \ + env-test \ + gio-test \ + mainloop-test \ + mapping-test \ + onceinit \ + asyncqueue-test \ + qsort-test \ + relation-test \ + slice-concurrent \ + slice-threadinit \ + sources \ + thread-test \ + threadpool-test \ + type-test \ + unicode-caseconv \ + unicode-encoding \ + $(NULL) + +test_extra_programs = \ + slice-test \ + slice-color \ + assert-msg-test \ + unicode-collate \ + $(NULL) + +if OS_UNIX +test_programs += \ + spawn-test \ + iochannel-test \ + $(NULL) + +# These don't appear to work installed and we don't want to run them under gtester either... +dist_uninstalled_test_extra_scripts = \ + run-collate-tests.sh \ + run-assert-msg-test.sh \ + $(NULL) +endif + +dist_test_data = \ + iochannel-test-infile \ + casemap.txt \ + casefold.txt \ + utf8.txt \ + $(NULL) + +# Run the 'installed' tests manually in-tree. +# This will cause them to be built even if installed tests are disabled. +check_PROGRAMS += $(installed_test_programs) $(installed_test_extra_programs) +check_SCRIPTS += $(installed_test_scripts) +TESTS += $(installed_test_programs) $(dist_uninstalled_test_extra_scripts) +TESTS_ENVIRONMENT = \ + G_TEST_SRCDIR=$(abs_srcdir) \ + G_TEST_BUILDDIR=$(abs_builddir) \ + LIBCHARSET_ALIAS_DIR=$(top_builddir)/glib/libcharset \ + MALLOC_CHECK_=2 \ + MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) + +test_programs += module-test +module_test_DEPENDENCIES = libmoduletestplugin_a.la libmoduletestplugin_b.la +module_test_LDADD = $(LDADD) $(top_builddir)/gmodule/libgmodule-2.0.la +module_test_LDFLAGS = $(G_MODULE_LDFLAGS) +slice_test_SOURCES = slice-test.c memchunks.c +slice_color_SOURCES = slice-color.c memchunks.c +slice_threadinit_LDADD = $(LDADD) $(top_builddir)/gthread/libgthread-2.0.la + +test_ltlibraries = libmoduletestplugin_a.la libmoduletestplugin_b.la + +libmoduletestplugin_a_la_SOURCES = libmoduletestplugin_a.c +libmoduletestplugin_a_la_LDFLAGS = $(G_MODULE_LDFLAGS) -avoid-version -module $(no_undefined) +libmoduletestplugin_a_la_LIBADD = $(G_MODULE_LIBS) ../glib/libglib-2.0.la ../gmodule/libgmodule-2.0.la + +libmoduletestplugin_b_la_SOURCES = libmoduletestplugin_b.c +libmoduletestplugin_b_la_LDFLAGS = $(G_MODULE_LDFLAGS) -avoid-version -module $(no_undefined) +libmoduletestplugin_b_la_LIBADD = $(G_MODULE_LIBS) ../glib/libglib-2.0.la ../gmodule/libgmodule-2.0.la + +if !ENABLE_INSTALLED_TESTS +# see http://lists.gnu.org/archive/html/bug-libtool/2013-05/msg00009.html and gio/tests/Makefile.am +libmoduletestplugin_a_la_LDFLAGS += -rpath / +libmoduletestplugin_b_la_LDFLAGS += -rpath / +endif + +dist-hook: $(BUILT_EXTRA_DIST) + files='$(BUILT_EXTRA_DIST)'; \ + for f in $$files; do \ + if test -f $$f; then d=.; else d=$(srcdir); fi; \ + cp $$d/$$f $(distdir) || exit 1; \ + done + mkdir $(distdir)/collate; \ + for f in $(srcdir)/collate/* ; do \ + if test -f $$f; then cp $$f $(distdir)/collate; fi; \ + done + +if HAVE_CXX +installed_test_programs += cxx-test +cxx_test_SOURCES = cxx-test.C +endif + +if ENABLE_TIMELOOP +installed_test_programs += timeloop +endif -libadd_libgmodule = $(libgmodule) -libadd_libglib = $(libglib) if PLATFORM_WIN32 no_undefined = -no-undefined @@ -30,191 +138,27 @@ module_test_exp = module-test.exp module-test.exp: module-test.o $(DLLTOOL) --output-exp module-test.exp module-test.o -spawn_test_win32_gui = spawn-test-win32-gui +installed_test_extra_programs = spawn-test-win32-gui spawn_test_win32_gui_LDFLAGS = -mwindows endif -EXTRA_DIST += \ +EXTRA_DIST += \ $(test_scripts) \ makefile.msc.in \ - casefold.txt \ - casemap.txt \ gen-casefold-txt.pl \ gen-casemap-txt.pl \ iochannel-test-infile \ - utf8.txt \ timeloop-basic.c \ assert-msg-test.gdb -BUILT_EXTRA_DIST = \ +BUILT_EXTRA_DIST += \ makefile.msc -if HAVE_CXX -CXX_TEST = cxx-test -cxx_test_LDADD = $(progs_ldadd) -cxx_test_SOURCES = cxx-test.C -else -CXX_TEST = -endif - -if ENABLE_TIMELOOP -timeloop = timeloop -endif -noinst_PROGRAMS = $(TEST_PROGS) \ - testgdate \ - testgdateparser \ - unicode-normalize \ - unicode-collate \ - $(timeloop) \ - assert-msg-test \ - datetime - -TEST_PROGS += testglib -testglib_SOURCES = testglib.c -testglib_LDADD = $(libglib) - - -testgdate_LDADD = $(libglib) -testgdateparser_LDADD = $(libglib) -unicode_normalize_LDADD = $(libglib) -unicode_collate_LDADD = $(libglib) -assert_msg_test_LDADD = $(libglib) -if ENABLE_TIMELOOP -timeloop_LDADD = $(libglib) -endif -datetime_LDADD = $(libglib) - -test_programs = \ - atomic-test \ - bit-test \ - $(CXX_TEST) \ - child-test \ - completion-test \ - dirname-test \ - file-test \ - env-test \ - gio-test \ - iochannel-test \ - mainloop-test \ - mapping-test \ - module-test \ - onceinit \ - asyncqueue-test \ - qsort-test \ - relation-test \ - slice-test \ - slice-color \ - slice-concurrent \ - slice-threadinit \ - sources \ - spawn-test \ - $(spawn_test_win32_gui) \ - thread-test \ - threadpool-test \ - type-test \ - unicode-caseconv \ - unicode-encoding - -test_scripts = run-collate-tests.sh run-assert-msg-test.sh - -test_script_support_programs = unicode-collate - -check_PROGRAMS = $(test_programs) $(test_script_support_programs) - -TESTS = $(test_programs) $(test_scripts) -TESTS_ENVIRONMENT = srcdir=$(srcdir) \ - LIBCHARSET_ALIAS_DIR=$(top_builddir)/glib/libcharset \ - MALLOC_CHECK_=2 \ - MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) - -test_data = \ - iochannel-test-infile \ - casemap.txt \ - casefold.txt \ - utf8.txt \ - $(NULL) - -if BUILDOPT_INSTALL_TESTS -insttest_PROGRAMS = $(test_programs) - -testmetadir = $(datadir)/installed-tests/$(PACKAGE) -testmeta_DATA = $(test_programs:=.test) - -insttest_DATA = $(test_data) - -%.test: %$(EXEEXT) Makefile - $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ - echo 'Type=session' >> $@.tmp; \ - echo 'Exec=env G_TEST_DATA=$(pkglibexecdir)/installed-tests $(pkglibexecdir)/installed-tests/$<' >> $@.tmp; \ - mv $@.tmp $@) - -endif - -progs_ldadd = $(EFENCE) $(libglib) $(EFENCE) -thread_ldadd = $(libgthread) $(G_THREAD_LIBS) $(progs_ldadd) -module_ldadd = $(libgmodule) $(G_MODULE_LIBS) $(progs_ldadd) - -atomic_test_LDADD = $(progs_ldadd) -bit_test_LDADD = $(progs_ldadd) -child_test_LDADD = $(thread_ldadd) -completion_test_LDADD = $(progs_ldadd) -dirname_test_LDADD = $(progs_ldadd) -file_test_LDADD = $(progs_ldadd) -env_test_LDADD = $(progs_ldadd) -gio_test_LDADD = $(progs_ldadd) -iochannel_test_LDADD = $(progs_ldadd) -mainloop_test_LDADD = $(thread_ldadd) -mapping_test_LDADD = $(progs_ldadd) -module_test_LDADD = $(module_ldadd) $(module_test_exp) -module_test_LDFLAGS = $(G_MODULE_LDFLAGS) -onceinit_LDADD = $(thread_ldadd) -asyncqueue_test_LDADD = $(thread_ldadd) -qsort_test_LDADD = $(progs_ldadd) -relation_test_LDADD = $(progs_ldadd) -slice_test_SOURCES = slice-test.c memchunks.c -slice_test_LDADD = $(thread_ldadd) -slice_color_SOURCES = slice-color.c memchunks.c -slice_color_LDADD = $(thread_ldadd) -slice_concurrent_SOURCES = slice-concurrent.c -slice_concurrent_LDADD = $(thread_ldadd) -slice_threadinit_SOURCES = slice-threadinit.c -slice_threadinit_LDADD = $(thread_ldadd) -sources_LDADD = $(progs_ldadd) -spawn_test_LDADD = $(progs_ldadd) -thread_test_LDADD = $(thread_ldadd) -threadpool_test_LDADD = $(thread_ldadd) -type_test_LDADD = $(progs_ldadd) -unicode_encoding_LDADD = $(progs_ldadd) -unicode_caseconv_LDADD = $(progs_ldadd) - -if BUILDOPT_INSTALL_TESTS -insttest_LTLIBRARIES = libmoduletestplugin_a.la libmoduletestplugin_b.la -else -noinst_LTLIBRARIES = libmoduletestplugin_a.la libmoduletestplugin_b.la -endif - -libmoduletestplugin_a_la_SOURCES = libmoduletestplugin_a.c -libmoduletestplugin_a_la_LDFLAGS = $(G_MODULE_LDFLAGS) -avoid-version -module $(no_undefined) -rpath $(insttestdir) -libmoduletestplugin_a_la_LIBADD = $(G_MODULE_LIBS) $(libadd_libgmodule) $(libadd_libglib) - -libmoduletestplugin_b_la_SOURCES = libmoduletestplugin_b.c -libmoduletestplugin_b_la_LDFLAGS = $(G_MODULE_LDFLAGS) -avoid-version -module $(no_undefined) -rpath $(insttestdir) -libmoduletestplugin_b_la_LIBADD = $(G_MODULE_LIBS) $(libadd_libgmodule) $(libadd_libglib) - -dist-hook: $(BUILT_EXTRA_DIST) - files='$(BUILT_EXTRA_DIST)'; \ - for f in $$files; do \ - if test -f $$f; then d=.; else d=$(srcdir); fi; \ - cp $$d/$$f $(distdir) || exit 1; done - mkdir $(distdir)/collate; \ - for f in $(srcdir)/collate/* ; do \ - if test -f $$f; then cp $$f $(distdir)/collate; fi; done - -DISTCLEANFILES = \ - iochannel-test-outfile \ - file-test-get-contents \ - maptest \ - mapchild \ +DISTCLEANFILES += \ + iochannel-test-outfile \ + file-test-get-contents \ + maptest \ + mapchild \ collate.out diff --git a/tests/gobject/Makefile.am b/tests/gobject/Makefile.am index e58b1589b..5c3f18bbf 100644 --- a/tests/gobject/Makefile.am +++ b/tests/gobject/Makefile.am @@ -1,31 +1,50 @@ -include $(top_srcdir)/Makefile.decl +include $(top_srcdir)/glib.mk -AM_CPPFLAGS = \ - $(gmodule_INCLUDES) \ - -DGLIB_DISABLE_DEPRECATION_WARNINGS \ - $(GLIB_DEBUG_FLAGS) +LDADD = $(top_builddir)/glib/libglib-2.0.la $(top_builddir)/gobject/libgobject-2.0.la +AM_CPPFLAGS = $(gmodule_INCLUDES) $(GLIB_DEBUG_FLAGS) +DEFS = -DGLIB_DISABLE_DEPRECATION_WARNINGS -DG_LOG_DOMAIN=\"GLib\" +AM_CFLAGS = -g -libglib = $(top_builddir)/glib/libglib-2.0.la -libgthread = $(top_builddir)/gthread/libgthread-2.0.la -libgmodule = $(top_builddir)/gmodule/libgmodule-2.0.la -libgobject = $(top_builddir)/gobject/libgobject-2.0.la +# So far, only two gtester-ified cases +test_programs = \ + gvalue-test \ + paramspec-test \ + $(NULL) +# These are not yet gtester-ified, so mark them as for 'installed' only so we +# don't run them under the framework. We will handle them manually below. +installed_test_programs = \ + deftype \ + accumulator \ + defaultiface \ + dynamictype \ + override \ + singleton \ + references \ + $(NULL) -# libtool dependency tracking seems broken. this is currently -# required to get the tests to dynamic link against the in-tree -# libglib instead of the system one -libgobject += $(libglib) +# Don't install these ones, and keep them out of 'make check' because they take too long... +noinst_PROGRAMS += \ + performance \ + performance-threaded \ + $(NULL) -######################################################################## +# Run the 'installed' tests manually in-tree. +# This will cause them to be built even if installed tests are disabled. +check_PROGRAMS += $(installed_test_programs) $(installed_test_extra_programs) +TESTS = $(installed_test_programs) +TESTS_ENVIRONMENT = \ + LIBCHARSET_ALIAS_DIR=$(top_builddir)/glib/libcharset \ + MALLOC_CHECK_=2 \ + MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) -noinst_LTLIBRARIES = libtestgobject.la +accumulator_SOURCES = accumulator.c testmarshal.c testmarshal.h +defaultiface_SOURCES = defaultiface.c testmodule.c testmodule.h +dynamictype_SOURCES = dynamictype.c testmodule.c testmodule.h -libtestgobject_la_SOURCES = \ - testcommon.h \ - testmarshal.h \ - testmarshal.c \ - testmodule.c \ - testmodule.h +if ENABLE_TIMELOOP +installed_test_programs += timeloop-closure +endif if CROSS_COMPILING glib_genmarshal=$(GLIB_GENMARSHAL) @@ -45,63 +64,14 @@ testmarshal.c: @REBUILD@ testmarshal.h testmarshal.list $(glib_genmarshal) && cp xgen-gmc testmarshal.c \ && rm -f xgen-gmc xgen-gmc~ -BUILT_SOURCES = testmarshal.h testmarshal.c -CLEANFILES = stamp-testmarshal.h +BUILT_SOURCES += testmarshal.h testmarshal.c +CLEANFILES += stamp-testmarshal.h -######################################################################## - -LDADD = libtestgobject.la $(libgobject) - -test_programs = \ - deftype \ - gvalue-test \ - paramspec-test \ - accumulator \ - defaultiface \ - dynamictype \ - override \ - singleton \ - references - -performance_programs = \ - performance \ - performance-threaded - -performance_LDADD = $(libgobject) $(libgthread) -performance_threaded_LDADD = $(libgobject) $(libgthread) -check_PROGRAMS = $(test_programs) -noinst_PROGRAMS = $(performance_programs) testgobject - -if ENABLE_TIMELOOP -noinst_PROGRAMS += timeloop-closure -endif - -TESTS = $(test_programs) $(performance_programs) -TESTS_ENVIRONMENT = srcdir=$(srcdir) \ - LIBCHARSET_ALIAS_DIR=$(top_builddir)/glib/libcharset \ - MALLOC_CHECK_=2 \ - MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) - -if BUILDOPT_INSTALL_TESTS -insttestdir = $(pkglibexecdir)/installed-tests -insttest_PROGRAMS = $(test_programs) - -testmetadir = $(datadir)/installed-tests/$(PACKAGE) -testmeta_DATA = $(test_programs:=.test) - -%.test: %$(EXEEXT) Makefile - $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ - echo 'Type=session' >> $@.tmp; \ - echo 'Exec=env G_TEST_DATA=$(pkglibexecdir)/installed-tests $(pkglibexecdir)/installed-tests/$<' >> $@.tmp; \ - mv $@.tmp $@) -endif - -######################################################################## - -EXTRA_DIST += \ +EXTRA_DIST += \ + testcommon.h \ testmarshal.list -BUILT_EXTRA_DIST = \ +BUILT_EXTRA_DIST += \ testmarshal.h \ testmarshal.c @@ -115,5 +85,3 @@ distclean-local: if test $(srcdir) = .; then :; else \ rm -f $(BUILT_EXTRA_DIST); \ fi - - diff --git a/tests/refcount/Makefile.am b/tests/refcount/Makefile.am index 34daca656..57af84f83 100644 --- a/tests/refcount/Makefile.am +++ b/tests/refcount/Makefile.am @@ -1,17 +1,12 @@ -include $(top_srcdir)/Makefile.decl +include $(top_srcdir)/glib.mk -AM_CPPFLAGS = \ - $(gmodule_INCLUDES) \ - -DGLIB_DISABLE_DEPRECATION_WARNINGS \ - $(GLIB_DEBUG_FLAGS) +LDADD = $(top_builddir)/glib/libglib-2.0.la $(top_builddir)/gobject/libgobject-2.0.la +AM_CPPFLAGS = $(gmodule_INCLUDES) $(GLIB_DEBUG_FLAGS) +DEFS = -DGLIB_DISABLE_DEPRECATION_WARNINGS +AM_CFLAGS = -g -libglib = $(top_builddir)/glib/libglib-2.0.la -libgmodule = $(top_builddir)/gmodule/libgmodule-2.0.la -libgobject = $(top_builddir)/gobject/libgobject-2.0.la - -LDADD = $(libglib) $(libgobject) - -test_programs = \ +# These are not gtester tests, so handle them manually +TESTS = \ closures \ objects \ objects2 \ @@ -22,9 +17,11 @@ test_programs = \ signal1 \ signal2 \ signal3 \ - signal4 - + signal4 \ + $(NULL) +TESTS_ENVIRONMENT = srcdir=$(srcdir) \ + LIBCHARSET_ALIAS_DIR=$(top_builddir)/glib/libcharset signal1_SOURCES = signals.c signal1_CFLAGS = -DTESTNUM=1 $(AM_CFLAGS) @@ -35,10 +32,4 @@ signal3_CFLAGS = -DTESTNUM=3 $(AM_CFLAGS) signal4_SOURCES = signals.c signal4_CFLAGS = -DTESTNUM=4 $(AM_CFLAGS) -check_PROGRAMS = $(test_programs) - -all: $(check_PROGRAMS) - -TESTS = $(test_programs) -TESTS_ENVIRONMENT = srcdir=$(srcdir) \ - LIBCHARSET_ALIAS_DIR=$(top_builddir)/glib/libcharset +check_PROGRAMS += $(TESTS)