• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "base/test/expectations/expectation.h"
6 
7 #include "base/logging.h"
8 
9 #if defined(OS_WIN)
10 #include "base/win/windows_version.h"
11 #elif defined(OS_MACOSX) && !defined(OS_IOS)
12 #include "base/mac/mac_util.h"
13 #elif defined(OS_LINUX)
14 #include "base/sys_info.h"
15 #endif
16 
17 namespace test_expectations {
18 
ResultFromString(const base::StringPiece & result,Result * out_result)19 bool ResultFromString(const base::StringPiece& result, Result* out_result) {
20   if (result == "Failure")
21     *out_result = RESULT_FAILURE;
22   else if (result == "Timeout")
23     *out_result = RESULT_TIMEOUT;
24   else if (result == "Crash")
25     *out_result = RESULT_CRASH;
26   else if (result == "Skip")
27     *out_result = RESULT_SKIP;
28   else if (result == "Pass")
29     *out_result = RESULT_PASS;
30   else
31     return false;
32 
33   return true;
34 }
35 
IsValidPlatform(const Platform * platform)36 static bool IsValidPlatform(const Platform* platform) {
37   const std::string& name = platform->name;
38   const std::string& variant = platform->variant;
39 
40   if (name == "Win") {
41     if (variant != "" &&
42         variant != "XP" &&
43         variant != "Vista" &&
44         variant != "7" &&
45         variant != "8") {
46       return false;
47     }
48   } else if (name == "Mac") {
49     if (variant != "" &&
50         variant != "10.6" &&
51         variant != "10.7" &&
52         variant != "10.8" &&
53         variant != "10.9" &&
54         variant != "10.10") {
55       return false;
56     }
57   } else if (name == "Linux") {
58     if (variant != "" &&
59         variant != "32" &&
60         variant != "64") {
61       return false;
62     }
63   } else if (name == "ChromeOS") {
64     // TODO(rsesek): Figure out what ChromeOS needs.
65   } else if (name == "iOS") {
66     // TODO(rsesek): Figure out what iOS needs. Probably Device and Simulator.
67   } else if (name == "Android") {
68     // TODO(rsesek): Figure out what Android needs.
69   } else {
70     return false;
71   }
72 
73   return true;
74 }
75 
PlatformFromString(const base::StringPiece & modifier,Platform * out_platform)76 bool PlatformFromString(const base::StringPiece& modifier,
77                         Platform* out_platform) {
78   size_t sep = modifier.find('-');
79   if (sep == std::string::npos) {
80     out_platform->name = modifier.as_string();
81     out_platform->variant.clear();
82   } else {
83     out_platform->name = modifier.substr(0, sep).as_string();
84     out_platform->variant = modifier.substr(sep + 1).as_string();
85   }
86 
87   return IsValidPlatform(out_platform);
88 }
89 
GetCurrentPlatform()90 Platform GetCurrentPlatform() {
91   Platform platform;
92 #if defined(OS_WIN)
93   platform.name = "Win";
94   base::win::Version version = base::win::GetVersion();
95   if (version == base::win::VERSION_XP)
96     platform.variant = "XP";
97   else if (version == base::win::VERSION_VISTA)
98     platform.variant = "Vista";
99   else if (version == base::win::VERSION_WIN7)
100     platform.variant = "7";
101   else if (version == base::win::VERSION_WIN8)
102     platform.variant = "8";
103 #elif defined(OS_IOS)
104   platform.name = "iOS";
105 #elif defined(OS_MACOSX)
106   platform.name = "Mac";
107   if (base::mac::IsOSSnowLeopard())
108     platform.variant = "10.6";
109   else if (base::mac::IsOSLion())
110     platform.variant = "10.7";
111   else if (base::mac::IsOSMountainLion())
112     platform.variant = "10.8";
113   else if (base::mac::IsOSMavericks())
114     platform.variant = "10.9";
115   else if (base::mac::IsOSYosemite())
116     platform.variant = "10.10";
117 #elif defined(OS_CHROMEOS)
118   platform.name = "ChromeOS";
119 #elif defined(OS_ANDROID)
120   platform.name = "Android";
121 #elif defined(OS_LINUX)
122   platform.name = "Linux";
123   std::string arch = base::SysInfo::OperatingSystemArchitecture();
124   if (arch == "x86")
125     platform.variant = "32";
126   else if (arch == "x86_64")
127     platform.variant = "64";
128 #else
129   NOTREACHED();
130 #endif
131   return platform;
132 }
133 
ConfigurationFromString(const base::StringPiece & modifier,Configuration * out_configuration)134 bool ConfigurationFromString(const base::StringPiece& modifier,
135                              Configuration* out_configuration) {
136   if (modifier == "Debug")
137     *out_configuration = CONFIGURATION_DEBUG;
138   else if (modifier == "Release")
139     *out_configuration = CONFIGURATION_RELEASE;
140   else
141     return false;
142 
143   return true;
144 }
145 
GetCurrentConfiguration()146 Configuration GetCurrentConfiguration() {
147 #if NDEBUG
148   return CONFIGURATION_RELEASE;
149 #else
150   return CONFIGURATION_DEBUG;
151 #endif
152 }
153 
Expectation()154 Expectation::Expectation()
155     : configuration(CONFIGURATION_UNSPECIFIED),
156       result(RESULT_PASS) {
157 }
158 
~Expectation()159 Expectation::~Expectation() {}
160 
161 }  // namespace test_expectations
162