Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(256)

Side by Side Diff: gm/tests/run.sh

Issue 12381038: gm self-test: use a pathologically simple test case instead of dashing2 (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: tiny_comment_change Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 #!/bin/bash 1 #!/bin/bash
2 2
3 # Self-tests for gm, based on tools/tests/run.sh 3 # Self-tests for gm, based on tools/tests/run.sh
4 # 4 #
5 # These tests are run by the Skia_PerCommit_House_Keeping bot at every commit, 5 # These tests are run by the Skia_PerCommit_House_Keeping bot at every commit,
6 # so make sure that they still pass when you make changes to gm! 6 # so make sure that they still pass when you make changes to gm!
7 # 7 #
8 # TODO: currently, this only passes on Linux (which is the platform that 8 # TODO: because this is written as a shell script (instead of, say, Python)
9 # the housekeeper bot runs on, e.g. 9 # it only runs on Linux and Mac.
10 # http://70.32.156.51:10117/builders/Skia_PerCommit_House_Keeping/builds/1417/st eps/RunGmSelfTests/logs/stdio )
11 # See https://code.google.com/p/skia/issues/detail?id=677 10 # See https://code.google.com/p/skia/issues/detail?id=677
12 # ('make tools/tests/run.sh work cross-platform') 11 # ('make tools/tests/run.sh work cross-platform')
13 # Ideally, these tests should pass on all development platforms... 12 # Ideally, these tests should pass on all development platforms...
14 # otherwise, how can developers be expected to test them before committing a 13 # otherwise, how can developers be expected to test them before committing a
15 # change? 14 # change?
16 15
17 # cd into .../trunk so all the paths will work 16 # cd into .../trunk so all the paths will work
18 cd $(dirname $0)/../.. 17 cd $(dirname $0)/../..
19 18
20 # TODO(epoger): make it look in Release and/or Debug 19 # TODO(epoger): make it look in Release and/or Debug
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 # Only compare selected lines in the stdout, to ignore any spurious lines 66 # Only compare selected lines in the stdout, to ignore any spurious lines
68 # as noted in http://code.google.com/p/skia/issues/detail?id=1068 . 67 # as noted in http://code.google.com/p/skia/issues/detail?id=1068 .
69 # 68 #
70 # TODO(epoger): This is still hacky... we need to rewrite this script in 69 # TODO(epoger): This is still hacky... we need to rewrite this script in
71 # Python soon, and make stuff like this more maintainable. 70 # Python soon, and make stuff like this more maintainable.
72 grep --regexp=^reading --regexp=^writing --regexp=^drawing \ 71 grep --regexp=^reading --regexp=^writing --regexp=^drawing \
73 --regexp=^FAILED --regexp=^Ran $ACTUAL_OUTPUT_DIR/stdout \ 72 --regexp=^FAILED --regexp=^Ran $ACTUAL_OUTPUT_DIR/stdout \
74 >$ACTUAL_OUTPUT_DIR/stdout-tmp 73 >$ACTUAL_OUTPUT_DIR/stdout-tmp
75 mv $ACTUAL_OUTPUT_DIR/stdout-tmp $ACTUAL_OUTPUT_DIR/stdout 74 mv $ACTUAL_OUTPUT_DIR/stdout-tmp $ACTUAL_OUTPUT_DIR/stdout
76 75
77 # Replace particular checksums in json summary with a placeholder, so
78 # we don't need to rebaseline these json files when our drawing routines
79 # change.
80 sed -e 's/"checksum" : [0-9]*/"checksum" : FAKE/g' \
81 --in-place $JSON_SUMMARY_FILE
82 sed -e 's/"checksums" : \[ [0-9]* \]/"checksums" : [ FAKE ]/g' \
83 --in-place $JSON_SUMMARY_FILE
84
85 compare_directories $EXPECTED_OUTPUT_DIR $ACTUAL_OUTPUT_DIR 76 compare_directories $EXPECTED_OUTPUT_DIR $ACTUAL_OUTPUT_DIR
86 } 77 }
87 78
88 # Create input dir (at path $1) with expectations (both image and json) 79 # Create input dir (at path $1) with expectations (both image and json)
89 # that gm will match or mismatch as appropriate. 80 # that gm will match or mismatch as appropriate.
90 # 81 #
91 # We used to check these files into SVN, but then we needed to rebasline them 82 # We used to check these files into SVN, but then we needed to rebasline them
92 # when our drawing changed at all... so, as proposed in 83 # when our drawing changed at all... so, as proposed in
93 # http://code.google.com/p/skia/issues/detail?id=1068 , we generate them 84 # http://code.google.com/p/skia/issues/detail?id=1068 , we generate them
94 # new each time. 85 # new each time.
95 function create_inputs_dir { 86 function create_inputs_dir {
96 if [ $# != 1 ]; then 87 if [ $# != 1 ]; then
97 echo "create_inputs_dir requires exactly 1 parameter, got $#" 88 echo "create_inputs_dir requires exactly 1 parameter, got $#"
98 exit 1 89 exit 1
99 fi 90 fi
100 INPUTS_DIR="$1" 91 INPUTS_DIR="$1"
101 IMAGES_DIR=$INPUTS_DIR/images 92 IMAGES_DIR=$INPUTS_DIR/images
102 JSON_DIR=$INPUTS_DIR/json 93 JSON_DIR=$INPUTS_DIR/json
103 mkdir -p $IMAGES_DIR $JSON_DIR 94 mkdir -p $IMAGES_DIR $JSON_DIR
104 95
105 mkdir -p $IMAGES_DIR/identical-bytes 96 mkdir -p $IMAGES_DIR/identical-bytes
106 # Run GM to write out the images actually generated. 97 # Run GM to write out the images actually generated.
107 $GM_BINARY --hierarchy --match dashing2 $CONFIGS \ 98 $GM_BINARY --hierarchy --match selftest1 $CONFIGS \
108 -w $IMAGES_DIR/identical-bytes 99 -w $IMAGES_DIR/identical-bytes
109 # Run GM again to read in those images and write them out as a JSON summary. 100 # Run GM again to read in those images and write them out as a JSON summary.
110 $GM_BINARY --hierarchy --match dashing2 $CONFIGS \ 101 $GM_BINARY --hierarchy --match selftest1 $CONFIGS \
111 -r $IMAGES_DIR/identical-bytes \ 102 -r $IMAGES_DIR/identical-bytes \
112 --writeJsonSummary $JSON_DIR/identical-bytes.json 103 --writeJsonSummary $JSON_DIR/identical-bytes.json
113 104
114 mkdir -p $IMAGES_DIR/identical-pixels 105 mkdir -p $IMAGES_DIR/identical-pixels
115 $GM_BINARY --hierarchy --match dashing2 $CONFIGS \ 106 $GM_BINARY --hierarchy --match selftest1 $CONFIGS \
116 -w $IMAGES_DIR/identical-pixels 107 -w $IMAGES_DIR/identical-pixels
117 echo "more bytes that do not change the image pixels" \ 108 echo "more bytes that do not change the image pixels" \
118 >> $IMAGES_DIR/identical-pixels/8888/dashing2.png 109 >> $IMAGES_DIR/identical-pixels/8888/selftest1.png
119 echo "more bytes that do not change the image pixels" \ 110 echo "more bytes that do not change the image pixels" \
120 >> $IMAGES_DIR/identical-pixels/565/dashing2.png 111 >> $IMAGES_DIR/identical-pixels/565/selftest1.png
121 $GM_BINARY --hierarchy --match dashing2 $CONFIGS \ 112 $GM_BINARY --hierarchy --match selftest1 $CONFIGS \
122 -r $IMAGES_DIR/identical-pixels \ 113 -r $IMAGES_DIR/identical-pixels \
123 --writeJsonSummary $JSON_DIR/identical-pixels.json 114 --writeJsonSummary $JSON_DIR/identical-pixels.json
124 115
125 mkdir -p $IMAGES_DIR/different-pixels 116 mkdir -p $IMAGES_DIR/different-pixels
126 $GM_BINARY --hierarchy --match dashing3 $CONFIGS \ 117 $GM_BINARY --hierarchy --match selftest2 $CONFIGS \
127 -w $IMAGES_DIR/different-pixels 118 -w $IMAGES_DIR/different-pixels
128 mv $IMAGES_DIR/different-pixels/8888/dashing3.png \ 119 mv $IMAGES_DIR/different-pixels/8888/selftest2.png \
129 $IMAGES_DIR/different-pixels/8888/dashing2.png 120 $IMAGES_DIR/different-pixels/8888/selftest1.png
130 mv $IMAGES_DIR/different-pixels/565/dashing3.png \ 121 mv $IMAGES_DIR/different-pixels/565/selftest2.png \
131 $IMAGES_DIR/different-pixels/565/dashing2.png 122 $IMAGES_DIR/different-pixels/565/selftest1.png
132 $GM_BINARY --hierarchy --match dashing2 $CONFIGS \ 123 $GM_BINARY --hierarchy --match selftest1 $CONFIGS \
133 -r $IMAGES_DIR/different-pixels \ 124 -r $IMAGES_DIR/different-pixels \
134 --writeJsonSummary $JSON_DIR/different-pixels.json 125 --writeJsonSummary $JSON_DIR/different-pixels.json
135 126
136 mkdir -p $IMAGES_DIR/empty-dir 127 mkdir -p $IMAGES_DIR/empty-dir
137 } 128 }
138 129
139 GM_TESTDIR=gm/tests 130 GM_TESTDIR=gm/tests
140 GM_INPUTS=$GM_TESTDIR/inputs 131 GM_INPUTS=$GM_TESTDIR/inputs
141 GM_OUTPUTS=$GM_TESTDIR/outputs 132 GM_OUTPUTS=$GM_TESTDIR/outputs
142 GM_TEMPFILES=$GM_TESTDIR/tempfiles 133 GM_TEMPFILES=$GM_TESTDIR/tempfiles
143 134
144 create_inputs_dir $GM_INPUTS 135 create_inputs_dir $GM_INPUTS
145 136
146 # Compare generated image against an input image file with identical bytes. 137 # Compare generated image against an input image file with identical bytes.
147 gm_test "--hierarchy --match dashing2 $CONFIGS -r $GM_INPUTS/images/identical-by tes" "$GM_OUTPUTS/compared-against-identical-bytes-images" 138 gm_test "--hierarchy --match selftest1 $CONFIGS -r $GM_INPUTS/images/identical-b ytes" "$GM_OUTPUTS/compared-against-identical-bytes-images"
148 gm_test "--hierarchy --match dashing2 $CONFIGS -r $GM_INPUTS/json/identical-byte s.json" "$GM_OUTPUTS/compared-against-identical-bytes-json" 139 gm_test "--hierarchy --match selftest1 $CONFIGS -r $GM_INPUTS/json/identical-byt es.json" "$GM_OUTPUTS/compared-against-identical-bytes-json"
149 140
150 # Compare generated image against an input image file with identical pixels but different PNG encoding. 141 # Compare generated image against an input image file with identical pixels but different PNG encoding.
151 gm_test "--hierarchy --match dashing2 $CONFIGS -r $GM_INPUTS/images/identical-pi xels" "$GM_OUTPUTS/compared-against-identical-pixels-images" 142 gm_test "--hierarchy --match selftest1 $CONFIGS -r $GM_INPUTS/images/identical-p ixels" "$GM_OUTPUTS/compared-against-identical-pixels-images"
152 gm_test "--hierarchy --match dashing2 $CONFIGS -r $GM_INPUTS/json/identical-pixe ls.json" "$GM_OUTPUTS/compared-against-identical-pixels-json" 143 gm_test "--hierarchy --match selftest1 $CONFIGS -r $GM_INPUTS/json/identical-pix els.json" "$GM_OUTPUTS/compared-against-identical-pixels-json"
153 144
154 # Compare generated image against an input image file with different pixels. 145 # Compare generated image against an input image file with different pixels.
155 gm_test "--hierarchy --match dashing2 $CONFIGS -r $GM_INPUTS/images/different-pi xels" "$GM_OUTPUTS/compared-against-different-pixels-images" 146 gm_test "--hierarchy --match selftest1 $CONFIGS -r $GM_INPUTS/images/different-p ixels" "$GM_OUTPUTS/compared-against-different-pixels-images"
156 gm_test "--hierarchy --match dashing2 $CONFIGS -r $GM_INPUTS/json/different-pixe ls.json" "$GM_OUTPUTS/compared-against-different-pixels-json" 147 gm_test "--hierarchy --match selftest1 $CONFIGS -r $GM_INPUTS/json/different-pix els.json" "$GM_OUTPUTS/compared-against-different-pixels-json"
157 148
158 # Compare generated image against an empty "expected image" dir. 149 # Compare generated image against an empty "expected image" dir.
159 gm_test "--hierarchy --match dashing2 $CONFIGS -r $GM_INPUTS/images/empty-dir" " $GM_OUTPUTS/compared-against-empty-dir" 150 gm_test "--hierarchy --match selftest1 $CONFIGS -r $GM_INPUTS/images/empty-dir" "$GM_OUTPUTS/compared-against-empty-dir"
160 151
161 # If run without "-r", the JSON's "actual-results" section should contain 152 # If run without "-r", the JSON's "actual-results" section should contain
162 # actual checksums marked as "failure-ignored", but the "expected-results" 153 # actual checksums marked as "failure-ignored", but the "expected-results"
163 # section should be empty. 154 # section should be empty.
164 gm_test "--hierarchy --match dashing2 $CONFIGS" "$GM_OUTPUTS/no-readpath" 155 gm_test "--hierarchy --match selftest1 $CONFIGS" "$GM_OUTPUTS/no-readpath"
165 156
166 # Run a test which generates partially transparent images, write out those 157 # Run a test which generates partially transparent images, write out those
167 # images, and read them back in. 158 # images, and read them back in.
168 # 159 #
169 # This test would have caught 160 # This test would have caught
170 # http://code.google.com/p/skia/issues/detail?id=1079 ('gm generating 161 # http://code.google.com/p/skia/issues/detail?id=1079 ('gm generating
171 # spurious pixel_error messages as of r7258'). 162 # spurious pixel_error messages as of r7258').
172 IMAGEDIR=$GM_TEMPFILES/aaclip-images 163 IMAGEDIR=$GM_TEMPFILES/aaclip-images
173 rm -rf $IMAGEDIR 164 rm -rf $IMAGEDIR
174 mkdir -p $IMAGEDIR 165 mkdir -p $IMAGEDIR
175 gm_test "--match simpleaaclip_path $CONFIGS -w $IMAGEDIR" "$GM_OUTPUTS/aaclip-wr ite" 166 gm_test "--match simpleaaclip_path $CONFIGS -w $IMAGEDIR" "$GM_OUTPUTS/aaclip-wr ite"
176 gm_test "--match simpleaaclip_path $CONFIGS -r $IMAGEDIR" "$GM_OUTPUTS/aaclip-re adback" 167 gm_test "--match simpleaaclip_path $CONFIGS -r $IMAGEDIR" "$GM_OUTPUTS/aaclip-re adback"
177 168
178 echo "All tests passed." 169 echo "All tests passed."
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698