test: Make the piglit-running script callable with an arbitrary server

v2: Check that SERVER_COMMAND is set.

Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
Eric Anholt 2016-09-25 13:30:18 -07:00 committed by Adam Jackson
parent 7ac130a066
commit 7fe5b9c02c
4 changed files with 86 additions and 69 deletions

1
test/.gitignore vendored
View File

@ -11,6 +11,7 @@ xfree86
xkb xkb
xtest xtest
signal-logging signal-logging
piglit-results
simple-xinit simple-xinit
*.log *.log
*.trs *.trs

View File

@ -163,6 +163,7 @@ endif
EXTRA_DIST = \ EXTRA_DIST = \
$(SCRIPT_TESTS) \ $(SCRIPT_TESTS) \
scripts/xinit-piglit-session.sh \ scripts/xinit-piglit-session.sh \
scripts/run-piglit.sh \
ddxstubs.c \ ddxstubs.c \
$(NULL) $(NULL)

80
test/scripts/run-piglit.sh Executable file
View File

@ -0,0 +1,80 @@
#!/bin/sh
set -e
if test "x$XTEST_DIR" = "x"; then
echo "XTEST_DIR must be set to the directory of the xtest repository."
# Exit as a "skip" so make check works even without piglit.
exit 77
fi
if test "x$PIGLIT_DIR" = "x"; then
echo "PIGLIT_DIR must be set to the directory of the piglit repository."
# Exit as a "skip" so make check works even without piglit.
exit 77
fi
if test "x$PIGLIT_RESULTS_DIR" = "x"; then
echo "PIGLIT_RESULTS_DIR must be set to where to output piglit results."
# Exit as a real failure because it should always be set.
exit 1
fi
if test "x$XSERVER_DIR" = "x"; then
echo "XSERVER_DIR must be set to the directory of the xserver repository."
# Exit as a real failure because it should always be set.
exit 1
fi
if test "x$XSERVER_BUILDDIR" = "x"; then
echo "XSERVER_BUILDDIR must be set to the build directory of the xserver repository."
# Exit as a real failure because it should always be set.
exit 1
fi
if test "x$SERVER_COMMAND" = "x"; then
echo "SERVER_COMMAND must be set to the server to be spawned."
# Exit as a real failure because it should always be set.
exit 1
fi
startx \
$XSERVER_DIR/test/scripts/xinit-piglit-session.sh \
-- \
$SERVER_COMMAND
# Write out piglit-summaries.
SHORT_SUMMARY=$PIGLIT_RESULTS_DIR/summary
LONG_SUMMARY=$PIGLIT_RESULTS_DIR/long-summary
$PIGLIT_DIR/piglit-summary.py -s $PIGLIT_RESULTS_DIR > $SHORT_SUMMARY
$PIGLIT_DIR/piglit-summary.py $PIGLIT_RESULTS_DIR > $LONG_SUMMARY
# Write the short summary to make check's log file.
cat $SHORT_SUMMARY
# Parse the piglit summary to decide on our exit status.
status=0
# "pass: 0" would mean no tests actually ran.
if grep "pass:.*0" $SHORT_SUMMARY > /dev/null; then
status=1
fi
# Fails or crashes should be failures from make check's perspective.
if ! grep "fail:.*0" $SHORT_SUMMARY > /dev/null; then
status=1
fi
if ! grep "crash:.*0" $SHORT_SUMMARY > /dev/null; then
status=1
fi
if test $status != 0; then
$PIGLIT_DIR/piglit-summary-html.py \
--overwrite \
$PIGLIT_RESULTS_DIR/html \
$PIGLIT_RESULTS_DIR
echo "Some piglit tests failed."
echo "The list of failing tests can be found in $LONG_SUMMARY."
echo "An html page of the failing tests can be found at $PIGLIT_RESULTS_DIR/html/problems.html"
fi
exit $status

View File

@ -1,72 +1,7 @@
#!/bin/sh export SERVER_COMMAND="$XSERVER_DIR/hw/vfb/Xvfb \
set -e
if test "x$XTEST_DIR" = "x"; then
echo "XTEST_DIR must be set to the directory of the xtest repository."
# Exit as a "skip" so make check works even without piglit.
exit 77
fi
if test "x$PIGLIT_DIR" = "x"; then
echo "PIGLIT_DIR must be set to the directory of the piglit repository."
# Exit as a "skip" so make check works even without piglit.
exit 77
fi
if test "x$XSERVER_DIR" = "x"; then
echo "XSERVER_DIR must be set to the directory of the xserver repository."
# Exit as a real failure because it should always be set.
exit 1
fi
if test "x$XSERVER_BUILDDIR" = "x"; then
echo "XSERVER_BUILDDIR must be set to the build directory of the xserver repository."
# Exit as a real failure because it should always be set.
exit 1
fi
export PIGLIT_RESULTS_DIR=$PIGLIT_DIR/results/xvfb
startx \
$XSERVER_DIR/test/scripts/xinit-piglit-session.sh \
-- \
$XSERVER_BUILDDIR/hw/vfb/Xvfb \
-noreset \ -noreset \
-screen scrn 1280x1024x24 -screen scrn 1280x1024x24"
export PIGLIT_RESULTS_DIR=$XSERVER_BUILDDIR/test/piglit-results/xvfb
# Write out piglit-summaries. exec $XSERVER_DIR/test/scripts/run-piglit.sh
SHORT_SUMMARY=$PIGLIT_RESULTS_DIR/summary
LONG_SUMMARY=$PIGLIT_RESULTS_DIR/long-summary
$PIGLIT_DIR/piglit-summary.py -s $PIGLIT_RESULTS_DIR > $SHORT_SUMMARY
$PIGLIT_DIR/piglit-summary.py $PIGLIT_RESULTS_DIR > $LONG_SUMMARY
# Write the short summary to make check's log file.
cat $SHORT_SUMMARY
# Parse the piglit summary to decide on our exit status.
status=0
# "pass: 0" would mean no tests actually ran.
if grep "pass:.*0" $SHORT_SUMMARY > /dev/null; then
status=1
fi
# Fails or crashes should be failures from make check's perspective.
if ! grep "fail:.*0" $SHORT_SUMMARY > /dev/null; then
status=1
fi
if ! grep "crash:.*0" $SHORT_SUMMARY > /dev/null; then
status=1
fi
if test $status != 0; then
$PIGLIT_DIR/piglit-summary-html.py \
--overwrite \
$PIGLIT_RESULTS_DIR/html \
$PIGLIT_RESULTS_DIR
echo "Some piglit tests failed."
echo "The list of failing tests can be found in $LONG_SUMMARY."
echo "An html page of the failing tests can be found at $PIGLIT_RESULTS_DIR/html/problems.html"
fi
exit $status