COMPMID-415: Use printer for errors

Change-Id: Idc2fc1dfd5706580d15c2bbfffe2830d41075a4b
Reviewed-on: http://mpd-gerrit.cambridge.arm.com/82908
Reviewed-by: Anthony Barbier <anthony.barbier@arm.com>
Tested-by: Kaizen <jeremy.johnson+kaizengerrit@arm.com>
diff --git a/framework/printers/JSONPrinter.cpp b/framework/printers/JSONPrinter.cpp
index 7806644..3408174 100644
--- a/framework/printers/JSONPrinter.cpp
+++ b/framework/printers/JSONPrinter.cpp
@@ -78,6 +78,7 @@
 {
     print_separator(_first_test);
 
+    _first_test_entry = true;
     *_stream << R"(")" << info.name << R"(" : {)";
 }
 
@@ -86,8 +87,32 @@
     *_stream << "}";
 }
 
+void JSONPrinter::print_errors_header()
+{
+    print_separator(_first_test_entry);
+
+    _first_error = true;
+    *_stream << R"("errors" : [)";
+}
+
+void JSONPrinter::print_errors_footer()
+{
+    *_stream << "]";
+}
+
+void JSONPrinter::print_error(const std::exception &error)
+{
+    print_separator(_first_error);
+
+    *_stream << R"(")" << error.what() << R"(")";
+}
+
 void JSONPrinter::print_measurements(const Profiler::MeasurementsMap &measurements)
 {
+    print_separator(_first_test_entry);
+
+    *_stream << R"("measurements" : {)";
+
     for(auto i_it = measurements.cbegin(), i_end = measurements.cend(); i_it != i_end;)
     {
         *_stream << R"(")" << i_it->first << R"(" : {)";
@@ -129,6 +154,8 @@
             *_stream << ",";
         }
     }
+
+    *_stream << "}";
 }
 } // namespace framework
 } // namespace test