Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(610)

Side by Side Diff: base/test/launcher/test_results_tracker.cc

Issue 1262693002: test launcher: print test file names and lines in summary results (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « base/test/launcher/test_results_tracker.h ('k') | base/test/launcher/unit_test_launcher.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/launcher/test_results_tracker.h" 5 #include "base/test/launcher/test_results_tracker.h"
6 6
7 #include "base/base64.h" 7 #include "base/base64.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
11 #include "base/format_macros.h" 11 #include "base/format_macros.h"
12 #include "base/json/json_file_value_serializer.h" 12 #include "base/json/json_file_value_serializer.h"
13 #include "base/json/string_escape.h" 13 #include "base/json/string_escape.h"
14 #include "base/logging.h" 14 #include "base/logging.h"
15 #include "base/strings/string_util.h" 15 #include "base/strings/string_util.h"
16 #include "base/strings/stringprintf.h" 16 #include "base/strings/stringprintf.h"
17 #include "base/test/launcher/test_launcher.h" 17 #include "base/test/launcher/test_launcher.h"
18 #include "base/values.h" 18 #include "base/values.h"
19 19
20 namespace base { 20 namespace base {
21 21
22 namespace { 22 namespace {
23 23
24 // The default output file for XML output. 24 // The default output file for XML output.
25 const FilePath::CharType kDefaultOutputFile[] = FILE_PATH_LITERAL( 25 const FilePath::CharType kDefaultOutputFile[] = FILE_PATH_LITERAL(
26 "test_detail.xml"); 26 "test_detail.xml");
27 27
28 // Utility function to print a list of test names. Uses iterator to be
29 // compatible with different containers, like vector and set.
30 template<typename InputIterator>
31 void PrintTests(InputIterator first,
32 InputIterator last,
33 const std::string& description) {
34 size_t count = std::distance(first, last);
35 if (count == 0)
36 return;
37
38 fprintf(stdout,
39 "%" PRIuS " test%s %s:\n",
40 count,
41 count != 1 ? "s" : "",
42 description.c_str());
43 for (InputIterator i = first; i != last; ++i)
44 fprintf(stdout, " %s\n", (*i).c_str());
45 fflush(stdout);
46 }
47
48 std::string TestNameWithoutDisabledPrefix(const std::string& test_name) { 28 std::string TestNameWithoutDisabledPrefix(const std::string& test_name) {
49 std::string test_name_no_disabled(test_name); 29 std::string test_name_no_disabled(test_name);
50 ReplaceSubstringsAfterOffset(&test_name_no_disabled, 0, "DISABLED_", ""); 30 ReplaceSubstringsAfterOffset(&test_name_no_disabled, 0, "DISABLED_", "");
51 return test_name_no_disabled; 31 return test_name_no_disabled;
52 } 32 }
53 33
54 } // namespace 34 } // namespace
55 35
56 TestResultsTracker::TestResultsTracker() : iteration_(-1), out_(NULL) { 36 TestResultsTracker::TestResultsTracker() : iteration_(-1), out_(NULL) {
57 } 37 }
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 } 132 }
153 133
154 void TestResultsTracker::OnTestIterationStarting() { 134 void TestResultsTracker::OnTestIterationStarting() {
155 DCHECK(thread_checker_.CalledOnValidThread()); 135 DCHECK(thread_checker_.CalledOnValidThread());
156 136
157 // Start with a fresh state for new iteration. 137 // Start with a fresh state for new iteration.
158 iteration_++; 138 iteration_++;
159 per_iteration_data_.push_back(PerIterationData()); 139 per_iteration_data_.push_back(PerIterationData());
160 } 140 }
161 141
162 void TestResultsTracker::AddTest(const std::string& test_name) { 142 void TestResultsTracker::AddTest(
143 const std::string& test_name, const std::string& file, int line) {
163 // Record disabled test names without DISABLED_ prefix so that they are easy 144 // Record disabled test names without DISABLED_ prefix so that they are easy
164 // to compare with regular test names, e.g. before or after disabling. 145 // to compare with regular test names, e.g. before or after disabling.
165 all_tests_.insert(TestNameWithoutDisabledPrefix(test_name)); 146 all_tests_.insert(TestNameWithoutDisabledPrefix(test_name));
147
148 test_locations_.insert(std::make_pair(
149 TestNameWithoutDisabledPrefix(test_name), CodeLocation(file, line)));
166 } 150 }
167 151
168 void TestResultsTracker::AddDisabledTest(const std::string& test_name) { 152 void TestResultsTracker::AddDisabledTest(const std::string& test_name) {
169 // Record disabled test names without DISABLED_ prefix so that they are easy 153 // Record disabled test names without DISABLED_ prefix so that they are easy
170 // to compare with regular test names, e.g. before or after disabling. 154 // to compare with regular test names, e.g. before or after disabling.
171 disabled_tests_.insert(TestNameWithoutDisabledPrefix(test_name)); 155 disabled_tests_.insert(TestNameWithoutDisabledPrefix(test_name));
172 } 156 }
173 157
174 void TestResultsTracker::AddTestResult(const TestResult& result) { 158 void TestResultsTracker::AddTestResult(const TestResult& result) {
175 DCHECK(thread_checker_.CalledOnValidThread()); 159 DCHECK(thread_checker_.CalledOnValidThread());
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 for (PerIterationData::ResultsMap::const_iterator j = 315 for (PerIterationData::ResultsMap::const_iterator j =
332 per_iteration_data_[iteration].results.begin(); 316 per_iteration_data_[iteration].results.begin();
333 j != per_iteration_data_[iteration].results.end(); 317 j != per_iteration_data_[iteration].results.end();
334 ++j) { 318 ++j) {
335 // Use the last test result as the final one. 319 // Use the last test result as the final one.
336 const TestResult& result = j->second.test_results.back(); 320 const TestResult& result = j->second.test_results.back();
337 (*map)[result.status].insert(result.full_name); 321 (*map)[result.status].insert(result.full_name);
338 } 322 }
339 } 323 }
340 324
325 // Utility function to print a list of test names. Uses iterator to be
326 // compatible with different containers, like vector and set.
327 template<typename InputIterator>
328 void TestResultsTracker::PrintTests(InputIterator first,
329 InputIterator last,
330 const std::string& description) const {
331 size_t count = std::distance(first, last);
332 if (count == 0)
333 return;
334
335 fprintf(stdout,
336 "%" PRIuS " test%s %s:\n",
337 count,
338 count != 1 ? "s" : "",
339 description.c_str());
340 for (InputIterator i = first; i != last; ++i) {
341 fprintf(stdout,
342 " %s (%s:%d)\n",
343 (*i).c_str(),
344 test_locations_.at(*i).file.c_str(),
345 test_locations_.at(*i).line);
346 }
347 fflush(stdout);
348 }
349
350
341 TestResultsTracker::AggregateTestResult::AggregateTestResult() { 351 TestResultsTracker::AggregateTestResult::AggregateTestResult() {
342 } 352 }
343 353
344 TestResultsTracker::AggregateTestResult::~AggregateTestResult() { 354 TestResultsTracker::AggregateTestResult::~AggregateTestResult() {
345 } 355 }
346 356
347 TestResultsTracker::PerIterationData::PerIterationData() { 357 TestResultsTracker::PerIterationData::PerIterationData() {
348 } 358 }
349 359
350 TestResultsTracker::PerIterationData::~PerIterationData() { 360 TestResultsTracker::PerIterationData::~PerIterationData() {
351 } 361 }
352 362
353 } // namespace base 363 } // namespace base
OLDNEW
« no previous file with comments | « base/test/launcher/test_results_tracker.h ('k') | base/test/launcher/unit_test_launcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698