Add generalized unit test support using util-macros.
A handful of modules have begun adding unit test programs. These macros will help providing a consistent interface which will help package builders and developers to manage the functionality. XORG_ENABLE_UNIT_TESTS will turn on/off unit testing, regardless of how it is implemented. The default (yes/no) can be specified by each module. It can be used by itself if glib or -wrap support is not needed. XORG_WITH_GLIB will probe the system for glib-2.0. A different version can be specified in each module. It will consult XORG_ENABLE_UNIT_TESTS but can be used by itself in contexts other then unit testing. The default (yes/no) can be specified by each module. XORG_LD_WRAP will probe the linker for -wrap support. It will consult XORG_ENABLE_UNIT_TESTS but can be used by itself in contexts other then unit testing. configure options: --enable-unit-tests Enable building unit test cases (default: auto) --with-glib Use GLib library for unit testing (default: auto) Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> Signed-off-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
		
							parent
							
								
									ee583cb334
								
							
						
					
					
						commit
						6a5bf15fa9
					
				
							
								
								
									
										54
									
								
								configure.ac
								
								
								
								
							
							
						
						
									
										54
									
								
								configure.ac
								
								
								
								
							|  | @ -32,9 +32,9 @@ AC_CONFIG_SRCDIR([Makefile.am]) | ||||||
| AM_INIT_AUTOMAKE([foreign dist-bzip2]) | AM_INIT_AUTOMAKE([foreign dist-bzip2]) | ||||||
| AM_MAINTAINER_MODE | AM_MAINTAINER_MODE | ||||||
| 
 | 
 | ||||||
| # Require xorg-macros minimum of 1.10 for XORG_CHECK_SGML_DOCTOOLS | # Require xorg-macros minimum of 1.13 for XORG_ENABLE_UNIT_TESTS | ||||||
| m4_ifndef([XORG_MACROS_VERSION], | m4_ifndef([XORG_MACROS_VERSION], | ||||||
|           [m4_fatal([must install xorg-macros 1.10 or later before running autoconf/autogen])]) |           [m4_fatal([must install xorg-macros 1.13 or later before running autoconf/autogen])]) | ||||||
| XORG_MACROS_VERSION(1.10) | XORG_MACROS_VERSION(1.10) | ||||||
| XORG_DEFAULT_OPTIONS | XORG_DEFAULT_OPTIONS | ||||||
| XORG_WITH_DOXYGEN(1.6.1) | XORG_WITH_DOXYGEN(1.6.1) | ||||||
|  | @ -43,6 +43,9 @@ XORG_ENABLE_DOCS | ||||||
| XORG_ENABLE_DEVEL_DOCS | XORG_ENABLE_DEVEL_DOCS | ||||||
| XORG_WITH_XMLTO(0.0.20) | XORG_WITH_XMLTO(0.0.20) | ||||||
| XORG_WITH_FOP | XORG_WITH_FOP | ||||||
|  | XORG_ENABLE_UNIT_TESTS | ||||||
|  | XORG_WITH_GLIB | ||||||
|  | XORG_LD_WRAP | ||||||
| 
 | 
 | ||||||
