Index: dm/DMJsonWriter.cpp |
diff --git a/dm/DMJsonWriter.cpp b/dm/DMJsonWriter.cpp |
index f86264715bcd65367eb9c1430e798fa33f495a1a..a2de38bb31033ba39d58dbe1f36156870b72260c 100644 |
--- a/dm/DMJsonWriter.cpp |
+++ b/dm/DMJsonWriter.cpp |
@@ -24,6 +24,14 @@ void JsonWriter::AddBitmapResult(const BitmapResult& result) { |
gBitmapResults.push_back(result); |
} |
+SkTArray<skiatest::Failure> gFailures; |
+SK_DECLARE_STATIC_MUTEX(gFailureLock); |
+ |
+void JsonWriter::AddTestFailure(const skiatest::Failure& failure) { |
+ SkAutoMutexAcquire lock(gFailureLock); |
+ gFailures.push_back(failure); |
+} |
+ |
void JsonWriter::DumpJson() { |
if (FLAGS_writePath.isEmpty()) { |
return; |
@@ -52,6 +60,19 @@ void JsonWriter::DumpJson() { |
} |
} |
+ { |
+ SkAutoMutexAcquire lock(gFailureLock); |
+ for (int i = 0; i < gFailures.count(); i++) { |
+ Json::Value result; |
+ result["file_name"] = gFailures[i].fileName; |
+ result["line_no"] = gFailures[i].lineNo; |
+ result["condition"] = gFailures[i].condition; |
+ result["message"] = gFailures[i].message.c_str(); |
+ |
+ root["test_results"]["failures"].append(result); |
+ } |
+ } |
+ |
SkString path = SkOSPath::Join(FLAGS_writePath[0], "dm.json"); |
SkFILEWStream stream(path.c_str()); |
stream.writeText(Json::StyledWriter().write(root).c_str()); |