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

Side by Side Diff: tools/image_expectations.cpp

Issue 289063010: make render_pictures properly handle empty expectations file (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: extract some shared test code Created 6 years, 7 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
« no previous file with comments | « tools/image_expectations.h ('k') | tools/tests/render_pictures_test.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2014 Google Inc. 2 * Copyright 2014 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SkBitmap.h" 8 #include "SkBitmap.h"
9 #include "SkBitmapHasher.h" 9 #include "SkBitmapHasher.h"
10 #include "SkData.h" 10 #include "SkData.h"
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 return fImageDigestRef.get(); 88 return fImageDigestRef.get();
89 } 89 }
90 90
91 const SkBitmap *BitmapAndDigest::getBitmapPtr() const { 91 const SkBitmap *BitmapAndDigest::getBitmapPtr() const {
92 return &fBitmap; 92 return &fBitmap;
93 } 93 }
94 94
95 // ImageResultsAndExpectations class... 95 // ImageResultsAndExpectations class...
96 96
97 bool ImageResultsAndExpectations::readExpectationsFile(const char *jsonPath) { 97 bool ImageResultsAndExpectations::readExpectationsFile(const char *jsonPath) {
98 if (Parse(jsonPath, &fExpectedJsonRoot)) { 98 if (NULL == jsonPath) {
99 fExpectedResults = fExpectedJsonRoot[kJsonKey_ExpectedResults]; 99 SkDebugf("JSON expectations filename not specified\n");
100 return true;
101 } else {
102 return false; 100 return false;
103 } 101 }
102 SkFILE* filePtr = sk_fopen(jsonPath, kRead_SkFILE_Flag);
103 if (NULL == filePtr) {
104 SkDebugf("JSON expectations file '%s' does not exist\n", jsonPath);
105 return false;
106 }
107 size_t size = sk_fgetsize(filePtr);
108 if (0 == size) {
109 SkDebugf("JSON expectations file '%s' is empty, so no expectations\n ", jsonPath);
110 sk_fclose(filePtr);
111 fExpectedResults.clear();
112 return true;
113 }
114 bool parsedJson = Parse(filePtr, &fExpectedJsonRoot);
115 sk_fclose(filePtr);
116 if (!parsedJson) {
117 SkDebugf("Failed to parse JSON expectations file '%s'\n", jsonPath);
118 return false;
119 }
120 Json::Value header = fExpectedJsonRoot[kJsonKey_Header];
121 Json::Value headerType = header[kJsonKey_Header_Type];
122 Json::Value headerRevision = header[kJsonKey_Header_Revision];
123 if (strcmp(headerType.asCString(), kJsonValue_Header_Type)) {
124 SkDebugf("JSON expectations file '%s': expected headerType '%s', fou nd '%s'\n",
125 jsonPath, kJsonValue_Header_Type, headerType.asCString());
126 return false;
127 }
128 if (headerRevision.asInt() != kJsonValue_Header_Revision) {
129 SkDebugf("JSON expectations file '%s': expected headerRevision %d, f ound %d\n",
130 jsonPath, kJsonValue_Header_Revision, headerRevision.asInt( ));
131 return false;
132 }
133 fExpectedResults = fExpectedJsonRoot[kJsonKey_ExpectedResults];
134 return true;
104 } 135 }
105 136
106 void ImageResultsAndExpectations::add(const char *sourceName, const char *fi leName, 137 void ImageResultsAndExpectations::add(const char *sourceName, const char *fi leName,
107 const ImageDigest &digest, const int * tileNumber) { 138 const ImageDigest &digest, const int * tileNumber) {
108 // Get expectation, if any. 139 // Get expectation, if any.
109 Json::Value expectedImage; 140 Json::Value expectedImage;
110 if (!fExpectedResults.isNull()) { 141 if (!fExpectedResults.isNull()) {
111 if (NULL == tileNumber) { 142 if (NULL == tileNumber) {
112 expectedImage = fExpectedResults[sourceName][kJsonKey_Source_Who leImage]; 143 expectedImage = fExpectedResults[sourceName][kJsonKey_Source_Who leImage];
113 } else { 144 } else {
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 header[kJsonKey_Header_Type] = kJsonValue_Header_Type; 205 header[kJsonKey_Header_Type] = kJsonValue_Header_Type;
175 header[kJsonKey_Header_Revision] = kJsonValue_Header_Revision; 206 header[kJsonKey_Header_Revision] = kJsonValue_Header_Revision;
176 Json::Value root; 207 Json::Value root;
177 root[kJsonKey_Header] = header; 208 root[kJsonKey_Header] = header;
178 root[kJsonKey_ActualResults] = fActualResults; 209 root[kJsonKey_ActualResults] = fActualResults;
179 std::string jsonStdString = root.toStyledString(); 210 std::string jsonStdString = root.toStyledString();
180 SkFILEWStream stream(filename); 211 SkFILEWStream stream(filename);
181 stream.write(jsonStdString.c_str(), jsonStdString.length()); 212 stream.write(jsonStdString.c_str(), jsonStdString.length());
182 } 213 }
183 214
184 /*static*/ bool ImageResultsAndExpectations::Parse(const char *jsonPath, 215 /*static*/ bool ImageResultsAndExpectations::Parse(SkFILE *filePtr,
185 Json::Value *jsonRoot) { 216 Json::Value *jsonRoot) {
186 SkAutoDataUnref dataRef(SkData::NewFromFileName(jsonPath)); 217 SkAutoDataUnref dataRef(SkData::NewFromFILE(filePtr));
187 if (NULL == dataRef.get()) { 218 if (NULL == dataRef.get()) {
188 SkDebugf("error reading JSON file %s\n", jsonPath);
189 return false; 219 return false;
190 } 220 }
191 221
192 const char *bytes = reinterpret_cast<const char *>(dataRef.get()->data() ); 222 const char *bytes = reinterpret_cast<const char *>(dataRef.get()->data() );
193 size_t size = dataRef.get()->size(); 223 size_t size = dataRef.get()->size();
194 Json::Reader reader; 224 Json::Reader reader;
195 if (!reader.parse(bytes, bytes+size, *jsonRoot)) { 225 if (!reader.parse(bytes, bytes+size, *jsonRoot)) {
196 SkDebugf("error parsing JSON file %s\n", jsonPath);
197 return false; 226 return false;
198 } 227 }
199 228
200 return true; 229 return true;
201 } 230 }
202 231
203 } // namespace sk_tools 232 } // namespace sk_tools
OLDNEW
« no previous file with comments | « tools/image_expectations.h ('k') | tools/tests/render_pictures_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698