xref: /aosp_15_r20/external/cronet/base/test/launcher/test_result.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2013 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker 
5*6777b538SAndroid Build Coastguard Worker #include "base/test/launcher/test_result.h"
6*6777b538SAndroid Build Coastguard Worker 
7*6777b538SAndroid Build Coastguard Worker #include <stddef.h>
8*6777b538SAndroid Build Coastguard Worker 
9*6777b538SAndroid Build Coastguard Worker #include <ostream>
10*6777b538SAndroid Build Coastguard Worker 
11*6777b538SAndroid Build Coastguard Worker #include "base/check_op.h"
12*6777b538SAndroid Build Coastguard Worker #include "base/notreached.h"
13*6777b538SAndroid Build Coastguard Worker 
14*6777b538SAndroid Build Coastguard Worker namespace base {
15*6777b538SAndroid Build Coastguard Worker 
16*6777b538SAndroid Build Coastguard Worker TestResultPart::TestResultPart() = default;
17*6777b538SAndroid Build Coastguard Worker TestResultPart::~TestResultPart() = default;
18*6777b538SAndroid Build Coastguard Worker 
19*6777b538SAndroid Build Coastguard Worker TestResultPart::TestResultPart(const TestResultPart& other) = default;
20*6777b538SAndroid Build Coastguard Worker TestResultPart::TestResultPart(TestResultPart&& other) = default;
21*6777b538SAndroid Build Coastguard Worker TestResultPart& TestResultPart::operator=(const TestResultPart& other) =
22*6777b538SAndroid Build Coastguard Worker     default;
23*6777b538SAndroid Build Coastguard Worker TestResultPart& TestResultPart::operator=(TestResultPart&& other) = default;
24*6777b538SAndroid Build Coastguard Worker 
25*6777b538SAndroid Build Coastguard Worker // static
TypeFromString(const std::string & str,Type * type)26*6777b538SAndroid Build Coastguard Worker bool TestResultPart::TypeFromString(const std::string& str, Type* type) {
27*6777b538SAndroid Build Coastguard Worker   if (str == "success")
28*6777b538SAndroid Build Coastguard Worker     *type = kSuccess;
29*6777b538SAndroid Build Coastguard Worker   else if (str == "failure")
30*6777b538SAndroid Build Coastguard Worker     *type = kNonFatalFailure;
31*6777b538SAndroid Build Coastguard Worker   else if (str == "fatal_failure")
32*6777b538SAndroid Build Coastguard Worker     *type = kFatalFailure;
33*6777b538SAndroid Build Coastguard Worker   else if (str == "skip")
34*6777b538SAndroid Build Coastguard Worker     *type = kSkip;
35*6777b538SAndroid Build Coastguard Worker   else
36*6777b538SAndroid Build Coastguard Worker     return false;
37*6777b538SAndroid Build Coastguard Worker   return true;
38*6777b538SAndroid Build Coastguard Worker }
39*6777b538SAndroid Build Coastguard Worker 
TypeAsString() const40*6777b538SAndroid Build Coastguard Worker std::string TestResultPart::TypeAsString() const {
41*6777b538SAndroid Build Coastguard Worker   switch (type) {
42*6777b538SAndroid Build Coastguard Worker     case kSuccess:
43*6777b538SAndroid Build Coastguard Worker       return "success";
44*6777b538SAndroid Build Coastguard Worker     case kNonFatalFailure:
45*6777b538SAndroid Build Coastguard Worker       return "failure";
46*6777b538SAndroid Build Coastguard Worker     case kFatalFailure:
47*6777b538SAndroid Build Coastguard Worker       return "fatal_failure";
48*6777b538SAndroid Build Coastguard Worker     case kSkip:
49*6777b538SAndroid Build Coastguard Worker       return "skip";
50*6777b538SAndroid Build Coastguard Worker   }
51*6777b538SAndroid Build Coastguard Worker   return "unknown";
52*6777b538SAndroid Build Coastguard Worker }
53*6777b538SAndroid Build Coastguard Worker 
TestResult()54*6777b538SAndroid Build Coastguard Worker TestResult::TestResult() : status(TEST_UNKNOWN) {
55*6777b538SAndroid Build Coastguard Worker }
56*6777b538SAndroid Build Coastguard Worker 
57*6777b538SAndroid Build Coastguard Worker TestResult::~TestResult() = default;
58*6777b538SAndroid Build Coastguard Worker 
59*6777b538SAndroid Build Coastguard Worker TestResult::TestResult(const TestResult& other) = default;
60*6777b538SAndroid Build Coastguard Worker TestResult::TestResult(TestResult&& other) = default;
61*6777b538SAndroid Build Coastguard Worker TestResult& TestResult::operator=(const TestResult& other) = default;
62*6777b538SAndroid Build Coastguard Worker TestResult& TestResult::operator=(TestResult&& other) = default;
63*6777b538SAndroid Build Coastguard Worker 
StatusAsString() const64*6777b538SAndroid Build Coastguard Worker std::string TestResult::StatusAsString() const {
65*6777b538SAndroid Build Coastguard Worker   switch (status) {
66*6777b538SAndroid Build Coastguard Worker     case TEST_UNKNOWN:
67*6777b538SAndroid Build Coastguard Worker       return "UNKNOWN";
68*6777b538SAndroid Build Coastguard Worker     case TEST_SUCCESS:
69*6777b538SAndroid Build Coastguard Worker       return "SUCCESS";
70*6777b538SAndroid Build Coastguard Worker     case TEST_FAILURE:
71*6777b538SAndroid Build Coastguard Worker       return "FAILURE";
72*6777b538SAndroid Build Coastguard Worker     case TEST_FAILURE_ON_EXIT:
73*6777b538SAndroid Build Coastguard Worker       return "FAILURE_ON_EXIT";
74*6777b538SAndroid Build Coastguard Worker     case TEST_CRASH:
75*6777b538SAndroid Build Coastguard Worker       return "CRASH";
76*6777b538SAndroid Build Coastguard Worker     case TEST_TIMEOUT:
77*6777b538SAndroid Build Coastguard Worker       return "TIMEOUT";
78*6777b538SAndroid Build Coastguard Worker     case TEST_SKIPPED:
79*6777b538SAndroid Build Coastguard Worker       return "SKIPPED";
80*6777b538SAndroid Build Coastguard Worker     case TEST_EXCESSIVE_OUTPUT:
81*6777b538SAndroid Build Coastguard Worker       return "EXCESSIVE_OUTPUT";
82*6777b538SAndroid Build Coastguard Worker     case TEST_NOT_RUN:
83*6777b538SAndroid Build Coastguard Worker       return "NOTRUN";
84*6777b538SAndroid Build Coastguard Worker       // Rely on compiler warnings to ensure all possible values are handled.
85*6777b538SAndroid Build Coastguard Worker   }
86*6777b538SAndroid Build Coastguard Worker 
87*6777b538SAndroid Build Coastguard Worker   NOTREACHED();
88*6777b538SAndroid Build Coastguard Worker   return std::string();
89*6777b538SAndroid Build Coastguard Worker }
90*6777b538SAndroid Build Coastguard Worker 
GetTestName() const91*6777b538SAndroid Build Coastguard Worker std::string TestResult::GetTestName() const {
92*6777b538SAndroid Build Coastguard Worker   size_t dot_pos = full_name.find('.');
93*6777b538SAndroid Build Coastguard Worker   CHECK_NE(dot_pos, std::string::npos);
94*6777b538SAndroid Build Coastguard Worker   return full_name.substr(dot_pos + 1);
95*6777b538SAndroid Build Coastguard Worker }
96*6777b538SAndroid Build Coastguard Worker 
GetTestCaseName() const97*6777b538SAndroid Build Coastguard Worker std::string TestResult::GetTestCaseName() const {
98*6777b538SAndroid Build Coastguard Worker   size_t dot_pos = full_name.find('.');
99*6777b538SAndroid Build Coastguard Worker   CHECK_NE(dot_pos, std::string::npos);
100*6777b538SAndroid Build Coastguard Worker   return full_name.substr(0, dot_pos);
101*6777b538SAndroid Build Coastguard Worker }
102*6777b538SAndroid Build Coastguard Worker 
AddLink(const std::string & name,const std::string & url)103*6777b538SAndroid Build Coastguard Worker void TestResult::AddLink(const std::string& name, const std::string& url) {
104*6777b538SAndroid Build Coastguard Worker   auto [it, inserted] = links.insert({name, url});
105*6777b538SAndroid Build Coastguard Worker   DCHECK(inserted) << name << " is already used as a link name. Ignoring...";
106*6777b538SAndroid Build Coastguard Worker }
107*6777b538SAndroid Build Coastguard Worker 
AddTag(const std::string & name,const std::string & value)108*6777b538SAndroid Build Coastguard Worker void TestResult::AddTag(const std::string& name, const std::string& value) {
109*6777b538SAndroid Build Coastguard Worker   tags[name].push_back(value);
110*6777b538SAndroid Build Coastguard Worker }
111*6777b538SAndroid Build Coastguard Worker 
AddProperty(const std::string & name,const std::string & value)112*6777b538SAndroid Build Coastguard Worker void TestResult::AddProperty(const std::string& name,
113*6777b538SAndroid Build Coastguard Worker                              const std::string& value) {
114*6777b538SAndroid Build Coastguard Worker   auto [it, inserted] = properties.insert({name, value});
115*6777b538SAndroid Build Coastguard Worker   DCHECK(inserted) << name
116*6777b538SAndroid Build Coastguard Worker                    << " is already used as a property name. Ignoring...";
117*6777b538SAndroid Build Coastguard Worker }
118*6777b538SAndroid Build Coastguard Worker 
119*6777b538SAndroid Build Coastguard Worker }  // namespace base
120