| m4_ifndef([XORG_FONT_MACROS_VERSION], [m4_fatal([must install fontutil 1.1 or later before running autoconf/autogen])]) | m4_ifndef([XORG_FONT_MACROS_VERSION], [m4_fatal([must install fontutil 1.1 or later before running autoconf/autogen])]) | ||||||
| XORG_FONT_MACROS_VERSION(1.1) | XORG_FONT_MACROS_VERSION(1.1) | ||||||
|  | @ -458,9 +461,6 @@ AC_ARG_ENABLE(werror,        AS_HELP_STRING([--enable-werror], | ||||||
| AC_ARG_ENABLE(debug,         AS_HELP_STRING([--enable-debug], | AC_ARG_ENABLE(debug,         AS_HELP_STRING([--enable-debug], | ||||||
| 				  [Enable debugging (default: disabled)]), | 				  [Enable debugging (default: disabled)]), | ||||||
| 			        [DEBUGGING=$enableval], [DEBUGGING=no]) | 			        [DEBUGGING=$enableval], [DEBUGGING=no]) | ||||||
| AC_ARG_ENABLE(unit-tests,    AS_HELP_STRING([--enable-unit-tests], |  | ||||||
|                                   [Enable unit-tests (default: auto)]), |  | ||||||
|                                 [UNITTESTS=$enableval], [UNITTESTS=auto]) |  | ||||||
| AC_ARG_ENABLE(use-sigio-by-default, AS_HELP_STRING([--enable-use-sigio-by-default] | AC_ARG_ENABLE(use-sigio-by-default, AS_HELP_STRING([--enable-use-sigio-by-default] | ||||||
|   [Enable SIGIO input handlers by default (default: $USE_SIGIO_BY_DEFAULT)]), |   [Enable SIGIO input handlers by default (default: $USE_SIGIO_BY_DEFAULT)]), | ||||||
|                                 [USE_SIGIO_BY_DEFAULT=$enableval], []) |                                 [USE_SIGIO_BY_DEFAULT=$enableval], []) | ||||||
|  | @ -1270,50 +1270,6 @@ if test "x$DEBUGGING" = xyes; then | ||||||
| fi | fi | ||||||
| AM_CONDITIONAL(DEBUG, [test "x$DEBUGGING" = xyes]) | AM_CONDITIONAL(DEBUG, [test "x$DEBUGGING" = xyes]) | ||||||
| 
 | 
 | ||||||
| # If unittests aren't explicitly disabled, check for required support |  | ||||||
| if test "x$UNITTESTS" != xno ; then |  | ||||||
|        PKG_CHECK_MODULES([GLIB], $LIBGLIB, |  | ||||||
|                          [HAVE_GLIB=yes], [HAVE_GLIB=no]) |  | ||||||
| 
 |  | ||||||
|        # Check if linker supports -wrap, passed via compiler flags |  | ||||||
|        # When cross-compiling, reports no, since unit tests run from |  | ||||||
|        # "make check", so would be running on build machine,  not target |  | ||||||
|        AC_MSG_CHECKING([whether the linker supports -wrap]) |  | ||||||
|        save_LDFLAGS="$LDFLAGS" |  | ||||||
|        LDFLAGS="$LDFLAGS -Wl,-wrap,exit" |  | ||||||
|        AC_RUN_IFELSE([AC_LANG_PROGRAM([[ |  | ||||||
| 	void __wrap_exit (int s) |  | ||||||
| 	{ |  | ||||||
| 	    __real_exit (0); |  | ||||||
| 	}]], |  | ||||||
| 	[[exit (1);]])], |  | ||||||
|                      [linker_can_wrap="yes"], |  | ||||||
|                      [linker_can_wrap="no"], |  | ||||||
|                      [linker_can_wrap="no"]) |  | ||||||
|        AC_MSG_RESULT([$linker_can_wrap]) |  | ||||||
|        LDFLAGS="$save_LDFLAGS" |  | ||||||
| fi |  | ||||||
| 
 |  | ||||||
| if test "x$UNITTESTS" = xauto; then |  | ||||||
|        if test "x$HAVE_GLIB" = xyes && test "x$linker_can_wrap" = xyes; then |  | ||||||
|            UNITTESTS=yes |  | ||||||
|        else |  | ||||||
|            UNITTESTS=no |  | ||||||
|        fi |  | ||||||
| fi |  | ||||||
| if test "x$UNITTESTS" = xyes; then |  | ||||||
|        if test "x$HAVE_GLIB" = xno; then |  | ||||||
|            AC_MSG_ERROR([glib required to build unit tests]) |  | ||||||
|        fi |  | ||||||
|        if test "x$linker_can_wrap" = xno; then |  | ||||||
|            AC_MSG_ERROR([ld -wrap support required to build unit tests]) |  | ||||||
|        fi |  | ||||||
|        AC_DEFINE(UNITTESTS, 1, [Enable unit tests]) |  | ||||||
|        AC_SUBST([GLIB_LIBS]) |  | ||||||
|        AC_SUBST([GLIB_CFLAGS]) |  | ||||||
| fi |  | ||||||
| AM_CONDITIONAL(UNITTESTS, [test "x$UNITTESTS" = xyes]) |  | ||||||
| 
 |  | ||||||
| AC_DEFINE(XTEST, 1, [Support XTest extension]) | AC_DEFINE(XTEST, 1, [Support XTest extension]) | ||||||
| AC_DEFINE(XSYNC, 1, [Support XSync extension]) | AC_DEFINE(XSYNC, 1, [Support XSync extension]) | ||||||
| AC_DEFINE(XCMISC, 1, [Support XCMisc extension]) | AC_DEFINE(XCMISC, 1, [Support XCMisc extension]) | ||||||
|  |  | ||||||
|  | @ -1,4 +1,6 @@ | ||||||
| if UNITTESTS | if ENABLE_UNIT_TESTS | ||||||
|  | if HAVE_GLIB | ||||||
|  | if HAVE_LD_WRAP | ||||||
| SUBDIRS= . xi2 | SUBDIRS= . xi2 | ||||||
| check_PROGRAMS = xkb input xtest list | check_PROGRAMS = xkb input xtest list | ||||||
| check_LTLIBRARIES = libxservertest.la | check_LTLIBRARIES = libxservertest.la | ||||||
|  | @ -35,6 +37,8 @@ libxservertest_la_LIBADD = \ | ||||||
|             $(top_builddir)/os/libos.la \
 |             $(top_builddir)/os/libos.la \
 | ||||||
|             @XORG_LIBS@ |             @XORG_LIBS@ | ||||||
| endif | endif | ||||||
|  | endif | ||||||
|  | endif | ||||||
| 
 | 
 | ||||||
| CLEANFILES=libxservertest.c | CLEANFILES=libxservertest.c | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,4 +1,6 @@ | ||||||
| if UNITTESTS | if ENABLE_UNIT_TESTS | ||||||
|  | if HAVE_GLIB | ||||||
|  | if HAVE_LD_WRAP | ||||||
| check_PROGRAMS =  \
 | check_PROGRAMS =  \
 | ||||||
| 	protocol-xiqueryversion \
 | 	protocol-xiqueryversion \
 | ||||||
| 	protocol-xiquerydevice \
 | 	protocol-xiquerydevice \
 | ||||||
|  | @ -49,3 +51,5 @@ protocol_xigetclientpointer_SOURCES=$(COMMON_SOURCES) protocol-xigetclientpointe | ||||||
| protocol_xiquerypointer_SOURCES=$(COMMON_SOURCES) protocol-xiquerypointer.c | protocol_xiquerypointer_SOURCES=$(COMMON_SOURCES) protocol-xiquerypointer.c | ||||||
| protocol_xiwarppointer_SOURCES=$(COMMON_SOURCES) protocol-xiwarppointer.c | protocol_xiwarppointer_SOURCES=$(COMMON_SOURCES) protocol-xiwarppointer.c | ||||||
| endif | endif | ||||||
|  | endif | ||||||
|  | endif | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue