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
This commit is contained in:
scroggo@google.com 2013-08-06 18:51:30 +00:00
parent 1aa988e2b7
commit e339eb054b

View File

@ -97,6 +97,10 @@ static SkTArray<SkString, false> gEncodeFailures;
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 @@ static bool expect_to_fail(const char* filename) {
* 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 @@ static bool expect_to_fail(const char* filename) {
* - 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 @@ static bool compare_to_expectations_if_necessary(const SkBitmap& bitmap, const c
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 @@ static void decodeFileAndWrite(const char srcPath[], const SkString* writePath)
}
}
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 @@ static void decodeFileAndWrite(const char srcPath[], const SkString* writePath)
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 @@ int tool_main(int argc, char** argv) {
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;