Chromium Code Reviews| Index: chrome/test/mini_installer_test/test.cc |
| =================================================================== |
| --- chrome/test/mini_installer_test/test.cc (revision 29665) |
| +++ chrome/test/mini_installer_test/test.cc (working copy) |
| @@ -1,189 +1,150 @@ |
| // 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: |
| - void CleanTheSystem() { |
| - ChromeMiniInstaller userinstall(mini_installer_constants::kUserInstall); |
| + // 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: |
| + static void CleanTheSystem() { |
|
kuchhal
2009/10/27 18:57:09
why static?
|
| + 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) { |
| + // 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"); |
| + printf("These tests don't run on this platform.\n"); |
| exit(0); |
| } |
| } |
| - virtual void TearDown() { |
| - if (win_util::GetWinVersion() < win_util::WINVERSION_VISTA) { |
| - PlatformThread::Sleep(2000); |
| - CleanTheSystem(); |
| - } else { |
| - printf("These tests don't run on Vista\n"); |
| - exit(0); |
| - } |
| + |
| + static void TearDownTestCase() { |
|
kuchhal
2009/10/27 18:57:09
Why static and why TearDownTestCase and not just T
kkania
2009/10/27 19:45:02
CleanTheSystem is called in SetUp already. I use T
|
| + // Uninstall Chrome from the system after tests are run. |
| + CleanTheSystem(); |
| } |
| }; |
| }; |
| -// 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, FullOverPreviousFullSys) { |
| + sys_inst_->OverInstallOnFullInstaller(kFullInstall); |
| } |
| -TEST_F(MiniInstallTest, |
| - InstallLatestDevFullInstallerOverPreviousFullDevInstallerSystemLevel) { |
| - ChromeMiniInstaller installer(mini_installer_constants::kSystemInstall); |
| - installer.OverInstallOnFullInstaller(mini_installer_constants::kFullInstall, |
| - mini_installer_constants::kDevChannelBuild); |
| +// Overinstall diff installer. |
| +TEST_F(MiniInstallTest, DiffOverPreviousFullUser) { |
| + user_inst_->OverInstallOnFullInstaller(kDiffInstall); |
| } |
| - |
| -TEST_F(MiniInstallTest, |
| - InstallLatestDevDiffInstallerOverPreviousFullDevInstaller) { |
| - ChromeMiniInstaller installer(mini_installer_constants::kUserInstall); |
| - installer.OverInstallOnFullInstaller(mini_installer_constants::kDiffInstall, |
| - mini_installer_constants::kDevChannelBuild); |
| +TEST_F(MiniInstallTest, DiffOverPreviousFullSys) { |
| + sys_inst_->OverInstallOnFullInstaller(kDiffInstall); |
| } |
| -TEST_F(MiniInstallTest, |
| - InstallLatestDevDiffInstallerOverPreviousFullDevInstallerSystemLevel) { |
| - ChromeMiniInstaller installer(mini_installer_constants::kSystemInstall); |
| - installer.OverInstallOnFullInstaller(mini_installer_constants::kDiffInstall, |
| - mini_installer_constants::kDevChannelBuild); |
| +// Repair version folder. |
| +TEST_F(MiniInstallTest, RepairFolderOnFullUser) { |
| + user_inst_->Repair(ChromeMiniInstaller::VERSION_FOLDER); |
| } |
| - |
| -TEST_F(MiniInstallTest, |
| - InstallLatestFullStableInstallerOverPreviousFullStableInstaller) { |
| - ChromeMiniInstaller installer(mini_installer_constants::kUserInstall); |
| - installer.OverInstallOnFullInstaller(mini_installer_constants::kFullInstall, |
| - mini_installer_constants::kStableChannelBuild); |
| +TEST_F(MiniInstallTest, RepairFolderOnFullSys) { |
| + sys_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); |
| +// Repair registry. |
| +TEST_F(MiniInstallTest, RepairRegistryOnFullUser) { |
| + user_inst_->Repair(ChromeMiniInstaller::REGISTRY); |
| } |
| - |
| -TEST_F(MiniInstallTest, |
| - InstallLatestDiffStableInstallerOverPreviousFullStableInstaller) { |
| - ChromeMiniInstaller installer(mini_installer_constants::kUserInstall); |
| - installer.OverInstallOnFullInstaller(mini_installer_constants::kDiffInstall, |
| - mini_installer_constants::kStableChannelBuild); |
| +TEST_F(MiniInstallTest, RepairRegistryOnFullSys) { |
| + sys_inst_->Repair(ChromeMiniInstaller::REGISTRY); |
| } |
| -TEST_F(MiniInstallTest, |
| - InstallLatestDiffStableInstallerOverPreviousFullStableInstallerSystemLevel) { |
| - ChromeMiniInstaller installer(mini_installer_constants::kSystemInstall); |
| - installer.OverInstallOnFullInstaller(mini_installer_constants::kDiffInstall, |
| - mini_installer_constants::kStableChannelBuild); |
| +// Install standalone. |
| +TEST_F(MiniInstallTest, InstallStandaloneUser) { |
| + user_inst_->InstallStandaloneInstaller(); |
| } |
| -TEST_F(MiniInstallTest, StandaloneInstallerTest) { |
| - ChromeMiniInstaller installer(mini_installer_constants::kUserInstall); |
| - installer.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); |
| + user_inst_->OverInstall(); |
| } |
| - |
| -// 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); |
| -} |
| #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()); |