rebaseline.py self-tests: split test inputs and outputs into completely separate directories

Review URL: https://codereview.chromium.org/16557002

git-svn-id: http://skia.googlecode.com/svn/trunk@9459 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
epoger@google.com 2013-06-06 15:11:11 +00:00
parent c76218d5ed
commit 19e80c16a5
15 changed files with 40 additions and 20 deletions

View File

@ -13,16 +13,22 @@
# See https://code.google.com/p/skia/issues/detail?id=677 # See https://code.google.com/p/skia/issues/detail?id=677
# ('make tools/tests/run.sh work cross-platform') # ('make tools/tests/run.sh work cross-platform')
# Replace expected output with actual output, within subdir $1.
function replace_expected_with_actual { function replace_expected_with_actual {
if [ $# != 1 ]; then
echo "replace_expected_with_actual requires exactly 1 parameter, got $#"
exit 1
fi
# Delete all the expected output files # Delete all the expected output files
EXPECTED_FILES=$(find $WHICHTOOL/*/output-expected -type f | grep -v /\.svn/) EXPECTED_FILES=$(find $1/*/output-expected -type f | grep -v /\.svn/)
for EXPECTED_FILE in $EXPECTED_FILES; do for EXPECTED_FILE in $EXPECTED_FILES; do
rm $EXPECTED_FILE rm $EXPECTED_FILE
done done
# Copy all the actual output files into the "expected" directories, # Copy all the actual output files into the "expected" directories,
# creating new subdirs as we go. # creating new subdirs as we go.
ACTUAL_FILES=$(find $WHICHTOOL/*/output-actual -type f | grep -v /\.svn/) ACTUAL_FILES=$(find $1/*/output-actual -type f | grep -v /\.svn/)
for ACTUAL_FILE in $ACTUAL_FILES; do for ACTUAL_FILE in $ACTUAL_FILES; do
EXPECTED_FILE=${ACTUAL_FILE//actual/expected} EXPECTED_FILE=${ACTUAL_FILE//actual/expected}
mkdir -p $(dirname $EXPECTED_FILE) mkdir -p $(dirname $EXPECTED_FILE)
@ -30,26 +36,39 @@ function replace_expected_with_actual {
done done
} }
# Add all new files to SVN control, within subdir $1.
function svn_add_new_files { function svn_add_new_files {
if [ $# != 1 ]; then
echo "svn_add_new_files requires exactly 1 parameter, got $#"
exit 1
fi
# Delete all the "actual" directories, so we can svn-add any new "expected" # Delete all the "actual" directories, so we can svn-add any new "expected"
# directories without adding the "actual" ones. # directories without adding the "actual" ones.
rm -rf $WHICHTOOL/*/output-actual $WHICHTOOL/*/raw-bench-data rm -rf $1/*/output-actual $1/*/raw-bench-data
FILES=$(svn stat $WHICHTOOL/* | grep ^\? | awk '{print $2}') FILES=$(svn stat $1/* | grep ^\? | awk '{print $2}')
for FILE in $FILES; do for FILE in $FILES; do
svn add $FILE svn add $FILE
done done
FILES=$(svn stat $WHICHTOOL/*/output-expected | grep ^\? | awk '{print $2}') FILES=$(svn stat $1/*/output-expected | grep ^\? | awk '{print $2}')
for FILE in $FILES; do for FILE in $FILES; do
svn add $FILE svn add $FILE
done done
} }
# For any files that have been removed from subdir $1, remove them from
# SVN control.
function svn_delete_old_files { function svn_delete_old_files {
FILES=$(svn stat $WHICHTOOL/*/output-expected | grep ^\! | awk '{print $2}') if [ $# != 1 ]; then
echo "svn_delete_old_files requires exactly 1 parameter, got $#"
exit 1
fi
FILES=$(svn stat $1/*/output-expected | grep ^\! | awk '{print $2}')
for FILE in $FILES; do for FILE in $FILES; do
svn rm $FILE svn rm $FILE
done done
FILES=$(svn stat $WHICHTOOL/* | grep ^\! | awk '{print $2}') FILES=$(svn stat $1/* | grep ^\! | awk '{print $2}')
for FILE in $FILES; do for FILE in $FILES; do
svn rm $FILE svn rm $FILE
done done
@ -61,17 +80,17 @@ cd $(dirname $0)
./run.sh ./run.sh
SELFTEST_RESULT=$? SELFTEST_RESULT=$?
TOOLS="skdiff benchgraphs rebaseline" SUBDIRS="skdiff benchgraphs rebaseline/output"
echo echo
if [ "$SELFTEST_RESULT" != "0" ]; then if [ "$SELFTEST_RESULT" != "0" ]; then
for WHICHTOOL in $TOOLS; do for SUBDIR in $SUBDIRS; do
replace_expected_with_actual replace_expected_with_actual $SUBDIR
done done
echo "Self-tests still failing, you should probably run this again..." echo "Self-tests still failing, you should probably run this again..."
else else
for WHICHTOOL in $TOOLS; do for SUBDIR in $SUBDIRS; do
svn_add_new_files svn_add_new_files $SUBDIR
svn_delete_old_files svn_delete_old_files $SUBDIR
done done
echo "Self-tests succeeded this time, you should be done!" echo "Self-tests succeeded this time, you should be done!"
fi fi

View File

@ -0,0 +1 @@
python tools/rebaseline.py --dry_run --json_base_url file:tools/tests/rebaseline/input/json1 --subdirs base-android-galaxy-nexus base-shuttle-win7-intel-float

View File

@ -1,4 +1,4 @@
# Getting files to rebaseline from JSON summary URL file:tools/tests/rebaseline/using-json/base-android-galaxy-nexus/Test-Android-GalaxyNexus-SGX540-Arm7-Debug/base-android-galaxy-nexus/actual-results.json ... # Getting files to rebaseline from JSON summary URL file:tools/tests/rebaseline/input/json1/base-android-galaxy-nexus/Test-Android-GalaxyNexus-SGX540-Arm7-Debug/base-android-galaxy-nexus/actual-results.json ...
# ... found files_to_rebaseline [u'imageblur_565.png', u'imageblur_8888.png', u'shadertext3_8888.png'] # ... found files_to_rebaseline [u'imageblur_565.png', u'imageblur_8888.png', u'shadertext3_8888.png']
# imageblur_565.png # imageblur_565.png
curl --fail --silent http://skia-autogen.googlecode.com/svn/gm-actual/base-android-galaxy-nexus/Test-Android-GalaxyNexus-SGX540-Arm7-Debug/base-android-galaxy-nexus/imageblur_565.png --output base-android-galaxy-nexus/.temp-imageblur_565.png curl --fail --silent http://skia-autogen.googlecode.com/svn/gm-actual/base-android-galaxy-nexus/Test-Android-GalaxyNexus-SGX540-Arm7-Debug/base-android-galaxy-nexus/imageblur_565.png --output base-android-galaxy-nexus/.temp-imageblur_565.png
@ -15,5 +15,5 @@ curl --fail --silent http://skia-autogen.googlecode.com/svn/gm-actual/base-andro
mv base-android-galaxy-nexus/.temp-shadertext3_8888.png base-android-galaxy-nexus/shadertext3_8888.png mv base-android-galaxy-nexus/.temp-shadertext3_8888.png base-android-galaxy-nexus/shadertext3_8888.png
svn add --quiet base-android-galaxy-nexus/shadertext3_8888.png svn add --quiet base-android-galaxy-nexus/shadertext3_8888.png
svn propset --quiet svn:mime-type image/png base-android-galaxy-nexus/shadertext3_8888.png svn propset --quiet svn:mime-type image/png base-android-galaxy-nexus/shadertext3_8888.png
# Getting files to rebaseline from JSON summary URL file:tools/tests/rebaseline/using-json/base-shuttle-win7-intel-float/Test-Win7-ShuttleA-HD2000-x86-Release/base-shuttle-win7-intel-float/actual-results.json ... # Getting files to rebaseline from JSON summary URL file:tools/tests/rebaseline/input/json1/base-shuttle-win7-intel-float/Test-Win7-ShuttleA-HD2000-x86-Release/base-shuttle-win7-intel-float/actual-results.json ...
# ... found files_to_rebaseline [] # ... found files_to_rebaseline []

View File

@ -1 +0,0 @@
python tools/rebaseline.py --dry_run --json_base_url file:tools/tests/rebaseline/using-json --subdirs base-android-galaxy-nexus base-shuttle-win7-intel-float

View File

@ -194,10 +194,11 @@ benchgraph_test $PLATFORM
# Test rebaseline.py ... # Test rebaseline.py ...
# #
REBASELINE_TESTDIR=tools/tests/rebaseline REBASELINE_INPUT=tools/tests/rebaseline/input
rebaseline_test "--tests test1 test2 --configs 565 8888 --subdirs base-android-galaxy-nexus base-shuttle-win7-intel-float" "$REBASELINE_TESTDIR/subset" REBASELINE_OUTPUT=tools/tests/rebaseline/output
rebaseline_test "--tests test1 test2" "$REBASELINE_TESTDIR/all" rebaseline_test "--tests test1 test2 --configs 565 8888 --subdirs base-android-galaxy-nexus base-shuttle-win7-intel-float" "$REBASELINE_OUTPUT/subset"
rebaseline_test "--json_base_url file:$REBASELINE_TESTDIR/using-json --subdirs base-android-galaxy-nexus base-shuttle-win7-intel-float" "$REBASELINE_TESTDIR/using-json" rebaseline_test "--tests test1 test2" "$REBASELINE_OUTPUT/all"
rebaseline_test "--json_base_url file:$REBASELINE_INPUT/json1 --subdirs base-android-galaxy-nexus base-shuttle-win7-intel-float" "$REBASELINE_OUTPUT/using-json1"
echo "All tests passed." echo "All tests passed."