Do not fail skimage on missing expectations.
This will allow adding new images to test without turning the bots
red.
R=epoger@google.com
Review URL: https://codereview.chromium.org/22301006
git-svn-id: http://skia.googlecode.com/svn/trunk@10578 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/tools/skimage_main.cpp b/tools/skimage_main.cpp
index ef5c133..ad3f204 100644
--- a/tools/skimage_main.cpp
+++ b/tools/skimage_main.cpp
@@ -97,6 +97,10 @@
static SkTArray<SkString, false> gSuccessfulDecodes;
static SkTArray<SkString, false> gSuccessfulSubsetDecodes;
static SkTArray<SkString, false> gFailedSubsetDecodes;
+// Files/subsets that do not have expectations. Not reported as a failure of the test so
+// the bots will not turn red with each new image test.
+static SkTArray<SkString, false> gMissingExpectations;
+static SkTArray<SkString, false> gMissingSubsetExpectations;
// Expections read from a file specified by readExpectationsPath. The expectations must have been
// previously written using createExpectationsPath.
@@ -179,6 +183,8 @@
* Compare against an expectation for this filename, if there is one.
* @param bitmap SkBitmap to compare to the expected value.
* @param filename String used to find the expected value.
+ * @param failureArray Array to add a failure message to on failure.
+ * @param missingArray Array to add missing expectation to on failure.
* @return bool True in any of these cases:
* - the bitmap matches the expectation.
* False in any of these cases:
@@ -188,7 +194,8 @@
* - expectation could not be computed from the bitmap.
*/
static bool compare_to_expectations_if_necessary(const SkBitmap& bitmap, const char* filename,
- SkTArray<SkString, false>* failureArray) {
+ SkTArray<SkString, false>* failureArray,
+ SkTArray<SkString, false>* missingArray) {
skiagm::GmResultDigest resultDigest(bitmap);
if (!resultDigest.isValid()) {
if (failureArray != NULL) {
@@ -204,8 +211,8 @@
skiagm::Expectations jsExpectation = gJsonExpectations->get(filename);
if (jsExpectation.empty()) {
- if (failureArray != NULL) {
- failureArray->push_back().printf("decoded %s, but could not find expectation.",
+ if (missingArray != NULL) {
+ missingArray->push_back().printf("decoded %s, but could not find expectation.",
filename);
}
return false;
@@ -343,7 +350,9 @@
}
}
- if (compare_to_expectations_if_necessary(bitmap, filename, &gDecodeFailures)) {
+ if (compare_to_expectations_if_necessary(bitmap, filename,
+ &gDecodeFailures,
+ &gMissingExpectations)) {
gSuccessfulDecodes.push_back().printf("%s [%d %d]", srcPath, bitmap.width(),
bitmap.height());
} else if (!FLAGS_mismatchPath.isEmpty()) {
@@ -388,7 +397,8 @@
SkString subsetName = SkStringPrintf("%s_%s", filename, subsetDim.c_str());
if (compare_to_expectations_if_necessary(bitmapFromDecodeSubset,
subsetName.c_str(),
- &gFailedSubsetDecodes)) {
+ &gFailedSubsetDecodes,
+ &gMissingSubsetExpectations)) {
gSuccessfulSubsetDecodes.push_back().printf("Decoded subset %s from %s",
subsetDim.c_str(), srcPath);
} else if (!FLAGS_mismatchPath.isEmpty()) {
@@ -589,10 +599,12 @@
failed |= print_strings("Failed to decode", gDecodeFailures);
failed |= print_strings("Failed to encode", gEncodeFailures);
print_strings("Decoded", gSuccessfulDecodes);
+ print_strings("Missing expectations", gMissingExpectations);
if (FLAGS_testSubsetDecoding) {
failed |= print_strings("Failed subset decodes", gFailedSubsetDecodes);
print_strings("Decoded subsets", gSuccessfulSubsetDecodes);
+ print_strings("Missing subset expectations", gMissingSubsetExpectations);
}
return failed ? -1 : 0;