| Index: gm/gmmain.cpp
|
| ===================================================================
|
| --- gm/gmmain.cpp (revision 8651)
|
| +++ gm/gmmain.cpp (working copy)
|
| @@ -174,13 +174,14 @@
|
| | SkGPipeWriter::kSharedAddressSpace_Flag }
|
| };
|
|
|
| +const static ErrorCombination kDefaultIgnorableErrorTypes = ErrorCombination()
|
| + .plus(kMissingExpectations_ErrorType)
|
| + .plus(kIntentionallySkipped_ErrorType);
|
| +
|
| class GMMain {
|
| public:
|
| - GMMain() : fUseFileHierarchy(false), fMismatchPath(NULL), fTestsRun(0),
|
| - fRenderModesEncountered(1) {
|
| - fIgnorableErrorCombination.add(kMissingExpectations_ErrorType);
|
| - fIgnorableErrorCombination.add(kIntentionallySkipped_ErrorType);
|
| - }
|
| + GMMain() : fUseFileHierarchy(false), fIgnorableErrorTypes(kDefaultIgnorableErrorTypes),
|
| + fMismatchPath(NULL), fTestsRun(0), fRenderModesEncountered(1) {}
|
|
|
| SkString make_name(const char shortName[], const char configName[]) {
|
| SkString name;
|
| @@ -291,7 +292,7 @@
|
| int significantErrors = 0;
|
| for (int typeInt = 0; typeInt <= kLast_ErrorType; typeInt++) {
|
| ErrorType type = static_cast<ErrorType>(typeInt);
|
| - if (!fIgnorableErrorCombination.includes(type)) {
|
| + if (!fIgnorableErrorTypes.includes(type)) {
|
| significantErrors += fFailedTests[type].count();
|
| }
|
| }
|
| @@ -305,7 +306,7 @@
|
| * @param verbose whether to be all verbose about it
|
| */
|
| void DisplayResultTypeSummary(ErrorType type, bool verbose) {
|
| - bool isIgnorableType = fIgnorableErrorCombination.includes(type);
|
| + bool isIgnorableType = fIgnorableErrorTypes.includes(type);
|
|
|
| SkString line;
|
| if (isIgnorableType) {
|
| @@ -1105,7 +1106,7 @@
|
| //
|
|
|
| bool fUseFileHierarchy;
|
| - ErrorCombination fIgnorableErrorCombination;
|
| + ErrorCombination fIgnorableErrorTypes;
|
|
|
| const char* fMismatchPath;
|
|
|
| @@ -1209,6 +1210,18 @@
|
| #endif
|
| DEFINE_bool(hierarchy, false, "Whether to use multilevel directory structure "
|
| "when reading/writing files.");
|
| +// TODO(epoger): Maybe should make SkCommandLineFlags handle default string
|
| +// values differently, so that the first definition of ignoreErrorTypes worked?
|
| +#if 0
|
| +DEFINE_string(ignoreErrorTypes, kDefaultIgnorableErrorTypes.asString(" ").c_str(),
|
| + "Space-separated list of ErrorTypes that should be ignored. If any *other* error "
|
| + "types are encountered, the tool will exit with a nonzero return value.");
|
| +#else
|
| +DEFINE_string(ignoreErrorTypes, "", SkString(SkString(
|
| + "Space-separated list of ErrorTypes that should be ignored. If any *other* error "
|
| + "types are encountered, the tool will exit with a nonzero return value. "
|
| + "Defaults to: ") += kDefaultIgnorableErrorTypes.asString(" ")).c_str());
|
| +#endif
|
| DEFINE_string(match, "", "Only run tests whose name includes this substring/these substrings "
|
| "(more than one can be supplied, separated by spaces).");
|
| DEFINE_string(mismatchPath, "", "Write images for tests that failed due to "
|
| @@ -1639,6 +1652,20 @@
|
| }
|
| }
|
|
|
| + if (FLAGS_ignoreErrorTypes.count() > 0) {
|
| + gmmain.fIgnorableErrorTypes = ErrorCombination();
|
| + for (int i = 0; i < FLAGS_ignoreErrorTypes.count(); i++) {
|
| + ErrorType type;
|
| + const char *name = FLAGS_ignoreErrorTypes[i];
|
| + if (!getErrorTypeByName(name, &type)) {
|
| + gm_fprintf(stderr, "cannot find ErrorType with name '%s'\n", name);
|
| + return -1;
|
| + } else {
|
| + gmmain.fIgnorableErrorTypes.add(type);
|
| + }
|
| + }
|
| + }
|
| +
|
| #if SK_SUPPORT_GPU
|
| if (FLAGS_gpuCacheSize.count() > 0) {
|
| if (FLAGS_gpuCacheSize.count() != 2) {
|
|
|