mutter/tests/conform/Makefile.am
Robert Bragg 6228082e14 conform: Make gtester run a list of wrappers
Instead of asking gtester to run ./test-conformance directly we now tell
it to run a list of wrapper scripts. This results in each test being
spawned in a separate process avoiding leakage of state between tests
which has been a big problem with the conformance tests for quite a
while now.
2010-05-07 17:17:59 +01:00

180 lines
5.6 KiB
Makefile

include $(top_srcdir)/build/autotools/Makefile.am.silent
NULL =
noinst_PROGRAMS = test-conformance
test_conformance_SOURCES = \
test-conform-main.c \
test-conform-common.c \
test-conform-common.h \
\
test-timeline-interpolate.c \
test-timeline-rewind.c \
test-timeline.c \
test-cogl-vertex-buffer-contiguous.c \
test-cogl-vertex-buffer-interleved.c \
test-cogl-vertex-buffer-mutability.c \
test-cogl-fixed.c \
test-cogl-backface-culling.c \
test-cogl-npot-texture.c \
test-cogl-blend-strings.c \
test-cogl-premult.c \
test-cogl-materials.c \
test-cogl-viewport.c \
test-cogl-offscreen.c \
test-cogl-readpixels.c \
test-cogl-multitexture.c \
test-cogl-texture-mipmaps.c \
test-cogl-texture-rectangle.c \
test-cogl-wrap-modes.c \
test-cogl-pixel-buffer.c \
test-cogl-path.c \
test-path.c \
test-pick.c \
test-clutter-rectangle.c \
test-actor-invariants.c \
test-paint-opacity.c \
test-binding-pool.c \
test-clutter-text.c \
test-text-cache.c \
test-anchors.c \
test-model.c \
test-color.c \
test-clutter-units.c \
test-group.c \
test-actor-size.c \
test-texture-fbo.c \
test-cogl-sub-texture.c \
test-script-parser.c \
test-actor-destroy.c \
test-behaviours.c \
test-animator.c \
$(NULL)
# For convenience, this provides a way to easily run individual unit tests:
.PHONY: wrappers clean-wrappers
UNIT_TESTS = `./test-conformance -l -m thorough | $(GREP) '^/'`
wrappers: stamp-test-conformance
@true
stamp-test-conformance: test-conformance$(EXEEXT)
@mkdir -p wrappers
@for i in $(UNIT_TESTS); \
do \
unit=`basename $$i | sed -e s/_/-/g`; \
echo " GEN $$unit"; \
( echo "#!/bin/sh" ; echo "$(top_srcdir)/tests/conform/test-launcher.sh '$$i' \"\$$@\"" ) > $$unit$(EXEEXT) ; \
( echo "#!/bin/sh" ; echo "exec ./test-conformance$(EXEEXT) -p $$i \"\$$@\"" ) > wrappers/$$unit$(EXEEXT) ; \
chmod +x $$unit$(EXEEXT); \
chmod +x wrappers/$$unit$(EXEEXT); \
done \
&& echo timestamp > $(@F)
clean-wrappers:
@for i in $(UNIT_TESTS); \
do \
unit=`basename $$i | sed -e s/_/-/g`; \
echo " RM $$unit"; \
rm -f $$unit$(EXEEXT) ; \
rm -f wrappers/$$unit$(EXEEXT) ; \
done \
&& rm -f stamp-test-conformance
# 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
INCLUDES = \
-I$(top_srcdir)/ \
-I$(top_srcdir)/clutter \
-I$(top_srcdir)/clutter/cogl \
-I$(top_builddir)/clutter \
-I$(top_builddir)/clutter/cogl
test_conformance_CPPFLAGS = \
-DG_DISABLE_SINGLE_INCLUDES \
-DCOGL_ENABLE_EXPERIMENTAL_API \
-DCOGL_DISABLE_DEPRECATED \
-DCLUTTER_DISABLE_DEPRECATED \
-DTESTS_DATADIR=\""$(top_srcdir)/tests/data"\"
test_conformance_CFLAGS = -g $(CLUTTER_CFLAGS) $(MAINTAINER_CFLAGS)
test_conformance_LDADD = $(top_builddir)/clutter/libclutter-@CLUTTER_WINSYS@-@CLUTTER_API_VERSION@.la $(CLUTTER_LIBS)
test_conformance_LDFLAGS = -rdynamic
.PHONY: test
.PHONY: test-report test-report-normal test-report-disable-npots
.PHONY: full-report full-report-normal full-report-disable-npots
.PHONY: full-report-generate
test: wrappers
@$(top_srcdir)/tests/conform/run-tests.sh \
./test-conformance$(EXEEXT) test-conformance-results.xml
test-verbose: wrappers
@$(top_srcdir)/tests/conform/run-tests.sh \
./test-conformance$(EXEEXT) test-conformance-results.xml --verbose
test-report-normal: wrappers
@$(top_srcdir)/tests/conform/run-tests.sh \
./test-conformance$(EXEEXT) test-conformance-results.xml -k \
&& ( gtester-report test-conformance-results.xml \
| sed 's/>GTester Unit Test Report</>GTester Unit Test Report (normal)</' \
> test-conformance-results.html ) \
&& gnome-open ./test-conformance-results.html
test-report-disable-npots: wrappers
@../tools/disable-npots.sh \
$(top_srcdir)/tests/conform/run-tests.sh \
./test-conformance$(EXEEXT) test-conformance-results-dn.xml -k \
&& ( gtester-report test-conformance-results-dn.xml \
| sed 's/>GTester Unit Test Report</>GTester Unit Test Report (no NPOTs)</' \
> test-conformance-results-dn.html ) \
&& gnome-open ./test-conformance-results-dn.html
test-report: test-report-normal
full-report-normal: wrappers
@$(top_srcdir)/tests/conform/run-tests.sh \
./test-conformance$(EXEEXT) test-conformance-results.xml -k -m=slow \
&& ( gtester-report test-conformance-results.xml \
| sed 's/>GTester Unit Test Report</>GTester Unit Test Report (normal)</' \
> test-conformance-results.html )
full-report-disable-npots: wrappers
@../tools/disable-npots.sh \
$(top_srcdir)/tests/conform/run-tests.sh \
./test-conformance$(EXEEXT) test-conformance-results-dn.xml -k -m=slow \
&& ( gtester-report test-conformance-results-dn.xml \
| sed 's/>GTester Unit Test Report</>GTester Unit Test Report (no NPOTs)</' \
> test-conformance-results-dn.html )
XML_REPORTS = test-conformance-results.xml
HTML_REPORTS = test-conformance-results.html
if HAVE_LIBDL
XML_REPORTS += test-conformance-results-dn.xml
HTML_REPORTS += test-conformance-results-dn.html
full-report-generate: full-report-normal full-report-disable-npots
else
full-report-generate: full-report-normal
endif
full-report: full-report-generate
@for x in $(HTML_REPORTS); do \
gnome-open "$$x"; \
done
EXTRA_DIST = ADDING_NEW_TESTS test-launcher.sh run-tests.sh
# we override the clean-generic target to clean up the wrappers so
# we cannot use CLEANFILES
clean-generic: clean-wrappers
$(QUIET_RM)rm -f $(XML_REPORTS) $(HTML_REPORTS)