| // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "base/test/expectations/expectation.h" |
| |
| #include "base/logging.h" |
| |
| #if defined(OS_WIN) |
| #include "base/win/windows_version.h" |
| #elif defined(OS_MACOSX) && !defined(OS_IOS) |
| #include "base/mac/mac_util.h" |
| #elif defined(OS_LINUX) |
| #include "base/sys_info.h" |
| #endif |
| |
| namespace test_expectations { |
| |
| bool ResultFromString(const base::StringPiece& result, Result* out_result) { |
| if (result == "Failure") |
| *out_result = RESULT_FAILURE; |
| else if (result == "Timeout") |
| *out_result = RESULT_TIMEOUT; |
| else if (result == "Crash") |
| *out_result = RESULT_CRASH; |
| else if (result == "Skip") |
| *out_result = RESULT_SKIP; |
| else if (result == "Pass") |
| *out_result = RESULT_PASS; |
| else |
| return false; |
| |
| return true; |
| } |
| |
| static bool IsValidPlatform(const Platform* platform) { |
| const std::string& name = platform->name; |
| const std::string& variant = platform->variant; |
| |
| if (name == "Win") { |
| if (!variant.empty() && |
| variant != "XP" && |
| variant != "Vista" && |
| variant != "7" && |
| variant != "8") { |
| return false; |
| } |
| } else if (name == "Mac") { |
| if (!variant.empty() && |
| variant != "10.6" && |
| variant != "10.7" && |
| variant != "10.8" && |
| variant != "10.9" && |
| variant != "10.10") { |
| return false; |
| } |
| } else if (name == "Linux") { |
| if (!variant.empty() && |
| variant != "32" && |
| variant != "64") { |
| return false; |
| } |
| } else if (name == "ChromeOS") { |
| // TODO(rsesek): Figure out what ChromeOS needs. |
| } else if (name == "iOS") { |
| // TODO(rsesek): Figure out what iOS needs. Probably Device and Simulator. |
| } else if (name == "Android") { |
| // TODO(rsesek): Figure out what Android needs. |
| } else { |
| return false; |
| } |
| |
| return true; |
| } |
| |
| bool PlatformFromString(const base::StringPiece& modifier, |
| Platform* out_platform) { |
| size_t sep = modifier.find('-'); |
| if (sep == std::string::npos) { |
| out_platform->name = modifier.as_string(); |
| out_platform->variant.clear(); |
| } else { |
| out_platform->name = modifier.substr(0, sep).as_string(); |
| out_platform->variant = modifier.substr(sep + 1).as_string(); |
| } |
| |
| return IsValidPlatform(out_platform); |
| } |
| |
| Platform GetCurrentPlatform() { |
| Platform platform; |
| #if defined(OS_WIN) |
| platform.name = "Win"; |
| base::win::Version version = base::win::GetVersion(); |
| if (version == base::win::VERSION_XP) |
| platform.variant = "XP"; |
| else if (version == base::win::VERSION_VISTA) |
| platform.variant = "Vista"; |
| else if (version == base::win::VERSION_WIN7) |
| platform.variant = "7"; |
| else if (version == base::win::VERSION_WIN8) |
| platform.variant = "8"; |
| #elif defined(OS_IOS) |
| platform.name = "iOS"; |
| #elif defined(OS_MACOSX) |
| platform.name = "Mac"; |
| if (base::mac::IsOSSnowLeopard()) |
| platform.variant = "10.6"; |
| else if (base::mac::IsOSLion()) |
| platform.variant = "10.7"; |
| else if (base::mac::IsOSMountainLion()) |
| platform.variant = "10.8"; |
| else if (base::mac::IsOSMavericks()) |
| platform.variant = "10.9"; |
| else if (base::mac::IsOSYosemite()) |
| platform.variant = "10.10"; |
| #elif defined(OS_CHROMEOS) |
| platform.name = "ChromeOS"; |
| #elif defined(OS_ANDROID) |
| platform.name = "Android"; |
| #elif defined(OS_LINUX) |
| platform.name = "Linux"; |
| std::string arch = base::SysInfo::OperatingSystemArchitecture(); |
| if (arch == "x86") |
| platform.variant = "32"; |
| else if (arch == "x86_64") |
| platform.variant = "64"; |
| #else |
| NOTREACHED(); |
| #endif |
| return platform; |
| } |
| |
| bool ConfigurationFromString(const base::StringPiece& modifier, |
| Configuration* out_configuration) { |
| if (modifier == "Debug") |
| *out_configuration = CONFIGURATION_DEBUG; |
| else if (modifier == "Release") |
| *out_configuration = CONFIGURATION_RELEASE; |
| else |
| return false; |
| |
| return true; |
| } |
| |
| Configuration GetCurrentConfiguration() { |
| #if NDEBUG |
| return CONFIGURATION_RELEASE; |
| #else |
| return CONFIGURATION_DEBUG; |
| #endif |
| } |
| |
| Expectation::Expectation() |
| : configuration(CONFIGURATION_UNSPECIFIED), |
| result(RESULT_PASS) { |
| } |
| |
| Expectation::~Expectation() {} |
| |
| } // namespace test_expectations |