aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-graphics/clutter/clutter/test-conformance-fix.patch
blob: ce412ff5af9616e8cdbb61155291b0fa7b91b423 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
Compiling conformance test leads running test-conformance target binary, and
gets failure in cross-compile environment. Introduce this commit from upstream
to fix it.

Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>


commit 7fd6273c25569fe4f37ad371532d93e5170e51f7
Author: Neil Roberts <neil@linux.intel.com>
Date:   Mon Oct 11 16:16:45 2010 +0100

    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

diff --git a/tests/conform/Makefile.am b/tests/conform/Makefile.am
index 3036639..1e723e7 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 a8b3cf8..2ae7a04 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);