diff options
Diffstat (limited to 'chrome/test/mini_installer_test/test.cc')
-rw-r--r-- | chrome/test/mini_installer_test/test.cc | 206 |
1 files changed, 81 insertions, 125 deletions
diff --git a/chrome/test/mini_installer_test/test.cc b/chrome/test/mini_installer_test/test.cc index 6c93acb..345a24d 100644 --- a/chrome/test/mini_installer_test/test.cc +++ b/chrome/test/mini_installer_test/test.cc @@ -1,189 +1,145 @@ // Copyright (c) 2009 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/command_line.h" #include "base/platform_thread.h" +#include "base/scoped_ptr.h" #include "base/win_util.h" #include "chrome/installer/util/install_util.h" #include "chrome/test/mini_installer_test/mini_installer_test_constants.h" +#include "chrome/test/mini_installer_test/mini_installer_test_util.h" #include "testing/gtest/include/gtest/gtest.h" #include "chrome_mini_installer.h" +// Although the C++ style guide disallows use of namespace directive, use +// here because this is not only a .cc file, but also a test. +using namespace mini_installer_constants; + namespace { + class MiniInstallTest : public testing::Test { protected: + // Whether these tests should be run regardless of our running platform. + bool force_tests_; + + // Installers created in test fixture setup for convenience. + scoped_ptr<ChromeMiniInstaller> user_inst_, sys_inst_; + + public: void CleanTheSystem() { - ChromeMiniInstaller userinstall(mini_installer_constants::kUserInstall); + ChromeMiniInstaller userinstall(kUserInstall); userinstall.UnInstall(); - ChromeMiniInstaller systeminstall( - mini_installer_constants::kSystemInstall); - systeminstall.UnInstall(); + ChromeMiniInstaller systeminstall(kSystemInstall); + systeminstall.UnInstall(); } + virtual void SetUp() { - if (win_util::GetWinVersion() < win_util::WINVERSION_VISTA) { - CleanTheSystem(); - } else { - printf("These tests don't run on Vista\n"); - exit(0); - } - } - virtual void TearDown() { - if (win_util::GetWinVersion() < win_util::WINVERSION_VISTA) { - PlatformThread::Sleep(2000); + // Parse test command-line arguments. + const CommandLine* cmd = CommandLine::ForCurrentProcess(); + std::wstring build = cmd->GetSwitchValue(L"build"); + if (build.empty()) + build = L"latest"; + + force_tests_ = cmd->HasSwitch(L"force"); + + if (win_util::GetWinVersion() < win_util::WINVERSION_VISTA || + force_tests_) { CleanTheSystem(); + // Separate the test output from cleaning output + printf("\nBEGIN test----------------------------------------\n"); + + // Create a few differently configured installers that are used in + // the tests, for convenience. + user_inst_.reset(new ChromeMiniInstaller(kUserInstall)); + user_inst_->SetBuildUnderTest(build); + sys_inst_.reset(new ChromeMiniInstaller(kSystemInstall)); + sys_inst_->SetBuildUnderTest(build); + } else { - printf("These tests don't run on Vista\n"); - exit(0); + printf("These tests don't run on this platform.\n"); + exit(1); } } }; }; -// TODO(nsylvain): Change this for GOOGLE_CHROME_BUILD when we have the -// previous installers accessible from our Google Chrome continuous buildbot. -#if defined(OFFICIAL_BUILD) -TEST_F(MiniInstallTest, InstallLatestDevFullInstallerTest) { - ChromeMiniInstaller installer(mini_installer_constants::kUserInstall); - installer.InstallFullInstaller(false, - mini_installer_constants::kDevChannelBuild); -} +#if defined(GOOGLE_CHROME_BUILD) +// Could use a parameterized gtest to slim down this list of tests, but since +// these tests will often be run manually, don't want to have obscure test +// names. -TEST_F(MiniInstallTest, InstallLatestDevFullInstallerTestSystemLevel) { - ChromeMiniInstaller installer(mini_installer_constants::kSystemInstall); - installer.InstallFullInstaller(false, - mini_installer_constants::kDevChannelBuild); +// Install full installer. +TEST_F(MiniInstallTest, FullInstallerUser) { + user_inst_->InstallFullInstaller(false); } - -TEST_F(MiniInstallTest, InstallLatestStableFullInstallerTest) { - ChromeMiniInstaller installer(mini_installer_constants::kUserInstall); - installer.InstallFullInstaller(false, - mini_installer_constants::kStableChannelBuild); +TEST_F(MiniInstallTest, FullInstallerSys) { + sys_inst_->InstallFullInstaller(false); } -TEST_F(MiniInstallTest, InstallLatestStableFullInstallerTestSystemLevel) { - ChromeMiniInstaller installer(mini_installer_constants::kSystemInstall); - installer.InstallFullInstaller(false, - mini_installer_constants::kStableChannelBuild); +// Overinstall full installer. +TEST_F(MiniInstallTest, FullOverPreviousFullUser) { + user_inst_->OverInstallOnFullInstaller(kFullInstall); } - -TEST_F(MiniInstallTest, - InstallLatestDevFullInstallerOverPreviousFullDevInstaller) { - ChromeMiniInstaller installer(mini_installer_constants::kUserInstall); - installer.OverInstallOnFullInstaller(mini_installer_constants::kFullInstall, - mini_installer_constants::kDevChannelBuild); -} - -TEST_F(MiniInstallTest, - InstallLatestDevFullInstallerOverPreviousFullDevInstallerSystemLevel) { - ChromeMiniInstaller installer(mini_installer_constants::kSystemInstall); - installer.OverInstallOnFullInstaller(mini_installer_constants::kFullInstall, - mini_installer_constants::kDevChannelBuild); +TEST_F(MiniInstallTest, FullOverPreviousFullSys) { + sys_inst_->OverInstallOnFullInstaller(kFullInstall); } -TEST_F(MiniInstallTest, - InstallLatestDevDiffInstallerOverPreviousFullDevInstaller) { - ChromeMiniInstaller installer(mini_installer_constants::kUserInstall); - installer.OverInstallOnFullInstaller(mini_installer_constants::kDiffInstall, - mini_installer_constants::kDevChannelBuild); +// Overinstall diff installer. +TEST_F(MiniInstallTest, DiffOverPreviousFullUser) { + user_inst_->OverInstallOnFullInstaller(kDiffInstall); } - -TEST_F(MiniInstallTest, - InstallLatestDevDiffInstallerOverPreviousFullDevInstallerSystemLevel) { - ChromeMiniInstaller installer(mini_installer_constants::kSystemInstall); - installer.OverInstallOnFullInstaller(mini_installer_constants::kDiffInstall, - mini_installer_constants::kDevChannelBuild); +TEST_F(MiniInstallTest, DiffOverPreviousFullSys) { + sys_inst_->OverInstallOnFullInstaller(kDiffInstall); } -TEST_F(MiniInstallTest, - InstallLatestFullStableInstallerOverPreviousFullStableInstaller) { - ChromeMiniInstaller installer(mini_installer_constants::kUserInstall); - installer.OverInstallOnFullInstaller(mini_installer_constants::kFullInstall, - mini_installer_constants::kStableChannelBuild); +// Repair version folder. +TEST_F(MiniInstallTest, RepairFolderOnFullUser) { + user_inst_->Repair(ChromeMiniInstaller::VERSION_FOLDER); } - -TEST_F(MiniInstallTest, - InstallLatestFullStableInstallerOverPreviousFullStableInstallerSystemLevel) { - ChromeMiniInstaller installer(mini_installer_constants::kSystemInstall); - installer.OverInstallOnFullInstaller(mini_installer_constants::kFullInstall, - mini_installer_constants::kStableChannelBuild); +TEST_F(MiniInstallTest, RepairFolderOnFullSys) { + sys_inst_->Repair(ChromeMiniInstaller::VERSION_FOLDER); } -TEST_F(MiniInstallTest, - InstallLatestDiffStableInstallerOverPreviousFullStableInstaller) { - ChromeMiniInstaller installer(mini_installer_constants::kUserInstall); - installer.OverInstallOnFullInstaller(mini_installer_constants::kDiffInstall, - mini_installer_constants::kStableChannelBuild); +// Repair registry. +TEST_F(MiniInstallTest, RepairRegistryOnFullUser) { + user_inst_->Repair(ChromeMiniInstaller::REGISTRY); } - -TEST_F(MiniInstallTest, - InstallLatestDiffStableInstallerOverPreviousFullStableInstallerSystemLevel) { - ChromeMiniInstaller installer(mini_installer_constants::kSystemInstall); - installer.OverInstallOnFullInstaller(mini_installer_constants::kDiffInstall, - mini_installer_constants::kStableChannelBuild); +TEST_F(MiniInstallTest, RepairRegistryOnFullSys) { + sys_inst_->Repair(ChromeMiniInstaller::REGISTRY); } -TEST_F(MiniInstallTest, StandaloneInstallerTest) { - ChromeMiniInstaller installer(mini_installer_constants::kUserInstall); - installer.InstallStandaloneInstaller(); +// Install standalone. +TEST_F(MiniInstallTest, InstallStandaloneUser) { + user_inst_->InstallStandaloneInstaller(); } // This test doesn't make sense. Disabling for now. TEST_F(MiniInstallTest, DISABLED_MiniInstallerOverChromeMetaInstallerTest) { - ChromeMiniInstaller installer(mini_installer_constants::kUserInstall); - installer.OverInstall(mini_installer_constants::kDevChannelBuild); + user_inst_->OverInstall(); } // Encountering issue 9593. Disabling temporarily. TEST_F(MiniInstallTest, DISABLED_InstallLatestStableFullInstallerOverChromeMetaInstaller) { - ChromeMiniInstaller installer(mini_installer_constants::kUserInstall); - installer.OverInstall(mini_installer_constants::kStableChannelBuild); + user_inst_->OverInstall(); } // Encountering issue 9593. Disabling temporarily. TEST_F(MiniInstallTest, DISABLED_InstallLatestDevFullInstallerOverChromeMetaInstallerTest) { - ChromeMiniInstaller installer(mini_installer_constants::kUserInstall); - installer.OverInstall(mini_installer_constants::kDevChannelBuild); -} - -// Repair testcases - -TEST_F(MiniInstallTest, RepairFolderTestOnLatestDevFullInstaller) { - ChromeMiniInstaller installer(mini_installer_constants::kUserInstall); - installer.Repair(ChromeMiniInstaller::VERSION_FOLDER, - mini_installer_constants::kDevChannelBuild); -} - -TEST_F(MiniInstallTest, RepairFolderTestOnLatestDevFullInstallerSystemLevel) { - ChromeMiniInstaller installer(mini_installer_constants::kSystemInstall); - installer.Repair(ChromeMiniInstaller::VERSION_FOLDER, - mini_installer_constants::kDevChannelBuild); -} - -TEST_F(MiniInstallTest, RepairRegistryTestOnLatestDevFullInstaller) { - ChromeMiniInstaller installer(mini_installer_constants::kUserInstall); - installer.Repair(ChromeMiniInstaller::REGISTRY, - mini_installer_constants::kDevChannelBuild); -} - -TEST_F(MiniInstallTest, RepairRegistryTestOnLatestDevFullInstallerSystemLevel) { - ChromeMiniInstaller installer(mini_installer_constants::kSystemInstall); - installer.Repair(ChromeMiniInstaller::REGISTRY, - mini_installer_constants::kDevChannelBuild); + user_inst_->OverInstall(); } #endif -TEST_F(MiniInstallTest, InstallLatestMiniInstallerAtSystemLevel) { - ChromeMiniInstaller installer(mini_installer_constants::kSystemInstall); - installer.Install(); +TEST_F(MiniInstallTest, InstallMiniInstallerSys) { + sys_inst_->Install(); } -TEST_F(MiniInstallTest, InstallLatestMiniInstallerAtUserLevel) { - ChromeMiniInstaller installer(mini_installer_constants::kUserInstall); - installer.Install(); +TEST_F(MiniInstallTest, InstallMiniInstallerUser) { + user_inst_->Install(); } -TEST(InstallUtilTests, MiniInstallTestValidWindowsVersion) { +TEST_F(MiniInstallTest, MiniInstallTestValidWindowsVersion) { // We run the tests on all supported OSes. // Make sure the code agrees. EXPECT_TRUE(InstallUtil::IsOSSupported()); |