Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/test/gtest_xml_unittest_result_printer.h" | 5 #include "base/test/gtest_xml_unittest_result_printer.h" |
| 6 | 6 |
| 7 #include "base/base64.h" | 7 #include "base/base64.h" |
| 8 #include "base/files/file_util.h" | 8 #include "base/files/file_util.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/time/time.h" | 10 #include "base/time/time.h" |
| 11 | 11 |
| 12 namespace base { | 12 namespace base { |
| 13 | 13 |
| 14 XmlUnitTestResultPrinter::XmlUnitTestResultPrinter() : output_file_(NULL) { | 14 namespace { |
| 15 const int kDefaultTestPartResultsLimit = 10; | |
| 15 } | 16 } |
| 16 | 17 |
| 18 XmlUnitTestResultPrinter::XmlUnitTestResultPrinter() | |
| 19 : output_file_(NULL), | |
| 20 test_part_results_limit_(kDefaultTestPartResultsLimit) {} | |
| 21 | |
| 17 XmlUnitTestResultPrinter::~XmlUnitTestResultPrinter() { | 22 XmlUnitTestResultPrinter::~XmlUnitTestResultPrinter() { |
| 18 if (output_file_) { | 23 if (output_file_) { |
| 19 fprintf(output_file_, "</testsuites>\n"); | 24 fprintf(output_file_, "</testsuites>\n"); |
| 20 fflush(output_file_); | 25 fflush(output_file_); |
| 21 CloseFile(output_file_); | 26 CloseFile(output_file_); |
| 22 } | 27 } |
| 23 } | 28 } |
| 24 | 29 |
| 25 bool XmlUnitTestResultPrinter::Initialize(const FilePath& output_file_path) { | 30 bool XmlUnitTestResultPrinter::Initialize(const FilePath& output_file_path) { |
| 26 DCHECK(!output_file_); | 31 DCHECK(!output_file_); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 66 " <testcase name=\"%s\" status=\"run\" time=\"%.3f\"" | 71 " <testcase name=\"%s\" status=\"run\" time=\"%.3f\"" |
| 67 " classname=\"%s\">\n", | 72 " classname=\"%s\">\n", |
| 68 test_info.name(), | 73 test_info.name(), |
| 69 static_cast<double>(test_info.result()->elapsed_time()) / | 74 static_cast<double>(test_info.result()->elapsed_time()) / |
| 70 Time::kMillisecondsPerSecond, | 75 Time::kMillisecondsPerSecond, |
| 71 test_info.test_case_name()); | 76 test_info.test_case_name()); |
| 72 if (test_info.result()->Failed()) { | 77 if (test_info.result()->Failed()) { |
| 73 fprintf(output_file_, | 78 fprintf(output_file_, |
| 74 " <failure message=\"\" type=\"\"></failure>\n"); | 79 " <failure message=\"\" type=\"\"></failure>\n"); |
| 75 } | 80 } |
| 76 for (int i = 0; i < test_info.result()->total_part_count(); ++i) { | 81 |
| 82 int limit = test_info.result()->total_part_count(); | |
| 83 if (has_test_part_results_limit()) | |
| 84 limit = std::min(limit, test_part_results_limit()); | |
| 85 | |
| 86 for (int i = 0; i < limit; ++i) { | |
|
Paweł Hajdan Jr.
2017/05/05 17:33:03
We need to add something in case the limit is exce
alex-ac
2017/05/07 12:07:24
Done.
| |
| 77 const auto& test_part_result = test_info.result()->GetTestPartResult(i); | 87 const auto& test_part_result = test_info.result()->GetTestPartResult(i); |
| 78 WriteTestPartResult(test_part_result.file_name(), | 88 WriteTestPartResult(test_part_result.file_name(), |
| 79 test_part_result.line_number(), test_part_result.type(), | 89 test_part_result.line_number(), test_part_result.type(), |
| 80 test_part_result.summary(), test_part_result.message()); | 90 test_part_result.summary(), test_part_result.message()); |
| 81 } | 91 } |
| 92 | |
| 82 fprintf(output_file_, " </testcase>\n"); | 93 fprintf(output_file_, " </testcase>\n"); |
| 83 fflush(output_file_); | 94 fflush(output_file_); |
| 84 } | 95 } |
| 85 | 96 |
| 86 void XmlUnitTestResultPrinter::OnTestCaseEnd( | 97 void XmlUnitTestResultPrinter::OnTestCaseEnd( |
| 87 const testing::TestCase& test_case) { | 98 const testing::TestCase& test_case) { |
| 88 fprintf(output_file_, " </testsuite>\n"); | 99 fprintf(output_file_, " </testsuite>\n"); |
| 89 fflush(output_file_); | 100 fflush(output_file_); |
| 90 } | 101 } |
| 91 | 102 |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 114 fprintf(output_file_, | 125 fprintf(output_file_, |
| 115 " <x-test-result-part type=\"%s\" file=\"%s\" line=\"%d\">\n" | 126 " <x-test-result-part type=\"%s\" file=\"%s\" line=\"%d\">\n" |
| 116 " <summary>%s</summary>\n" | 127 " <summary>%s</summary>\n" |
| 117 " <message>%s</message>\n" | 128 " <message>%s</message>\n" |
| 118 " </x-test-result-part>\n", | 129 " </x-test-result-part>\n", |
| 119 type, file, line, summary_encoded.c_str(), message_encoded.c_str()); | 130 type, file, line, summary_encoded.c_str(), message_encoded.c_str()); |
| 120 fflush(output_file_); | 131 fflush(output_file_); |
| 121 } | 132 } |
| 122 | 133 |
| 123 } // namespace base | 134 } // namespace base |
| OLD | NEW |