| OLD | NEW |
| 1 #!/bin/bash | 1 #!/bin/bash |
| 2 | 2 |
| 3 # Tests for our tools. | 3 # Tests for our tools. |
| 4 # | 4 # |
| 5 # TODO: currently, this only passes on Linux (which is the platform that | 5 # TODO: currently, this only passes on Linux (which is the platform that |
| 6 # the housekeeper bot runs on, e.g. | 6 # the housekeeper bot runs on, e.g. |
| 7 # http://70.32.156.51:10117/builders/Skia_PerCommit_House_Keeping/builds/1415/st
eps/RunToolSelfTests/logs/stdio ) | 7 # http://70.32.156.51:10117/builders/Skia_PerCommit_House_Keeping/builds/1415/st
eps/RunToolSelfTests/logs/stdio ) |
| 8 # See https://code.google.com/p/skia/issues/detail?id=677 | 8 # See https://code.google.com/p/skia/issues/detail?id=677 |
| 9 # ('make tools/tests/run.sh work cross-platform') | 9 # ('make tools/tests/run.sh work cross-platform') |
| 10 # Ideally, these tests should pass on all development platforms... | 10 # Ideally, these tests should pass on all development platforms... |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 # Compare contents of all files within directories $1 and $2, | 32 # Compare contents of all files within directories $1 and $2, |
| 33 # EXCEPT for any dotfiles. | 33 # EXCEPT for any dotfiles. |
| 34 # If there are any differences, a description is written to stdout and | 34 # If there are any differences, a description is written to stdout and |
| 35 # we exit with a nonzero return value. | 35 # we exit with a nonzero return value. |
| 36 # Otherwise, we write nothing to stdout and return. | 36 # Otherwise, we write nothing to stdout and return. |
| 37 function compare_directories { | 37 function compare_directories { |
| 38 if [ $# != 2 ]; then | 38 if [ $# != 2 ]; then |
| 39 echo "compare_directories requires exactly 2 parameters, got $#" | 39 echo "compare_directories requires exactly 2 parameters, got $#" |
| 40 exit 1 | 40 exit 1 |
| 41 fi | 41 fi |
| 42 diff --exclude=.* $1 $2 | 42 diff --recursive --exclude=.* $1 $2 |
| 43 if [ $? != 0 ]; then | 43 if [ $? != 0 ]; then |
| 44 echo "failed in: compare_directories $1 $2" | 44 echo "failed in: compare_directories $1 $2" |
| 45 exit 1 | 45 exit 1 |
| 46 fi | 46 fi |
| 47 } | 47 } |
| 48 | 48 |
| 49 # Run skdiff with arguments in $1 (plus implicit final argument causing skdiff | 49 # Run skdiff with arguments in $1 (plus implicit final argument causing skdiff |
| 50 # to write its output, if any, to directory $2/output-actual). | 50 # to write its output, if any, to directory $2/output-actual). |
| 51 # Then compare its results against those in $2/output-expected. | 51 # Then compare its results against those in $2/output-expected. |
| 52 function skdiff_test { | 52 function skdiff_test { |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 122 $COMMAND &>$ACTUAL_OUTPUT_DIR/stdout | 122 $COMMAND &>$ACTUAL_OUTPUT_DIR/stdout |
| 123 echo $? >$ACTUAL_OUTPUT_DIR/return_value | 123 echo $? >$ACTUAL_OUTPUT_DIR/return_value |
| 124 END_TIMESTAMP=$(date +%s) | 124 END_TIMESTAMP=$(date +%s) |
| 125 | 125 |
| 126 SECONDS_RUN=$(expr $END_TIMESTAMP - $START_TIMESTAMP) | 126 SECONDS_RUN=$(expr $END_TIMESTAMP - $START_TIMESTAMP) |
| 127 echo "bench_graph_svg.py for $PLATFORM took $SECONDS_RUN seconds to complete" | 127 echo "bench_graph_svg.py for $PLATFORM took $SECONDS_RUN seconds to complete" |
| 128 | 128 |
| 129 compare_directories $EXPECTED_OUTPUT_DIR $ACTUAL_OUTPUT_DIR | 129 compare_directories $EXPECTED_OUTPUT_DIR $ACTUAL_OUTPUT_DIR |
| 130 } | 130 } |
| 131 | 131 |
| 132 # Test rebaseline.py's soon-to-disappear image file rebaselining capability. |
| 133 # |
| 132 # Run rebaseline.py with arguments in $1, recording its dry-run output. | 134 # Run rebaseline.py with arguments in $1, recording its dry-run output. |
| 133 # Then compare that dry-run output to the content of $2/output-expected. | 135 # Then compare that dry-run output to the content of $2/output-expected. |
| 134 function rebaseline_test { | 136 function rebaseline_images_test { |
| 135 if [ $# != 2 ]; then | 137 if [ $# != 2 ]; then |
| 136 echo "rebaseline_test requires exactly 2 parameters, got $#" | 138 echo "rebaseline_test requires exactly 2 parameters, got $#" |
| 137 exit 1 | 139 exit 1 |
| 138 fi | 140 fi |
| 139 ARGS="$1" | 141 ARGS="$1" |
| 140 ACTUAL_OUTPUT_DIR="$2/output-actual" | 142 ACTUAL_OUTPUT_DIR="$2/output-actual" |
| 141 EXPECTED_OUTPUT_DIR="$2/output-expected" | 143 EXPECTED_OUTPUT_DIR="$2/output-expected" |
| 142 | 144 |
| 143 rm -rf $ACTUAL_OUTPUT_DIR | 145 rm -rf $ACTUAL_OUTPUT_DIR |
| 144 mkdir -p $ACTUAL_OUTPUT_DIR | 146 mkdir -p $ACTUAL_OUTPUT_DIR |
| 145 COMMAND="python tools/rebaseline.py --dry-run $ARGS" | 147 COMMAND="python tools/rebaseline.py --dry-run $ARGS" |
| 146 echo "$COMMAND" >$ACTUAL_OUTPUT_DIR/command_line | 148 echo "$COMMAND" >$ACTUAL_OUTPUT_DIR/command_line |
| 147 $COMMAND &>$ACTUAL_OUTPUT_DIR/stdout | 149 $COMMAND &>$ACTUAL_OUTPUT_DIR/stdout |
| 148 echo $? >$ACTUAL_OUTPUT_DIR/return_value | 150 echo $? >$ACTUAL_OUTPUT_DIR/return_value |
| 149 | 151 |
| 150 compare_directories $EXPECTED_OUTPUT_DIR $ACTUAL_OUTPUT_DIR | 152 compare_directories $EXPECTED_OUTPUT_DIR $ACTUAL_OUTPUT_DIR |
| 151 } | 153 } |
| 152 | 154 |
| 155 # Test rebaseline.py's new JSON-format expectations rebaselining capability. |
| 156 # |
| 157 # Copy expected-result.json files from $1 into a dir where they can be modified. |
| 158 # Run rebaseline.py with arguments in $2, recording its output. |
| 159 # Then compare the output (and modified expected-result.json files) to the |
| 160 # content of $2/output-expected. |
| 161 function rebaseline_test { |
| 162 if [ $# != 3 ]; then |
| 163 echo "rebaseline_test requires exactly 3 parameters, got $#" |
| 164 exit 1 |
| 165 fi |
| 166 COPY_EXPECTATIONS_FROM_DIR="$1" |
| 167 ARGS="$2" |
| 168 ACTUAL_OUTPUT_DIR="$3/output-actual" |
| 169 EXPECTED_OUTPUT_DIR="$3/output-expected" |
| 170 |
| 171 rm -rf $ACTUAL_OUTPUT_DIR |
| 172 mkdir -p $ACTUAL_OUTPUT_DIR |
| 173 EXPECTATIONS_TO_MODIFY_DIR="$ACTUAL_OUTPUT_DIR/gm-expectations" |
| 174 SUBDIRS=$(ls $COPY_EXPECTATIONS_FROM_DIR) |
| 175 for SUBDIR in $SUBDIRS; do |
| 176 mkdir -p $EXPECTATIONS_TO_MODIFY_DIR/$SUBDIR |
| 177 cp $COPY_EXPECTATIONS_FROM_DIR/$SUBDIR/expected-results.json \ |
| 178 $EXPECTATIONS_TO_MODIFY_DIR/$SUBDIR |
| 179 done |
| 180 COMMAND="python tools/rebaseline.py --expectations-root $EXPECTATIONS_TO_MODIF
Y_DIR $ARGS" |
| 181 echo "$COMMAND" >$ACTUAL_OUTPUT_DIR/command_line |
| 182 $COMMAND &>$ACTUAL_OUTPUT_DIR/stdout |
| 183 echo $? >$ACTUAL_OUTPUT_DIR/return_value |
| 184 |
| 185 compare_directories $EXPECTED_OUTPUT_DIR $ACTUAL_OUTPUT_DIR |
| 186 } |
| 187 |
| 153 # Run jsondiff.py with arguments in $1, recording its output. | 188 # Run jsondiff.py with arguments in $1, recording its output. |
| 154 # Then compare that output to the content of $2/output-expected. | 189 # Then compare that output to the content of $2/output-expected. |
| 155 function jsondiff_test { | 190 function jsondiff_test { |
| 156 if [ $# != 2 ]; then | 191 if [ $# != 2 ]; then |
| 157 echo "jsondiff_test requires exactly 2 parameters, got $#" | 192 echo "jsondiff_test requires exactly 2 parameters, got $#" |
| 158 exit 1 | 193 exit 1 |
| 159 fi | 194 fi |
| 160 ARGS="$1" | 195 ARGS="$1" |
| 161 ACTUAL_OUTPUT_DIR="$2/output-actual" | 196 ACTUAL_OUTPUT_DIR="$2/output-actual" |
| 162 EXPECTED_OUTPUT_DIR="$2/output-expected" | 197 EXPECTED_OUTPUT_DIR="$2/output-expected" |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 223 echo "skimage self tests failed." | 258 echo "skimage self tests failed." |
| 224 exit 1 | 259 exit 1 |
| 225 fi | 260 fi |
| 226 | 261 |
| 227 # | 262 # |
| 228 # Test rebaseline.py ... | 263 # Test rebaseline.py ... |
| 229 # | 264 # |
| 230 | 265 |
| 231 REBASELINE_INPUT=tools/tests/rebaseline/input | 266 REBASELINE_INPUT=tools/tests/rebaseline/input |
| 232 REBASELINE_OUTPUT=tools/tests/rebaseline/output | 267 REBASELINE_OUTPUT=tools/tests/rebaseline/output |
| 233 rebaseline_test "--expectations-root fake/expectations/path --json-base-url file
:$REBASELINE_INPUT/json1 --tests test1 test2 --configs 565 8888 --subdirs base-a
ndroid-galaxy-nexus base-shuttle-win7-intel-float" "$REBASELINE_OUTPUT/subset" | 268 |
| 234 rebaseline_test "--json-base-url file:nonexistent-path --tests test1 test2" "$RE
BASELINE_OUTPUT/all" | 269 # These test the old image-file expectations. |
| 235 rebaseline_test "--json-base-url file:$REBASELINE_INPUT/json1 --subdirs base-and
roid-galaxy-nexus base-shuttle-win7-intel-float" "$REBASELINE_OUTPUT/using-json1
" | 270 rebaseline_images_test "--expectations-root fake/expectations/path --json-base-u
rl file:$REBASELINE_INPUT/json1 --tests test1 test2 --configs 565 8888 --subdirs
base-android-galaxy-nexus base-shuttle-win7-intel-float" "$REBASELINE_OUTPUT/su
bset" |
| 236 rebaseline_test "--json-base-url file:$REBASELINE_INPUT/json1 --subdirs base-and
roid-galaxy-nexus base-shuttle-win7-intel-float --add-new" "$REBASELINE_OUTPUT/u
sing-json1-add-new" | 271 rebaseline_images_test "--json-base-url file:nonexistent-path --tests test1 test
2" "$REBASELINE_OUTPUT/all" |
| 237 rebaseline_test "--json-base-url file:$REBASELINE_INPUT/json1 --subdirs base-and
roid-galaxy-nexus base-shuttle-win7-intel-float --expectations-root $REBASELINE_
INPUT/json1" "$REBASELINE_OUTPUT/using-json1-expectations" | 272 rebaseline_images_test "--json-base-url file:$REBASELINE_INPUT/json1 --subdirs b
ase-android-galaxy-nexus base-shuttle-win7-intel-float" "$REBASELINE_OUTPUT/usin
g-json1" |
| 273 rebaseline_images_test "--json-base-url file:$REBASELINE_INPUT/json1 --subdirs b
ase-android-galaxy-nexus base-shuttle-win7-intel-float --add-new" "$REBASELINE_O
UTPUT/using-json1-add-new" |
| 274 |
| 275 # These test the new JSON-format expectations. |
| 276 rebaseline_test "$REBASELINE_INPUT/json1" "--json-base-url file:$REBASELINE_INPU
T/json1 --subdirs base-android-galaxy-nexus base-shuttle-win7-intel-float" "$REB
ASELINE_OUTPUT/using-json1-expectations" |
| 238 | 277 |
| 239 # | 278 # |
| 240 # Test jsondiff.py ... | 279 # Test jsondiff.py ... |
| 241 # | 280 # |
| 242 | 281 |
| 243 JSONDIFF_INPUT=tools/tests/jsondiff/input | 282 JSONDIFF_INPUT=tools/tests/jsondiff/input |
| 244 JSONDIFF_OUTPUT=tools/tests/jsondiff/output | 283 JSONDIFF_OUTPUT=tools/tests/jsondiff/output |
| 245 jsondiff_test "$JSONDIFF_INPUT/old.json $JSONDIFF_INPUT/new.json" "$JSONDIFF_OUT
PUT/old-vs-new" | 284 jsondiff_test "$JSONDIFF_INPUT/old.json $JSONDIFF_INPUT/new.json" "$JSONDIFF_OUT
PUT/old-vs-new" |
| 246 | 285 |
| 247 | 286 |
| 248 echo "All tests passed." | 287 echo "All tests passed." |
| OLD | NEW |