mutter/tests/unit/Makefile.am
Robert Bragg eb7fafe700 tests: Adds our first white-box unit test
This adds a white-box unit test that verifies that GL_BLEND is disabled
when drawing an opaque rectangle, enabled when drawing a transparent
rectangle and then disabled again when drawing a transparent rectangle
but with a blend string that effectively disables blending.

This shares the test utilities and launcher infrastructure we are using
for conformance tests so we get consistent reporting and so unit tests
will be run against a range of different drivers.

This adds a --enable-unit-tests configure option which is enabled by
default but if disabled will make all UNIT_TESTS() into static inline
functions that we should expect the compiler to discard since they won't
be referenced by anything.

Reviewed-by: Neil Roberts <neil@linux.intel.com>

(cherry picked from commit 9047cce06bbf9051ec77e622be2fdbb96ed767a8)
2013-06-06 21:27:16 +01:00

98 lines
2.7 KiB
Makefile

include $(top_srcdir)/build/autotools/Makefile.am.silent
NULL =
noinst_PROGRAMS = test-unit
test_unit_SOURCES = test-unit-main.c
if OS_WIN32
SHEXT =
else
SHEXT = $(EXEEXT)
endif
# For convenience, this provides a way to easily run individual unit tests:
.PHONY: wrappers clean-wrappers
wrappers: stamp-test-unit
@true
stamp-test-unit: Makefile test-unit
@mkdir -p wrappers
source $(top_builddir)/cogl/libcogl.la ; \
$(NM) $(top_builddir)/cogl/.libs/"$$dlname"| \
grep 'D unit_test_'|sed 's/.\+ D //' > unit-tests
@chmod +x $(top_srcdir)/tests/test-launcher.sh
@( echo "/stamp-test-unit" ; \
echo "/test-unit$(EXEEXT)" ; \
echo "*.o" ; \
echo ".gitignore" ; \
echo "unit-tests" ; ) > .gitignore
@for i in `cat unit-tests`; \
do \
unit=`echo $$i | sed -e s/_/-/g | sed s/unit-test-//`; \
echo " GEN $$unit"; \
( echo "#!/bin/sh" ; echo "$(top_srcdir)/tests/test-launcher.sh $(abs_builddir)/test-unit$(EXEEXT) 'unit_test_' '$$i' \"\$$@\"" ) > $$unit$(SHEXT) ; \
chmod +x $$unit$(SHEXT); \
echo "/$$unit$(SHEXT)" >> .gitignore; \
done \
&& echo timestamp > $(@F)
clean-wrappers:
@for i in `cat unit-tests`; \
do \
unit=`echo $$i | sed -e s/_/-/g | sed s/unit-test-//`; \
echo " RM $$unit"; \
rm -f $$unit$(SHEXT) ; \
done \
&& rm -f unit-tests \
&& rm -f stamp-test-unit
# NB: BUILT_SOURCES here a misnomer. We aren't building source, just inserting
# a phony rule that will generate symlink scripts for running individual tests
BUILT_SOURCES = wrappers
# The include of the $(buildir)/cogl directory here is to make it so
# that tests that directly include Cogl source code for whitebox
# testing (such as test-bitmask) will still compile
AM_CPPFLAGS = \
-I$(top_srcdir) \
-I$(top_srcdir)/test-fixtures \
-I$(top_builddir)/cogl
if !USE_GLIB
AM_CPPFLAGS += -I$(top_builddir)/deps/glib
endif
AM_CPPFLAGS += \
-DCOGL_DISABLE_DEPRECATED \
-DTESTS_DATADIR=\""$(top_srcdir)/tests/data"\" \
-DCOGL_COMPILATION
test_unit_CFLAGS = -g3 -O0 $(COGL_DEP_CFLAGS) $(COGL_EXTRA_CFLAGS)
test_unit_LDADD = \
$(COGL_DEP_LIBS) \
$(top_builddir)/cogl/libcogl.la \
$(top_builddir)/test-fixtures/libtest-fixtures.la \
$(LIBM)
if !USE_GLIB
test_unit_LDADD += $(top_builddir)/deps/glib/libglib.la
endif
test_unit_LDFLAGS = -export-dynamic
test: wrappers
@$(top_srcdir)/tests/run-tests.sh $(abs_builddir)/../config.env $(abs_builddir)/test-unit$(EXEEXT)
# XXX: we could prevent the unit test suite from running
# by simply defining this variable conditionally
TEST_PROGS = test-unit
.PHONY: test
DISTCLEANFILES = .gitignore
# we override the clean-generic target to clean up the wrappers so
# we cannot use CLEANFILES
clean-generic: clean-wrappers
$(QUIET_RM)rm -f .log