Index: chrome/installer/util/product_state_unittest.cc |
diff --git a/chrome/installer/util/product_state_unittest.cc b/chrome/installer/util/product_state_unittest.cc |
index 1b710e0f2d787e4c52542764d782bf522862e3c7..37fbc5dc1d54e216a6e09388dff1046f75d179f3 100644 |
--- a/chrome/installer/util/product_state_unittest.cc |
+++ b/chrome/installer/util/product_state_unittest.cc |
@@ -4,7 +4,6 @@ |
#include <windows.h> |
-#include "base/strings/utf_string_conversions.h" |
#include "base/test/test_reg_util_win.h" |
#include "base/version.h" |
#include "base/win/registry.h" |
@@ -14,76 +13,34 @@ |
#include "chrome/installer/util/util_constants.h" |
#include "testing/gtest/include/gtest/gtest.h" |
-using base::win::RegKey; |
-using installer::ProductState; |
-using registry_util::RegistryOverrideManager; |
+namespace installer { |
-class ProductStateTest : public testing::Test { |
+class ProductStateTest : public testing::TestWithParam<bool> { |
protected: |
- static void SetUpTestCase(); |
- static void TearDownTestCase(); |
- |
- void SetUp() override; |
- void TearDown() override; |
+ ProductStateTest(); |
void ApplyUninstallCommand(const wchar_t* exe_path, const wchar_t* args); |
void MinimallyInstallProduct(const wchar_t* version); |
- static BrowserDistribution* dist_; |
- bool system_install_; |
- HKEY overridden_; |
+ const bool system_install_; |
+ const HKEY overridden_; |
registry_util::RegistryOverrideManager registry_override_manager_; |
- RegKey clients_; |
- RegKey client_state_; |
+ base::win::RegKey clients_; |
+ base::win::RegKey client_state_; |
}; |
-BrowserDistribution* ProductStateTest::dist_; |
- |
-// static |
-void ProductStateTest::SetUpTestCase() { |
- testing::Test::SetUpTestCase(); |
- |
- // We'll use Chrome as our test subject. |
- dist_ = BrowserDistribution::GetSpecificDistribution( |
- BrowserDistribution::CHROME_BROWSER); |
-} |
- |
-// static |
-void ProductStateTest::TearDownTestCase() { |
- dist_ = NULL; |
- |
- testing::Test::TearDownTestCase(); |
-} |
- |
-void ProductStateTest::SetUp() { |
- testing::Test::SetUp(); |
- |
- // Create/open the keys for the product we'll test. |
- system_install_ = true; |
- overridden_ = (system_install_ ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER); |
- |
- // Override for test purposes. We don't use ScopedRegistryKeyOverride |
- // directly because it doesn't suit itself to our use here. |
- RegKey temp_key; |
- |
+ProductStateTest::ProductStateTest() |
+ : system_install_(GetParam()), |
+ overridden_(system_install_ ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER) { |
registry_override_manager_.OverrideRegistry(overridden_); |
+ BrowserDistribution* dist = BrowserDistribution::GetDistribution(); |
EXPECT_EQ(ERROR_SUCCESS, |
- clients_.Create(overridden_, dist_->GetVersionKey().c_str(), |
- KEY_ALL_ACCESS)); |
+ clients_.Create(overridden_, dist->GetVersionKey().c_str(), |
+ KEY_ALL_ACCESS | KEY_WOW64_32KEY)); |
EXPECT_EQ(ERROR_SUCCESS, |
- client_state_.Create(overridden_, dist_->GetStateKey().c_str(), |
- KEY_ALL_ACCESS)); |
-} |
- |
-void ProductStateTest::TearDown() { |
- // Done with the keys. |
- client_state_.Close(); |
- clients_.Close(); |
- overridden_ = NULL; |
- system_install_ = false; |
- |
- testing::Test::TearDown(); |
+ client_state_.Create(overridden_, dist->GetStateKey().c_str(), |
+ KEY_ALL_ACCESS | KEY_WOW64_32KEY)); |
} |
void ProductStateTest::MinimallyInstallProduct(const wchar_t* version) { |
@@ -94,32 +51,29 @@ void ProductStateTest::MinimallyInstallProduct(const wchar_t* version) { |
void ProductStateTest::ApplyUninstallCommand(const wchar_t* exe_path, |
const wchar_t* args) { |
if (exe_path == NULL) { |
- LONG result = client_state_.DeleteValue(installer::kUninstallStringField); |
+ LONG result = client_state_.DeleteValue(kUninstallStringField); |
EXPECT_TRUE(result == ERROR_SUCCESS || result == ERROR_FILE_NOT_FOUND); |
} else { |
EXPECT_EQ(ERROR_SUCCESS, |
- client_state_.WriteValue(installer::kUninstallStringField, |
- exe_path)); |
+ client_state_.WriteValue(kUninstallStringField, exe_path)); |
} |
if (args == NULL) { |
- LONG result = |
- client_state_.DeleteValue(installer::kUninstallArgumentsField); |
+ LONG result = client_state_.DeleteValue(kUninstallArgumentsField); |
EXPECT_TRUE(result == ERROR_SUCCESS || result == ERROR_FILE_NOT_FOUND); |
} else { |
EXPECT_EQ(ERROR_SUCCESS, |
- client_state_.WriteValue(installer::kUninstallArgumentsField, |
- args)); |
+ client_state_.WriteValue(kUninstallArgumentsField, args)); |
} |
} |
-TEST_F(ProductStateTest, InitializeInstalled) { |
+TEST_P(ProductStateTest, InitializeInstalled) { |
// Not installed. |
{ |
ProductState state; |
LONG result = clients_.DeleteValue(google_update::kRegVersionField); |
EXPECT_TRUE(result == ERROR_SUCCESS || result == ERROR_FILE_NOT_FOUND); |
- EXPECT_FALSE(state.Initialize(system_install_, dist_)); |
+ EXPECT_FALSE(state.Initialize(system_install_)); |
} |
// Empty version. |
@@ -127,7 +81,7 @@ TEST_F(ProductStateTest, InitializeInstalled) { |
ProductState state; |
LONG result = clients_.WriteValue(google_update::kRegVersionField, L""); |
EXPECT_TRUE(result == ERROR_SUCCESS || result == ERROR_FILE_NOT_FOUND); |
- EXPECT_FALSE(state.Initialize(system_install_, dist_)); |
+ EXPECT_FALSE(state.Initialize(system_install_)); |
} |
// Bogus version. |
@@ -136,7 +90,7 @@ TEST_F(ProductStateTest, InitializeInstalled) { |
LONG result = clients_.WriteValue(google_update::kRegVersionField, |
L"goofy"); |
EXPECT_TRUE(result == ERROR_SUCCESS || result == ERROR_FILE_NOT_FOUND); |
- EXPECT_FALSE(state.Initialize(system_install_, dist_)); |
+ EXPECT_FALSE(state.Initialize(system_install_)); |
} |
// Valid "pv" value. |
@@ -145,13 +99,13 @@ TEST_F(ProductStateTest, InitializeInstalled) { |
LONG result = clients_.WriteValue(google_update::kRegVersionField, |
L"10.0.47.0"); |
EXPECT_TRUE(result == ERROR_SUCCESS || result == ERROR_FILE_NOT_FOUND); |
- EXPECT_TRUE(state.Initialize(system_install_, dist_)); |
+ EXPECT_TRUE(state.Initialize(system_install_)); |
EXPECT_EQ("10.0.47.0", state.version().GetString()); |
} |
} |
// Test extraction of the "opv" value from the Clients key. |
-TEST_F(ProductStateTest, InitializeOldVersion) { |
+TEST_P(ProductStateTest, InitializeOldVersion) { |
MinimallyInstallProduct(L"10.0.1.1"); |
// No "opv" value. |
@@ -159,7 +113,7 @@ TEST_F(ProductStateTest, InitializeOldVersion) { |
ProductState state; |
LONG result = clients_.DeleteValue(google_update::kRegOldVersionField); |
EXPECT_TRUE(result == ERROR_SUCCESS || result == ERROR_FILE_NOT_FOUND); |
- EXPECT_TRUE(state.Initialize(system_install_, dist_)); |
+ EXPECT_TRUE(state.Initialize(system_install_)); |
EXPECT_TRUE(state.old_version() == NULL); |
} |
@@ -168,7 +122,7 @@ TEST_F(ProductStateTest, InitializeOldVersion) { |
ProductState state; |
LONG result = clients_.WriteValue(google_update::kRegOldVersionField, L""); |
EXPECT_TRUE(result == ERROR_SUCCESS || result == ERROR_FILE_NOT_FOUND); |
- EXPECT_TRUE(state.Initialize(system_install_, dist_)); |
+ EXPECT_TRUE(state.Initialize(system_install_)); |
EXPECT_TRUE(state.old_version() == NULL); |
} |
@@ -178,7 +132,7 @@ TEST_F(ProductStateTest, InitializeOldVersion) { |
LONG result = clients_.WriteValue(google_update::kRegOldVersionField, |
L"coming home"); |
EXPECT_TRUE(result == ERROR_SUCCESS || result == ERROR_FILE_NOT_FOUND); |
- EXPECT_TRUE(state.Initialize(system_install_, dist_)); |
+ EXPECT_TRUE(state.Initialize(system_install_)); |
EXPECT_TRUE(state.old_version() == NULL); |
} |
@@ -188,14 +142,14 @@ TEST_F(ProductStateTest, InitializeOldVersion) { |
LONG result = clients_.WriteValue(google_update::kRegOldVersionField, |
L"10.0.47.0"); |
EXPECT_TRUE(result == ERROR_SUCCESS || result == ERROR_FILE_NOT_FOUND); |
- EXPECT_TRUE(state.Initialize(system_install_, dist_)); |
+ EXPECT_TRUE(state.Initialize(system_install_)); |
EXPECT_TRUE(state.old_version() != NULL); |
EXPECT_EQ("10.0.47.0", state.old_version()->GetString()); |
} |
} |
// Test extraction of the "cmd" value from the Clients key. |
-TEST_F(ProductStateTest, InitializeRenameCmd) { |
+TEST_P(ProductStateTest, InitializeRenameCmd) { |
MinimallyInstallProduct(L"10.0.1.1"); |
// No "cmd" value. |
@@ -203,7 +157,7 @@ TEST_F(ProductStateTest, InitializeRenameCmd) { |
ProductState state; |
LONG result = clients_.DeleteValue(google_update::kRegRenameCmdField); |
EXPECT_TRUE(result == ERROR_SUCCESS || result == ERROR_FILE_NOT_FOUND); |
- EXPECT_TRUE(state.Initialize(system_install_, dist_)); |
+ EXPECT_TRUE(state.Initialize(system_install_)); |
EXPECT_TRUE(state.rename_cmd().empty()); |
} |
@@ -212,7 +166,7 @@ TEST_F(ProductStateTest, InitializeRenameCmd) { |
ProductState state; |
LONG result = clients_.WriteValue(google_update::kRegRenameCmdField, L""); |
EXPECT_TRUE(result == ERROR_SUCCESS || result == ERROR_FILE_NOT_FOUND); |
- EXPECT_TRUE(state.Initialize(system_install_, dist_)); |
+ EXPECT_TRUE(state.Initialize(system_install_)); |
EXPECT_TRUE(state.rename_cmd().empty()); |
} |
@@ -222,13 +176,13 @@ TEST_F(ProductStateTest, InitializeRenameCmd) { |
LONG result = clients_.WriteValue(google_update::kRegRenameCmdField, |
L"spam.exe --spamalot"); |
EXPECT_TRUE(result == ERROR_SUCCESS || result == ERROR_FILE_NOT_FOUND); |
- EXPECT_TRUE(state.Initialize(system_install_, dist_)); |
+ EXPECT_TRUE(state.Initialize(system_install_)); |
EXPECT_EQ(L"spam.exe --spamalot", state.rename_cmd()); |
} |
} |
// Test extraction of the "ap" value from the ClientState key. |
-TEST_F(ProductStateTest, InitializeChannelInfo) { |
+TEST_P(ProductStateTest, InitializeChannelInfo) { |
MinimallyInstallProduct(L"10.0.1.1"); |
// No "ap" value. |
@@ -236,7 +190,7 @@ TEST_F(ProductStateTest, InitializeChannelInfo) { |
ProductState state; |
LONG result = client_state_.DeleteValue(google_update::kRegApField); |
EXPECT_TRUE(result == ERROR_SUCCESS || result == ERROR_FILE_NOT_FOUND); |
- EXPECT_TRUE(state.Initialize(system_install_, dist_)); |
+ EXPECT_TRUE(state.Initialize(system_install_)); |
EXPECT_TRUE(state.channel().value().empty()); |
} |
@@ -245,7 +199,7 @@ TEST_F(ProductStateTest, InitializeChannelInfo) { |
ProductState state; |
LONG result = client_state_.WriteValue(google_update::kRegApField, L""); |
EXPECT_TRUE(result == ERROR_SUCCESS || result == ERROR_FILE_NOT_FOUND); |
- EXPECT_TRUE(state.Initialize(system_install_, dist_)); |
+ EXPECT_TRUE(state.Initialize(system_install_)); |
EXPECT_TRUE(state.channel().value().empty()); |
} |
@@ -254,21 +208,21 @@ TEST_F(ProductStateTest, InitializeChannelInfo) { |
ProductState state; |
LONG result = client_state_.WriteValue(google_update::kRegApField, L"spam"); |
EXPECT_TRUE(result == ERROR_SUCCESS || result == ERROR_FILE_NOT_FOUND); |
- EXPECT_TRUE(state.Initialize(system_install_, dist_)); |
+ EXPECT_TRUE(state.Initialize(system_install_)); |
EXPECT_EQ(L"spam", state.channel().value()); |
} |
} |
// Test extraction of the uninstall command and arguments from the ClientState |
// key. |
-TEST_F(ProductStateTest, InitializeUninstallCommand) { |
+TEST_P(ProductStateTest, InitializeUninstallCommand) { |
MinimallyInstallProduct(L"10.0.1.1"); |
// No uninstall command. |
{ |
ProductState state; |
ApplyUninstallCommand(NULL, NULL); |
- EXPECT_TRUE(state.Initialize(system_install_, dist_)); |
+ EXPECT_TRUE(state.Initialize(system_install_)); |
EXPECT_TRUE(state.GetSetupPath().empty()); |
EXPECT_TRUE(state.uninstall_command().GetCommandLineString().empty()); |
EXPECT_TRUE(state.uninstall_command().GetSwitches().empty()); |
@@ -278,7 +232,7 @@ TEST_F(ProductStateTest, InitializeUninstallCommand) { |
{ |
ProductState state; |
ApplyUninstallCommand(L"", L""); |
- EXPECT_TRUE(state.Initialize(system_install_, dist_)); |
+ EXPECT_TRUE(state.Initialize(system_install_)); |
EXPECT_TRUE(state.GetSetupPath().empty()); |
EXPECT_TRUE(state.uninstall_command().GetCommandLineString().empty()); |
EXPECT_TRUE(state.uninstall_command().GetSwitches().empty()); |
@@ -288,7 +242,7 @@ TEST_F(ProductStateTest, InitializeUninstallCommand) { |
{ |
ProductState state; |
ApplyUninstallCommand(NULL, L"--uninstall"); |
- EXPECT_TRUE(state.Initialize(system_install_, dist_)); |
+ EXPECT_TRUE(state.Initialize(system_install_)); |
EXPECT_TRUE(state.GetSetupPath().empty()); |
EXPECT_EQ(L" --uninstall", |
state.uninstall_command().GetCommandLineString()); |
@@ -299,7 +253,7 @@ TEST_F(ProductStateTest, InitializeUninstallCommand) { |
{ |
ProductState state; |
ApplyUninstallCommand(L"setup.exe", NULL); |
- EXPECT_TRUE(state.Initialize(system_install_, dist_)); |
+ EXPECT_TRUE(state.Initialize(system_install_)); |
EXPECT_EQ(L"setup.exe", state.GetSetupPath().value()); |
EXPECT_EQ(L"setup.exe", state.uninstall_command().GetCommandLineString()); |
EXPECT_TRUE(state.uninstall_command().GetSwitches().empty()); |
@@ -309,7 +263,7 @@ TEST_F(ProductStateTest, InitializeUninstallCommand) { |
{ |
ProductState state; |
ApplyUninstallCommand(L"set up.exe", NULL); |
- EXPECT_TRUE(state.Initialize(system_install_, dist_)); |
+ EXPECT_TRUE(state.Initialize(system_install_)); |
EXPECT_EQ(L"set up.exe", state.GetSetupPath().value()); |
EXPECT_EQ(L"\"set up.exe\"", |
state.uninstall_command().GetCommandLineString()); |
@@ -320,7 +274,7 @@ TEST_F(ProductStateTest, InitializeUninstallCommand) { |
{ |
ProductState state; |
ApplyUninstallCommand(L"setup.exe", L"--uninstall"); |
- EXPECT_TRUE(state.Initialize(system_install_, dist_)); |
+ EXPECT_TRUE(state.Initialize(system_install_)); |
EXPECT_EQ(L"setup.exe", state.GetSetupPath().value()); |
EXPECT_EQ(L"setup.exe --uninstall", |
state.uninstall_command().GetCommandLineString()); |
@@ -329,7 +283,7 @@ TEST_F(ProductStateTest, InitializeUninstallCommand) { |
} |
// Test extraction of the msi marker from the ClientState key. |
-TEST_F(ProductStateTest, InitializeMsi) { |
+TEST_P(ProductStateTest, InitializeMsi) { |
MinimallyInstallProduct(L"10.0.1.1"); |
// No msi marker. |
@@ -337,7 +291,7 @@ TEST_F(ProductStateTest, InitializeMsi) { |
ProductState state; |
LONG result = client_state_.DeleteValue(google_update::kRegMSIField); |
EXPECT_TRUE(result == ERROR_SUCCESS || result == ERROR_FILE_NOT_FOUND); |
- EXPECT_TRUE(state.Initialize(system_install_, dist_)); |
+ EXPECT_TRUE(state.Initialize(system_install_)); |
EXPECT_FALSE(state.is_msi()); |
} |
@@ -347,7 +301,7 @@ TEST_F(ProductStateTest, InitializeMsi) { |
EXPECT_EQ(ERROR_SUCCESS, |
client_state_.WriteValue(google_update::kRegMSIField, |
static_cast<DWORD>(0))); |
- EXPECT_TRUE(state.Initialize(system_install_, dist_)); |
+ EXPECT_TRUE(state.Initialize(system_install_)); |
EXPECT_FALSE(state.is_msi()); |
} |
@@ -357,7 +311,7 @@ TEST_F(ProductStateTest, InitializeMsi) { |
EXPECT_EQ(ERROR_SUCCESS, |
client_state_.WriteValue(google_update::kRegMSIField, |
static_cast<DWORD>(1))); |
- EXPECT_TRUE(state.Initialize(system_install_, dist_)); |
+ EXPECT_TRUE(state.Initialize(system_install_)); |
EXPECT_TRUE(state.is_msi()); |
} |
@@ -367,7 +321,7 @@ TEST_F(ProductStateTest, InitializeMsi) { |
EXPECT_EQ(ERROR_SUCCESS, |
client_state_.WriteValue(google_update::kRegMSIField, |
static_cast<DWORD>(47))); |
- EXPECT_TRUE(state.Initialize(system_install_, dist_)); |
+ EXPECT_TRUE(state.Initialize(system_install_)); |
EXPECT_TRUE(state.is_msi()); |
} |
@@ -377,20 +331,20 @@ TEST_F(ProductStateTest, InitializeMsi) { |
EXPECT_EQ(ERROR_SUCCESS, |
client_state_.WriteValue(google_update::kRegMSIField, |
L"bogus!")); |
- EXPECT_TRUE(state.Initialize(system_install_, dist_)); |
+ EXPECT_TRUE(state.Initialize(system_install_)); |
EXPECT_FALSE(state.is_msi()); |
} |
} |
// Test detection of multi-install. |
-TEST_F(ProductStateTest, InitializeMultiInstall) { |
+TEST_P(ProductStateTest, InitializeMultiInstall) { |
MinimallyInstallProduct(L"10.0.1.1"); |
// No uninstall command means single install. |
{ |
ProductState state; |
ApplyUninstallCommand(NULL, NULL); |
- EXPECT_TRUE(state.Initialize(system_install_, dist_)); |
+ EXPECT_TRUE(state.Initialize(system_install_)); |
EXPECT_FALSE(state.is_multi_install()); |
} |
@@ -398,7 +352,7 @@ TEST_F(ProductStateTest, InitializeMultiInstall) { |
{ |
ProductState state; |
ApplyUninstallCommand(L"setup.exe", L"--uninstall"); |
- EXPECT_TRUE(state.Initialize(system_install_, dist_)); |
+ EXPECT_TRUE(state.Initialize(system_install_)); |
EXPECT_FALSE(state.is_multi_install()); |
} |
@@ -407,7 +361,12 @@ TEST_F(ProductStateTest, InitializeMultiInstall) { |
ProductState state; |
ApplyUninstallCommand(L"setup.exe", |
L"--uninstall --chrome --multi-install"); |
- EXPECT_TRUE(state.Initialize(system_install_, dist_)); |
+ EXPECT_TRUE(state.Initialize(system_install_)); |
EXPECT_TRUE(state.is_multi_install()); |
} |
} |
+ |
+INSTANTIATE_TEST_CASE_P(UserLevel, ProductStateTest, ::testing::Values(false)); |
+INSTANTIATE_TEST_CASE_P(SystemLevel, ProductStateTest, ::testing::Values(true)); |
+ |
+} // namespace installer |