Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1336)

Unified Diff: chrome/installer/mini_installer/configuration_test.cc

Issue 2507293005: Force migrate all clients from multi-install back to single-install. (Closed)
Patch Set: mini_installer too Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/installer/mini_installer/configuration_test.cc
diff --git a/chrome/installer/mini_installer/configuration_test.cc b/chrome/installer/mini_installer/configuration_test.cc
index 3d9766e97cdd788eade6e874169b7542b2deb3d3..02cf2fc3b360a2106e170e07e5fbdafb1a0d1742 100644
--- a/chrome/installer/mini_installer/configuration_test.cc
+++ b/chrome/installer/mini_installer/configuration_test.cc
@@ -8,13 +8,13 @@
#include <stdlib.h>
#include <memory>
+#include <vector>
#include "base/environment.h"
#include "chrome/installer/mini_installer/appid.h"
+#include "chrome/installer/mini_installer/mini_installer_constants.h"
#include "testing/gtest/include/gtest/gtest.h"
-using mini_installer::Configuration;
-
namespace {
// A helper class to set the "GoogleUpdateIsMachine" environment variable.
@@ -35,40 +35,62 @@ class ScopedGoogleUpdateIsMachine {
} // namespace
+namespace mini_installer {
+
class TestConfiguration : public Configuration {
public:
- explicit TestConfiguration(const wchar_t* command_line)
- : Configuration(),
- open_registry_key_result_(false),
- read_registry_value_result_(0),
- read_registry_value_(L"") {
- Initialize(command_line);
- }
- explicit TestConfiguration(const wchar_t* command_line,
- LONG ret, const wchar_t* value)
- : Configuration(),
- open_registry_key_result_(true),
- read_registry_value_result_(ret),
- read_registry_value_(value) {
+ using RegistryLocation = Configuration::RegistryLocation;
gab 2016/12/12 21:38:16 Shouldn't this also be inherited?
grt (UTC plus 2) 2016/12/13 09:20:37 This was making the type public for consumers of t
+ TestConfiguration() {}
gab 2016/12/12 21:38:16 = default;
grt (UTC plus 2) 2016/12/13 09:20:37 Removed
+ explicit TestConfiguration(const wchar_t* command_line) : Configuration() {
gab 2016/12/12 21:38:16 Isn't ": Configuration()" implicit anyways?
grt (UTC plus 2) 2016/12/13 09:20:37 Yes. The original author must have liked being exp
Initialize(command_line);
}
- void SetRegistryResults(bool openkey, LONG ret, const wchar_t* value) {
+ void AddRegistryValueResult(RegistryLocation location,
+ const wchar_t* app_guid,
+ const wchar_t* value_name,
+ LONG result,
+ const wchar_t* value) {
+ registry_results_.emplace_back(location, app_guid, value_name, result,
+ value);
}
- private:
- bool open_registry_key_result_;
- LONG read_registry_value_result_;
- const wchar_t* read_registry_value_ = L"";
-
void Initialize(const wchar_t* command_line) {
Clear();
ASSERT_TRUE(ParseCommandLine(command_line));
}
- bool ReadClientStateRegistryValue(
- const HKEY root_key, const wchar_t* app_guid,
- LONG* retval, ValueString& value) override {
- *retval = read_registry_value_result_;
- value.assign(read_registry_value_);
- return open_registry_key_result_;
+
+ private:
+ struct RegistryResult {
+ RegistryLocation registry_location;
+ const wchar_t* app_guid;
+ const wchar_t* value_name;
+ LONG result;
+ const wchar_t* value;
+ RegistryResult(RegistryLocation location,
+ const wchar_t* app_guid,
+ const wchar_t* value_name,
+ LONG result,
+ const wchar_t* value)
+ : registry_location(location),
+ app_guid(app_guid),
+ value_name(value_name),
+ result(result),
+ value(value) {}
+ };
+ std::vector<RegistryResult> registry_results_;
+
+ LONG ReadRegistryValue(RegistryLocation location,
+ const wchar_t* app_guid,
+ const wchar_t* value_name,
+ ValueString* value) const override {
+ for (const auto& result : registry_results_) {
+ if (result.registry_location == location &&
+ !::wcscmp(result.app_guid, app_guid) &&
+ !::wcscmp(result.value_name, value_name)) {
+ if (result.value)
+ value->assign(result.value);
+ return result.result;
+ }
+ }
+ return ERROR_FILE_NOT_FOUND;
}
};
@@ -115,49 +137,63 @@ TEST(MiniInstallerConfigurationTest, CommandLine) {
}
}
-TEST(MiniInstallerConfigurationTest, ChromeAppGuid) {
- EXPECT_TRUE(std::wstring(google_update::kAppGuid) ==
- TestConfiguration(L"spam.exe").chrome_app_guid());
- EXPECT_TRUE(std::wstring(google_update::kAppGuid) ==
- TestConfiguration(L"spam.exe --chrome").chrome_app_guid());
- EXPECT_TRUE(std::wstring(google_update::kSxSAppGuid) ==
- TestConfiguration(L"spam.exe --chrome-sxs").chrome_app_guid());
- EXPECT_TRUE(std::wstring(google_update::kMultiInstallAppGuid) ==
- TestConfiguration(L"spam.exe --multi-install --chrome")
- .chrome_app_guid());
- EXPECT_TRUE(std::wstring(google_update::kMultiInstallAppGuid) ==
- TestConfiguration(L"spam.exe --multi-install --chrome",
- ERROR_INVALID_FUNCTION, L"")
- .chrome_app_guid());
- EXPECT_TRUE(std::wstring(google_update::kAppGuid) ==
- TestConfiguration(L"spam.exe --multi-install --chrome",
- ERROR_FILE_NOT_FOUND, L"")
- .chrome_app_guid());
- EXPECT_TRUE(std::wstring(google_update::kAppGuid) ==
- TestConfiguration(L"spam.exe --multi-install --chrome",
- ERROR_SUCCESS, L"foo-bar")
- .chrome_app_guid());
- EXPECT_TRUE(std::wstring(google_update::kMultiInstallAppGuid) ==
- TestConfiguration(L"spam.exe --multi-install --chrome",
- ERROR_SUCCESS, L"foo-multi")
- .chrome_app_guid());
-}
+TEST(MiniInstallerConfigurationTest, IsUpdatingMultiChrome) {
+#if defined(GOOGLE_CHROME_BUILD)
+ EXPECT_FALSE(TestConfiguration(L"spam.exe").is_updating_multi_chrome());
+ EXPECT_FALSE(
+ TestConfiguration(L"spam.exe --chrome-sxs").is_updating_multi_chrome());
+ EXPECT_FALSE(TestConfiguration(L"spam.exe --multi-install --chrome")
+ .is_updating_multi_chrome());
+ EXPECT_FALSE(TestConfiguration(L"spam.exe --multi-install")
+ .is_updating_multi_chrome());
-TEST(MiniInstallerConfigurationTest, HasChrome) {
- EXPECT_TRUE(TestConfiguration(L"spam.exe").has_chrome());
- EXPECT_TRUE(TestConfiguration(L"spam.exe --chrome").has_chrome());
- EXPECT_TRUE(TestConfiguration(L"spam.exe --multi-install --chrome")
- .has_chrome());
- EXPECT_FALSE(TestConfiguration(L"spam.exe --multi-install").has_chrome());
+ {
+ TestConfiguration configuration;
+ configuration.AddRegistryValueResult(
+ TestConfiguration::RegistryLocation::CLIENTS_KEY,
+ google_update::kAppGuid, kPvRegistryValue, ERROR_SUCCESS, L"4.3.2.1");
+ configuration.AddRegistryValueResult(
+ TestConfiguration::RegistryLocation::CLIENT_STATE_KEY,
+ google_update::kAppGuid, kUninstallArgumentsRegistryValue,
+ ERROR_SUCCESS, L"--uninstall --multi-install");
+ configuration.Initialize(L"spam.exe");
+ EXPECT_TRUE(configuration.is_updating_multi_chrome());
+ }
+
+ {
+ TestConfiguration configuration;
+ configuration.AddRegistryValueResult(
+ TestConfiguration::RegistryLocation::CLIENTS_KEY,
+ google_update::kAppGuid, kPvRegistryValue, ERROR_SUCCESS, L"4.3.2.1");
+ configuration.AddRegistryValueResult(
+ TestConfiguration::RegistryLocation::CLIENT_STATE_KEY,
+ google_update::kAppGuid, kUninstallArgumentsRegistryValue,
+ ERROR_SUCCESS, L"--uninstall");
+ configuration.Initialize(L"spam.exe");
+ EXPECT_FALSE(configuration.is_updating_multi_chrome());
+ }
+
+ {
+ TestConfiguration configuration;
+ configuration.AddRegistryValueResult(
+ TestConfiguration::RegistryLocation::CLIENTS_KEY,
+ google_update::kAppGuid, kPvRegistryValue, ERROR_FILE_NOT_FOUND,
+ nullptr);
+ configuration.Initialize(L"spam.exe");
+ EXPECT_FALSE(configuration.is_updating_multi_chrome());
+ }
+#else
+ EXPECT_FALSE(TestConfiguration(L"spam.exe").is_updating_multi_chrome());
+#endif
}
-TEST(MiniInstallerConfigurationTest, IsMultiInstall) {
- EXPECT_FALSE(TestConfiguration(L"spam.exe").is_multi_install());
- EXPECT_FALSE(TestConfiguration(L"spam.exe --chrome").is_multi_install());
- EXPECT_TRUE(TestConfiguration(L"spam.exe --multi-install --chrome")
- .is_multi_install());
- EXPECT_TRUE(TestConfiguration(L"spam.exe --multi-install")
- .is_multi_install());
+TEST(MiniInstallerConfigurationTest, ChromeAppGuid) {
+#if defined(GOOGLE_CHROME_BUILD)
+ EXPECT_STREQ(google_update::kAppGuid,
+ TestConfiguration(L"spam.exe").chrome_app_guid());
+ EXPECT_STREQ(google_update::kSxSAppGuid,
+ TestConfiguration(L"spam.exe --chrome-sxs").chrome_app_guid());
+#endif
}
TEST(MiniInstallerConfigurationTest, IsSystemLevel) {
@@ -176,8 +212,19 @@ TEST(MiniInstallerConfigurationTest, IsSystemLevel) {
}
}
+TEST(MiniInstallerConfigurationTest, IsSideBySide) {
+ EXPECT_FALSE(TestConfiguration(L"spam.exe").is_side_by_side());
+#if defined(GOOGLE_CHROME_BUILD)
+ EXPECT_TRUE(TestConfiguration(L"spam.exe --chrome-sxs").is_side_by_side());
+#else
+ EXPECT_FALSE(TestConfiguration(L"spam.exe --chrome-sxs").is_side_by_side());
+#endif
+}
+
TEST(MiniInstallerConfigurationTest, HasInvalidSwitch) {
EXPECT_FALSE(TestConfiguration(L"spam.exe").has_invalid_switch());
EXPECT_TRUE(TestConfiguration(L"spam.exe --chrome-frame")
.has_invalid_switch());
}
+
+} // namespace mini_installer

Powered by Google App Engine
This is Rietveld 408576698