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

Side by Side Diff: gm/gm_expectations.h

Issue 12691009: gm: write all messages to stdout/stderr with "GM:" preamble to distinguish from various debug messa… (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: tiny fix 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
« no previous file with comments | « gm/gm.h ('k') | gm/gmmain.cpp » ('j') | gm/gmmain.cpp » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2013 Google Inc. 2 * Copyright 2013 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 #ifndef gm_expectations_DEFINED 7 #ifndef gm_expectations_DEFINED
8 #define gm_expectations_DEFINED 8 #define gm_expectations_DEFINED
9 9
10 #include <stdarg.h>
10 #include "gm.h" 11 #include "gm.h"
11 #include "SkBitmap.h" 12 #include "SkBitmap.h"
12 #include "SkBitmapChecksummer.h" 13 #include "SkBitmapChecksummer.h"
13 #include "SkData.h" 14 #include "SkData.h"
14 #include "SkImageDecoder.h" 15 #include "SkImageDecoder.h"
15 #include "SkOSFile.h" 16 #include "SkOSFile.h"
16 #include "SkRefCnt.h" 17 #include "SkRefCnt.h"
17 #include "SkStream.h" 18 #include "SkStream.h"
18 #include "SkTArray.h" 19 #include "SkTArray.h"
19 20
(...skipping 26 matching lines...) Expand all
46 47
47 // The actual type we use to represent a checksum is hidden in here. 48 // The actual type we use to represent a checksum is hidden in here.
48 typedef Json::UInt64 Checksum; 49 typedef Json::UInt64 Checksum;
49 static inline Json::Value asJsonValue(Checksum checksum) { 50 static inline Json::Value asJsonValue(Checksum checksum) {
50 return checksum; 51 return checksum;
51 } 52 }
52 static inline Checksum asChecksum(Json::Value jsonValue) { 53 static inline Checksum asChecksum(Json::Value jsonValue) {
53 return jsonValue.asUInt64(); 54 return jsonValue.asUInt64();
54 } 55 }
55 56
57 static void gm_fprintf(FILE *stream, const char format[], ...) {
epoger 2013/03/13 01:21:40 I originally tried to declare this in gm.h, but th
58 va_list args;
59 va_start(args, format);
60 fprintf(stream, "GM: ");
61 vfprintf(stream, format, args);
62 va_end(args);
63 }
64
56 static SkString make_filename(const char path[], 65 static SkString make_filename(const char path[],
57 const char renderModeDescriptor[], 66 const char renderModeDescriptor[],
58 const char *name, 67 const char *name,
59 const char suffix[]) { 68 const char suffix[]) {
60 SkString filename(path); 69 SkString filename(path);
61 if (filename.endsWith(SkPATH_SEPARATOR)) { 70 if (filename.endsWith(SkPATH_SEPARATOR)) {
62 filename.remove(filename.size() - 1, 1); 71 filename.remove(filename.size() - 1, 1);
63 } 72 }
64 filename.appendf("%c%s%s.%s", SkPATH_SEPARATOR, 73 filename.appendf("%c%s%s.%s", SkPATH_SEPARATOR,
65 name, renderModeDescriptor, suffix); 74 name, renderModeDescriptor, suffix);
(...skipping 30 matching lines...) Expand all
96 * don't have any expectations. 105 * don't have any expectations.
97 */ 106 */
98 Expectations(Json::Value jsonElement) { 107 Expectations(Json::Value jsonElement) {
99 if (jsonElement.empty()) { 108 if (jsonElement.empty()) {
100 fIgnoreFailure = kDefaultIgnoreFailure; 109 fIgnoreFailure = kDefaultIgnoreFailure;
101 } else { 110 } else {
102 Json::Value ignoreFailure = jsonElement[kJsonKey_ExpectedResults _IgnoreFailure]; 111 Json::Value ignoreFailure = jsonElement[kJsonKey_ExpectedResults _IgnoreFailure];
103 if (ignoreFailure.isNull()) { 112 if (ignoreFailure.isNull()) {
104 fIgnoreFailure = kDefaultIgnoreFailure; 113 fIgnoreFailure = kDefaultIgnoreFailure;
105 } else if (!ignoreFailure.isBool()) { 114 } else if (!ignoreFailure.isBool()) {
106 fprintf(stderr, "found non-boolean json value for key '%s' i n element '%s'\n", 115 gm_fprintf(stderr, "found non-boolean json value"
107 kJsonKey_ExpectedResults_IgnoreFailure, 116 " for key '%s' in element '%s'\n",
108 jsonElement.toStyledString().c_str()); 117 kJsonKey_ExpectedResults_IgnoreFailure,
118 jsonElement.toStyledString().c_str());
109 DEBUGFAIL_SEE_STDERR; 119 DEBUGFAIL_SEE_STDERR;
110 fIgnoreFailure = kDefaultIgnoreFailure; 120 fIgnoreFailure = kDefaultIgnoreFailure;
111 } else { 121 } else {
112 fIgnoreFailure = ignoreFailure.asBool(); 122 fIgnoreFailure = ignoreFailure.asBool();
113 } 123 }
114 124
115 Json::Value allowedChecksums = jsonElement[kJsonKey_ExpectedResu lts_Checksums]; 125 Json::Value allowedChecksums = jsonElement[kJsonKey_ExpectedResu lts_Checksums];
116 if (allowedChecksums.isNull()) { 126 if (allowedChecksums.isNull()) {
117 // ok, we'll just assume there aren't any expected checksums to compare against 127 // ok, we'll just assume there aren't any expected checksums to compare against
118 } else if (!allowedChecksums.isArray()) { 128 } else if (!allowedChecksums.isArray()) {
119 fprintf(stderr, "found non-array json value for key '%s' in element '%s'\n", 129 gm_fprintf(stderr, "found non-array json value"
120 kJsonKey_ExpectedResults_Checksums, 130 " for key '%s' in element '%s'\n",
121 jsonElement.toStyledString().c_str()); 131 kJsonKey_ExpectedResults_Checksums,
132 jsonElement.toStyledString().c_str());
122 DEBUGFAIL_SEE_STDERR; 133 DEBUGFAIL_SEE_STDERR;
123 } else { 134 } else {
124 for (Json::ArrayIndex i=0; i<allowedChecksums.size(); i++) { 135 for (Json::ArrayIndex i=0; i<allowedChecksums.size(); i++) {
125 Json::Value checksumElement = allowedChecksums[i]; 136 Json::Value checksumElement = allowedChecksums[i];
126 if (!checksumElement.isIntegral()) { 137 if (!checksumElement.isIntegral()) {
127 fprintf(stderr, "found non-integer checksum in json element '%s'\n", 138 gm_fprintf(stderr, "found non-integer checksum"
128 jsonElement.toStyledString().c_str()); 139 " in json element '%s'\n",
140 jsonElement.toStyledString().c_str());
129 DEBUGFAIL_SEE_STDERR; 141 DEBUGFAIL_SEE_STDERR;
130 } else { 142 } else {
131 fAllowedChecksums.push_back() = asChecksum(checksumE lement); 143 fAllowedChecksums.push_back() = asChecksum(checksumE lement);
132 } 144 }
133 } 145 }
134 } 146 }
135 } 147 }
136 } 148 }
137 149
138 /** 150 /**
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 SkBitmap referenceBitmap; 238 SkBitmap referenceBitmap;
227 bool decodedReferenceBitmap = 239 bool decodedReferenceBitmap =
228 SkImageDecoder::DecodeFile(path.c_str(), &referenceBitmap, 240 SkImageDecoder::DecodeFile(path.c_str(), &referenceBitmap,
229 SkBitmap::kARGB_8888_Config, 241 SkBitmap::kARGB_8888_Config,
230 SkImageDecoder::kDecodePixels_Mode, 242 SkImageDecoder::kDecodePixels_Mode,
231 NULL); 243 NULL);
232 if (decodedReferenceBitmap) { 244 if (decodedReferenceBitmap) {
233 return Expectations(referenceBitmap); 245 return Expectations(referenceBitmap);
234 } else { 246 } else {
235 if (fNotifyOfMissingFiles) { 247 if (fNotifyOfMissingFiles) {
236 fprintf(stderr, "FAILED to read %s\n", path.c_str()); 248 gm_fprintf(stderr, "FAILED to read %s\n", path.c_str());
237 } 249 }
238 return Expectations(); 250 return Expectations();
239 } 251 }
240 } 252 }
241 253
242 private: 254 private:
243 const SkString fRootDir; 255 const SkString fRootDir;
244 const bool fNotifyOfMissingFiles; 256 const bool fNotifyOfMissingFiles;
245 }; 257 };
246 258
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 } 336 }
325 337
326 /** 338 /**
327 * Read the file contents from jsonPath and parse them into jsonRoot. 339 * Read the file contents from jsonPath and parse them into jsonRoot.
328 * 340 *
329 * Returns true if successful. 341 * Returns true if successful.
330 */ 342 */
331 static bool parse(const char *jsonPath, Json::Value *jsonRoot) { 343 static bool parse(const char *jsonPath, Json::Value *jsonRoot) {
332 SkFILEStream inFile(jsonPath); 344 SkFILEStream inFile(jsonPath);
333 if (!inFile.isValid()) { 345 if (!inFile.isValid()) {
334 fprintf(stderr, "unable to read JSON file %s\n", jsonPath); 346 gm_fprintf(stderr, "unable to read JSON file %s\n", jsonPath);
335 DEBUGFAIL_SEE_STDERR; 347 DEBUGFAIL_SEE_STDERR;
336 return false; 348 return false;
337 } 349 }
338 350
339 SkAutoDataUnref dataRef(readFileIntoSkData(inFile)); 351 SkAutoDataUnref dataRef(readFileIntoSkData(inFile));
340 if (NULL == dataRef.get()) { 352 if (NULL == dataRef.get()) {
341 fprintf(stderr, "error reading JSON file %s\n", jsonPath); 353 gm_fprintf(stderr, "error reading JSON file %s\n", jsonPath);
342 DEBUGFAIL_SEE_STDERR; 354 DEBUGFAIL_SEE_STDERR;
343 return false; 355 return false;
344 } 356 }
345 357
346 const char *bytes = reinterpret_cast<const char *>(dataRef.get()->da ta()); 358 const char *bytes = reinterpret_cast<const char *>(dataRef.get()->da ta());
347 size_t size = dataRef.get()->size(); 359 size_t size = dataRef.get()->size();
348 Json::Reader reader; 360 Json::Reader reader;
349 if (!reader.parse(bytes, bytes+size, *jsonRoot)) { 361 if (!reader.parse(bytes, bytes+size, *jsonRoot)) {
350 fprintf(stderr, "error parsing JSON file %s\n", jsonPath); 362 gm_fprintf(stderr, "error parsing JSON file %s\n", jsonPath);
351 DEBUGFAIL_SEE_STDERR; 363 DEBUGFAIL_SEE_STDERR;
352 return false; 364 return false;
353 } 365 }
354 return true; 366 return true;
355 } 367 }
356 368
357 Json::Value fJsonRoot; 369 Json::Value fJsonRoot;
358 Json::Value fJsonExpectedResults; 370 Json::Value fJsonExpectedResults;
359 }; 371 };
360 372
361 } 373 }
362 #endif 374 #endif
OLDNEW
« no previous file with comments | « gm/gm.h ('k') | gm/gmmain.cpp » ('j') | gm/gmmain.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698