6db761d162
The test runs wayland_scanner on a set of XML protocol files which have malformed element names, and confirms that an error is produced and indicates the correct line. Copyright notifications are not included in the test files, as they are not code; of course, the project license still applies. Signed-off-by: Manuel Stoeckl <code@mstoeckl.com>
79 lines
2.5 KiB
Bash
Executable File
79 lines
2.5 KiB
Bash
Executable File
#!/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"
|
|
}
|
|
|
|
verify_error() {
|
|
echo
|
|
echo "Checking that reading $1 gives an error on line $3"
|
|
|
|
[ -f "$TEST_DATA_DIR/$1" ] || hard_fail "$1 not present"
|
|
|
|
# Confirm failure error code
|
|
"$WAYLAND_SCANNER" server-header < "$TEST_DATA_DIR/$1" >/dev/null 2>"$TEST_OUTPUT_DIR/$2" && \
|
|
fail "$1 return code check"
|
|
|
|
# Verify that an error is produced at the correct line
|
|
grep -q "<stdin>:$3: error:" "$TEST_OUTPUT_DIR/$2" && echo "$1 PASS" || fail "$1 line number check"
|
|
}
|
|
|
|
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"
|
|
|
|
# The existing "code" must produce result identical to "public-code"
|
|
generate_and_compare "code" "small.xml" "small-code.c"
|
|
generate_and_compare "public-code" "small.xml" "small-code.c"
|
|
generate_and_compare "private-code" "small.xml" "small-private-code.c"
|
|
|
|
verify_error "bad-identifier-arg.xml" "bad-identifier-arg.log" 7
|
|
verify_error "bad-identifier-entry.xml" "bad-identifier-entry.log" 8
|
|
verify_error "bad-identifier-enum.xml" "bad-identifier-enum.log" 6
|
|
verify_error "bad-identifier-event.xml" "bad-identifier-event.log" 6
|
|
verify_error "bad-identifier-interface.xml" "bad-identifier-interface.log" 3
|
|
verify_error "bad-identifier-protocol.xml" "bad-identifier-protocol.log" 2
|
|
verify_error "bad-identifier-request.xml" "bad-identifier-request.log" 6
|
|
|
|
exit $RETCODE
|