| Index: chrome/tools/disable_outdated_build_detector/disable_outdated_build_detector_unittest.cc
|
| diff --git a/chrome/tools/disable_outdated_build_detector/disable_outdated_build_detector_unittest.cc b/chrome/tools/disable_outdated_build_detector/disable_outdated_build_detector_unittest.cc
|
| deleted file mode 100644
|
| index cb8bd7492f5bca9c5216539e075ddacb0daa4fc7..0000000000000000000000000000000000000000
|
| --- a/chrome/tools/disable_outdated_build_detector/disable_outdated_build_detector_unittest.cc
|
| +++ /dev/null
|
| @@ -1,214 +0,0 @@
|
| -// Copyright 2016 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 "chrome/tools/disable_outdated_build_detector/disable_outdated_build_detector.h"
|
| -
|
| -#include "base/environment.h"
|
| -#include "base/strings/string16.h"
|
| -#include "base/test/test_reg_util_win.h"
|
| -#include "chrome/installer/util/browser_distribution.h"
|
| -#include "chrome/installer/util/util_constants.h"
|
| -#include "chrome/tools/disable_outdated_build_detector/constants.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -enum class ExecutionMode {
|
| - USER_LEVEL,
|
| - SYSTEM_LEVEL_SWITCH,
|
| - IS_MACHINE_ENV,
|
| -};
|
| -
|
| -class DisableOutdatedBuildDetectorTest
|
| - : public ::testing::TestWithParam<ExecutionMode> {
|
| - protected:
|
| - DisableOutdatedBuildDetectorTest()
|
| - : chrome_distribution_(BrowserDistribution::GetSpecificDistribution(
|
| - BrowserDistribution::CHROME_BROWSER)),
|
| - binaries_distribution_(BrowserDistribution::GetSpecificDistribution(
|
| - BrowserDistribution::CHROME_BINARIES)),
|
| - execution_mode_(GetParam()),
|
| - root_(execution_mode_ == ExecutionMode::USER_LEVEL
|
| - ? HKEY_CURRENT_USER
|
| - : HKEY_LOCAL_MACHINE) {
|
| - registry_override_manager_.OverrideRegistry(root_);
|
| - if (execution_mode_ == ExecutionMode::SYSTEM_LEVEL_SWITCH)
|
| - command_line_ = L"--system-level";
|
| - base::Environment::Create()->SetVar(
|
| - "GoogleUpdateIsMachine",
|
| - execution_mode_ == ExecutionMode::IS_MACHINE_ENV ? "1" : "0");
|
| - }
|
| -
|
| - void FakeChrome(bool multi_install, const wchar_t* brand) {
|
| - base::win::RegKey key;
|
| - ASSERT_EQ(ERROR_SUCCESS,
|
| - key.Create(root_, chrome_distribution_->GetStateKey().c_str(),
|
| - KEY_ALL_ACCESS | KEY_WOW64_32KEY));
|
| - base::string16 uninstall_arguments(L"--uninstall");
|
| - if (multi_install)
|
| - uninstall_arguments += L"--chrome --multi-install";
|
| - if (brand)
|
| - ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(L"brand", brand));
|
| - ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(L"UninstallArguments",
|
| - uninstall_arguments.c_str()));
|
| - if (!multi_install)
|
| - return;
|
| - uninstall_arguments = L"--uninstall --multi-install";
|
| - ASSERT_EQ(ERROR_SUCCESS,
|
| - key.Create(root_, binaries_distribution_->GetStateKey().c_str(),
|
| - KEY_ALL_ACCESS | KEY_WOW64_32KEY));
|
| - if (brand)
|
| - ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(L"brand", brand));
|
| - ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(L"UninstallArguments",
|
| - uninstall_arguments.c_str()));
|
| - }
|
| -
|
| - bool HasBrand(BrowserDistribution* dist) {
|
| - base::win::RegKey key(root_, dist->GetStateKey().c_str(),
|
| - KEY_QUERY_VALUE | KEY_WOW64_32KEY);
|
| - return key.Valid() && key.HasValue(L"brand");
|
| - }
|
| -
|
| - base::string16 ReadBrand(BrowserDistribution* dist) {
|
| - base::win::RegKey key(root_, dist->GetStateKey().c_str(),
|
| - KEY_QUERY_VALUE | KEY_WOW64_32KEY);
|
| - base::string16 brand;
|
| - if (!key.Valid() || key.ReadValue(L"brand", &brand) != ERROR_SUCCESS)
|
| - return base::string16();
|
| - return brand;
|
| - }
|
| -
|
| - // Verifies that |result|, |exit_code|, and |detail| are found in Chrome's
|
| - // ClientStateKey in the InstallerResult, InstallerError, and
|
| - // InstallerExtraCode1 values, respectively.
|
| - void ExpectResult(InstallerResult result,
|
| - ExitCode exit_code,
|
| - uint32_t detail) {
|
| - base::win::RegKey key(root_, chrome_distribution_->GetStateKey().c_str(),
|
| - KEY_QUERY_VALUE | KEY_WOW64_32KEY);
|
| - ASSERT_TRUE(key.Valid());
|
| - DWORD value = 0;
|
| - ASSERT_EQ(ERROR_SUCCESS,
|
| - key.ReadValueDW(installer::kInstallerResult, &value));
|
| - EXPECT_EQ(result, static_cast<InstallerResult>(value));
|
| - ASSERT_EQ(ERROR_SUCCESS,
|
| - key.ReadValueDW(installer::kInstallerError, &value));
|
| - EXPECT_EQ(exit_code, static_cast<ExitCode>(value));
|
| - if (detail) {
|
| - ASSERT_EQ(ERROR_SUCCESS,
|
| - key.ReadValueDW(installer::kInstallerExtraCode1, &value));
|
| - EXPECT_EQ(detail, value);
|
| - } else {
|
| - EXPECT_FALSE(key.HasValue(installer::kInstallerExtraCode1));
|
| - }
|
| - }
|
| -
|
| - const wchar_t* command_line() const { return command_line_.c_str(); }
|
| -
|
| - std::wstring command_line_;
|
| - BrowserDistribution* chrome_distribution_;
|
| - BrowserDistribution* binaries_distribution_;
|
| -
|
| - private:
|
| - const ExecutionMode execution_mode_;
|
| - const HKEY root_;
|
| - registry_util::RegistryOverrideManager registry_override_manager_;
|
| -};
|
| -
|
| -TEST_P(DisableOutdatedBuildDetectorTest, NoChrome) {
|
| - EXPECT_EQ(ExitCode::NO_CHROME, DisableOutdatedBuildDetector(command_line()));
|
| -}
|
| -
|
| -TEST_P(DisableOutdatedBuildDetectorTest, SingleUnbrandedChrome) {
|
| - // Fake single-install Chrome's ClientState key with no brand.
|
| - FakeChrome(false /* single-install */, nullptr);
|
| -
|
| - // Switch the brand.
|
| - EXPECT_EQ(ExitCode::NON_ORGANIC_BRAND,
|
| - DisableOutdatedBuildDetector(command_line()));
|
| - ExpectResult(InstallerResult::FAILED_CUSTOM_ERROR,
|
| - ExitCode::NON_ORGANIC_BRAND, ERROR_FILE_NOT_FOUND);
|
| -
|
| - // Verify that there is still no brand.
|
| - EXPECT_FALSE(HasBrand(chrome_distribution_));
|
| -
|
| - // And the binaries' ClientState key should not have been created.
|
| - EXPECT_FALSE(HasBrand(binaries_distribution_));
|
| -}
|
| -
|
| -TEST_P(DisableOutdatedBuildDetectorTest, SingleOrganicChrome) {
|
| - // Fake single-install Chrome's ClientState key with an organic brand.
|
| - FakeChrome(false /* single-install */, L"GGLS");
|
| -
|
| - // Switch the brand.
|
| - EXPECT_EQ(ExitCode::CHROME_BRAND_UPDATED,
|
| - DisableOutdatedBuildDetector(command_line()));
|
| - ExpectResult(InstallerResult::FAILED_CUSTOM_ERROR,
|
| - ExitCode::CHROME_BRAND_UPDATED, 0);
|
| -
|
| - // Verify the new brand.
|
| - EXPECT_STREQ(L"AOHY", ReadBrand(chrome_distribution_).c_str());
|
| -
|
| - // And the binaries' ClientState key should not have been created.
|
| - EXPECT_FALSE(HasBrand(binaries_distribution_));
|
| -}
|
| -
|
| -TEST_P(DisableOutdatedBuildDetectorTest, SingleInOrganicChrome) {
|
| - static const wchar_t kBlorBrand[] = L"BLOR";
|
| -
|
| - // Fake single-install Chrome's ClientState key with an inorganic brand.
|
| - FakeChrome(false /* single-install */, kBlorBrand);
|
| -
|
| - // Switch the brand.
|
| - EXPECT_EQ(ExitCode::NON_ORGANIC_BRAND,
|
| - DisableOutdatedBuildDetector(command_line()));
|
| - ExpectResult(InstallerResult::FAILED_CUSTOM_ERROR,
|
| - ExitCode::NON_ORGANIC_BRAND, 0);
|
| -
|
| - // Verify that the brand is unchanged.
|
| - EXPECT_STREQ(kBlorBrand, ReadBrand(chrome_distribution_).c_str());
|
| -
|
| - // And the binaries' ClientState key should not have been created.
|
| - EXPECT_FALSE(HasBrand(binaries_distribution_));
|
| -}
|
| -
|
| -TEST_P(DisableOutdatedBuildDetectorTest, MultiOrganicChrome) {
|
| - // Fake multi-install Chrome's ClientState key with an organic brand.
|
| - FakeChrome(true /* multi-install */, L"GGLS");
|
| -
|
| - // Switch the brand.
|
| - EXPECT_EQ(ExitCode::BOTH_BRANDS_UPDATED,
|
| - DisableOutdatedBuildDetector(command_line()));
|
| - ExpectResult(InstallerResult::FAILED_CUSTOM_ERROR,
|
| - ExitCode::BOTH_BRANDS_UPDATED, 0);
|
| -
|
| - // Verify the new brand in Chrome and the binaries.
|
| - EXPECT_STREQ(L"AOHY", ReadBrand(chrome_distribution_).c_str());
|
| - EXPECT_STREQ(L"AOHY", ReadBrand(binaries_distribution_).c_str());
|
| -}
|
| -
|
| -TEST_P(DisableOutdatedBuildDetectorTest, MultiInOrganicChrome) {
|
| - static const wchar_t kBlorBrand[] = L"BLOR";
|
| -
|
| - // Fake multi-install Chrome's ClientState key with an inorganic brand.
|
| - FakeChrome(true /* multi-install */, kBlorBrand);
|
| -
|
| - // Switch the brand.
|
| - EXPECT_EQ(ExitCode::NON_ORGANIC_BRAND,
|
| - DisableOutdatedBuildDetector(command_line()));
|
| - ExpectResult(InstallerResult::FAILED_CUSTOM_ERROR,
|
| - ExitCode::NON_ORGANIC_BRAND, 0);
|
| -
|
| - // Verify that the brand is unchanged in both apps.
|
| - EXPECT_STREQ(kBlorBrand, ReadBrand(chrome_distribution_).c_str());
|
| - EXPECT_STREQ(kBlorBrand, ReadBrand(binaries_distribution_).c_str());
|
| -}
|
| -
|
| -INSTANTIATE_TEST_CASE_P(UserLevel,
|
| - DisableOutdatedBuildDetectorTest,
|
| - ::testing::Values(ExecutionMode::USER_LEVEL));
|
| -INSTANTIATE_TEST_CASE_P(SystemLevelSwitch,
|
| - DisableOutdatedBuildDetectorTest,
|
| - ::testing::Values(ExecutionMode::SYSTEM_LEVEL_SWITCH));
|
| -INSTANTIATE_TEST_CASE_P(IsMachineEnv,
|
| - DisableOutdatedBuildDetectorTest,
|
| - ::testing::Values(ExecutionMode::IS_MACHINE_ENV));
|
|
|