diff options
author | 2012-11-12 18:04:51 +0000 | |
---|---|---|
committer | 2012-11-12 18:04:51 +0000 | |
commit | a413a53cb2fcdfcd6d8b83adfe29e19e374d4e78 (patch) | |
tree | ef7739afa798ec8314f69caf21c3d967e79860d6 /gm/tests/run.sh | |
parent | 4e4d75b06bdb484e4e7628461fe5d63088386e91 (diff) |
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
Diffstat (limited to 'gm/tests/run.sh')
-rwxr-xr-x | gm/tests/run.sh | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/gm/tests/run.sh b/gm/tests/run.sh new file mode 100755 index 0000000000..276a77522a --- /dev/null +++ b/gm/tests/run.sh @@ -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." |