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