From 7fd6273c25569fe4f37ad371532d93e5170e51f7 Mon Sep 17 00:00:00 2001 From: Neil Roberts Date: Mon, 11 Oct 2010 16:16:45 +0100 Subject: [PATCH] tests: Generate the stub scripts using sed Instead of trying to run ./test-conformance with the -l option to generate a list of available tests it now runs sed on the test-conform-main.c file instead. Running the generated executable is a pain for cross-compiling so it would be nice to avoid it unless it's absolutely necessary. Although you could tell people who are cross compiling to just disable the conformance tests, this seems a shame because they could still be useful along with the wrappers for example if the cross compile is built to a shared network folder where the tests can be run on the actual device. The sed script is a little more ugly than it could be because it tries to avoid using the GNU extensions '\+' and '\|'. The script ends up placing restrictions on the format of the C file because the tests must all be listed on one line each. There is now a comment to explain this. Hopefully the trade off is worth it. http://bugzilla.clutter-project.org/show_bug.cgi?id=2363 --- tests/conform/Makefile.am | 6 ++++-- tests/conform/test-conform-main.c | 5 +++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/tests/conform/Makefile.am b/tests/conform/Makefile.am index 303663958..1e723e7e8 100644 --- a/tests/conform/Makefile.am +++ b/tests/conform/Makefile.am @@ -89,9 +89,11 @@ test_conformance_SOURCES = $(common_sources) $(units_sources) wrappers: stamp-test-conformance @true -stamp-test-conformance: Makefile test-conformance$(EXEEXT) +stamp-test-conformance: Makefile $(srcdir)/test-conform-main.c @mkdir -p wrappers - @( $(abs_builddir)/test-conformance$(EXEEXT) -l -m thorough | $(GREP) '^/' ) > unit-tests + @sed -n -e 's/^ \{1,\}TEST_CONFORM_SIMPLE *(.*"\([^",]\{1,\}\)", *\([a-zA-Z0-9_]\{1,\}\).*/\/conform\1\/\2/p' \ + -e 's/^ \{1,\}TEST_CONFORM_SKIP *(.*"\([^",]\{1,\}\)", *\([a-zA-Z0-9_]\{1,\}\).*/\/conform\1\/\2/p' \ + $(srcdir)/test-conform-main.c > unit-tests @chmod +x test-launcher.sh @( echo "/stamp-test-conformance" ; \ echo "/test-conformance" ; \ diff --git a/tests/conform/test-conform-main.c b/tests/conform/test-conform-main.c index a8b3cf880..2ae7a0449 100644 --- a/tests/conform/test-conform-main.c +++ b/tests/conform/test-conform-main.c @@ -92,6 +92,11 @@ main (int argc, char **argv) { clutter_test_init (&argc, &argv); + /* This file is run through a sed script during the make step so the + lines containing the tests need to be formatted on a single line + each. To comment out a test use the SKIP or TODO macros. Using + #if 0 would break the script. */ + TEST_CONFORM_SIMPLE ("/timeline", test_timeline); TEST_CONFORM_SKIP (!g_test_slow (), "/timeline", test_timeline_interpolate); TEST_CONFORM_SKIP (!g_test_slow (), "/timeline", test_timeline_rewind);