summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--Makefile.am29
-rwxr-xr-xtests/scanner-test.sh51
3 files changed, 80 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore
index 33e809c..8da9861 100644
--- a/.gitignore
+++ b/.gitignore
@@ -38,6 +38,7 @@ ctags
/missing
/stamp-h1
/test-driver
+/tests/output/
Makefile
Makefile.in
exec-fd-leak-checker
diff --git a/Makefile.am b/Makefile.am
index 87bab0d..d78a0ca 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -169,7 +169,15 @@ if ENABLE_CPP_TEST
built_test_programs += cpp-compile-test
endif
-TESTS = $(built_test_programs)
+AM_TESTS_ENVIRONMENT = \
+ export WAYLAND_SCANNER='$(top_builddir)/wayland-scanner' \
+ TEST_DATA_DIR='$(top_srcdir)/tests/data' \
+ TEST_OUTPUT_DIR='$(top_builddir)/tests/output' \
+ SED=$(SED) \
+ ;
+
+TESTS = $(built_test_programs) \
+ tests/scanner-test.sh
noinst_PROGRAMS = \
$(built_test_programs) \
@@ -246,4 +254,23 @@ os_wrappers_test_LDADD = libtest-runner.la
exec_fd_leak_checker_SOURCES = tests/exec-fd-leak-checker.c
exec_fd_leak_checker_LDADD = libtest-runner.la
+
+EXTRA_DIST += tests/scanner-test.sh \
+ tests/data/example.xml \
+ tests/data/example-client.h \
+ tests/data/example-server.h \
+ tests/data/example-code.c \
+ tests/data/small.xml \
+ tests/data/small-code.c \
+ tests/data/small-client.h \
+ tests/data/small-server.h \
+ tests/data/small-code-core.c \
+ tests/data/small-client-core.h \
+ tests/data/small-server-core.h
+
+tests/scanner-test.sh: $(top_builddir)/wayland-scanner
+
+clean-local:
+ -rm -rf tests/output
+
endif #ENABLE_LIBRARIES
diff --git a/tests/scanner-test.sh b/tests/scanner-test.sh
new file mode 100755
index 0000000..7854b86
--- /dev/null
+++ b/tests/scanner-test.sh
@@ -0,0 +1,51 @@
+#!/bin/sh
+
+echo "srcdir: $srcdir"
+echo "scanner: $WAYLAND_SCANNER"
+echo "test_data_dir: $TEST_DATA_DIR"
+echo "test_output_dir: $TEST_OUTPUT_DIR"
+echo "pwd: $PWD"
+echo "sed: $SED"
+
+RETCODE=0
+
+hard_fail() {
+ echo "$@" "ERROR"
+ exit 99
+}
+
+fail() {
+ echo "$@" "FAIL"
+ RETCODE=1
+}
+
+mkdir -p "$TEST_OUTPUT_DIR" || hard_fail "setup"
+
+generate_and_compare() {
+ echo
+ echo "Testing $1 generation: $2 -> $3"
+
+ "$WAYLAND_SCANNER" $1 < "$TEST_DATA_DIR/$2" > "$TEST_OUTPUT_DIR/$3" || \
+ hard_fail "$2 -> $3"
+
+ "$SED" -i -e 's/Generated by wayland-scanner [0-9.]*/SCANNER TEST/' \
+ "$TEST_OUTPUT_DIR/$3" || hard_fail "$2 -> $3"
+
+ diff -q "$TEST_DATA_DIR/$3" "$TEST_OUTPUT_DIR/$3" && \
+ echo "$2 -> $3 PASS" || \
+ fail "$2 -> $3"
+}
+
+generate_and_compare "code" "example.xml" "example-code.c"
+generate_and_compare "client-header" "example.xml" "example-client.h"
+generate_and_compare "server-header" "example.xml" "example-server.h"
+
+generate_and_compare "code" "small.xml" "small-code.c"
+generate_and_compare "client-header" "small.xml" "small-client.h"
+generate_and_compare "server-header" "small.xml" "small-server.h"
+
+generate_and_compare "-c code" "small.xml" "small-code-core.c"
+generate_and_compare "-c client-header" "small.xml" "small-client-core.h"
+generate_and_compare "-c server-header" "small.xml" "small-server-core.h"
+
+exit $RETCODE