Add a self-test for gm, similar to our self-test for skdiff.

Review URL: https://codereview.appspot.com/6827068

git-svn-id: http://skia.googlecode.com/svn/trunk@6380 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
epoger@google.com 2012-11-12 18:04:51 +00:00
parent 4e4d75b06b
commit a413a53cb2
16 changed files with 89 additions and 1 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -0,0 +1 @@
out/Debug/gm --hierarchy --match dashing --config 4444 -r gm/tests/inputs/dashing-correct-images -w gm/tests/outputs/dashing-compared-against-correct/output-actual/images

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -0,0 +1,5 @@
reading from gm/tests/inputs/dashing-correct-images
writing to gm/tests/outputs/dashing-compared-against-correct/output-actual/images
drawing... dashing2 [640 480]
drawing... dashing [640 300]
Ran 2 tests: 2 passed, 0 failed, 0 missing reference images

View File

@ -0,0 +1 @@
out/Debug/gm --hierarchy --match dashing --config 4444 -r gm/tests/inputs/dashing-incorrect-images -w gm/tests/outputs/dashing-compared-against-incorrect/output-actual/images

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -0,0 +1,7 @@
reading from gm/tests/inputs/dashing-incorrect-images
writing to gm/tests/outputs/dashing-compared-against-incorrect/output-actual/images
drawing... dashing2 [640 480]
drawing... dashing [640 300]
----- max pixel mismatch for 4444/dashing is 51
Ran 2 tests: 1 passed, 1 failed, 0 missing reference images
4444/dashing pixel_error 51

62
gm/tests/run.sh Executable file
View File

@ -0,0 +1,62 @@
#!/bin/bash
# Self-tests for gm, based on tools/tests/run.sh
# cd into .../trunk so all the paths will work
cd $(dirname $0)/../..
# TODO(epoger): make it look in Release and/or Debug
GM_BINARY=out/Debug/gm
# Compare contents of all files within directories $1 and $2,
# EXCEPT for any dotfiles.
# If there are any differences, a description is written to stdout and
# we exit with a nonzero return value.
# Otherwise, we write nothing to stdout and return.
function compare_directories {
if [ $# != 2 ]; then
echo "compare_directories requires exactly 2 parameters, got $#"
exit 1
fi
diff -r --exclude=.* $1 $2
if [ $? != 0 ]; then
echo "failed in: compare_directories $1 $2"
exit 1
fi
}
# Run gm...
# - with the arguments in $1
# - writing resulting images into $2/output-actual/images
# - writing stdout into $2/output-actual/stdout
# - writing return value into $2/output-actual/return_value
# Then compare all of those against $2/output-expected .
function gm_test {
if [ $# != 2 ]; then
echo "gm_test requires exactly 2 parameters, got $#"
exit 1
fi
GM_ARGS="$1"
ACTUAL_OUTPUT_DIR="$2/output-actual"
EXPECTED_OUTPUT_DIR="$2/output-expected"
rm -rf $ACTUAL_OUTPUT_DIR
mkdir -p $ACTUAL_OUTPUT_DIR
COMMAND="$GM_BINARY $GM_ARGS -w $ACTUAL_OUTPUT_DIR/images"
echo "$COMMAND" >$ACTUAL_OUTPUT_DIR/command_line
$COMMAND &>$ACTUAL_OUTPUT_DIR/stdout
echo $? >$ACTUAL_OUTPUT_DIR/return_value
compare_directories $EXPECTED_OUTPUT_DIR $ACTUAL_OUTPUT_DIR
}
GM_TESTDIR=gm/tests
GM_INPUTS=$GM_TESTDIR/inputs
GM_OUTPUTS=$GM_TESTDIR/outputs
gm_test "--hierarchy --match dashing --config 4444 -r $GM_INPUTS/dashing-correct-images" "$GM_OUTPUTS/dashing-compared-against-correct"
# In this case, dashing.png has different pixels, but dashing2.png differs only in PNG encoding (identical pixels)
gm_test "--hierarchy --match dashing --config 4444 -r $GM_INPUTS/dashing-incorrect-images" "$GM_OUTPUTS/dashing-compared-against-incorrect"
echo "All tests passed."

View File

@ -2,7 +2,9 @@
# Tests for our tools.
# TODO: for now, it only tests skdiff
# TODO: for now, assumes that it is being run from .../trunk
# cd into .../trunk so all the paths will work
cd $(dirname $0)/../..
# TODO: make it look in Release and/or Debug
SKDIFF_BINARY=out/Debug/skdiff
@ -13,6 +15,10 @@ SKDIFF_BINARY=out/Debug/skdiff
# we exit with a nonzero return value.
# Otherwise, we write nothing to stdout and return.
function compare_directories {
if [ $# != 2 ]; then
echo "compare_directories requires exactly 2 parameters, got $#"
exit 1
fi
diff --exclude=.* $1 $2
if [ $? != 0 ]; then
echo "failed in: compare_directories $1 $2"
@ -24,6 +30,10 @@ function compare_directories {
# to write its output, if any, to directory $2/output-actual).
# Then compare its results against those in $2/output-expected.
function skdiff_test {
if [ $# != 2 ]; then
echo "skdiff_test requires exactly 2 parameters, got $#"
exit 1
fi
SKDIFF_ARGS="$1"
ACTUAL_OUTPUT_DIR="$2/output-actual"
EXPECTED_OUTPUT_DIR="$2/output-expected"