Chromium Code Reviews| Index: chrome_elf/chrome_elf_util_unittest.cc |
| diff --git a/chrome_elf/chrome_elf_util_unittest.cc b/chrome_elf/chrome_elf_util_unittest.cc |
| index 26b3a26cdd1a62764ae11404df7edf71f17ce02e..ba1589e0d9fb61fdc78c2bc13da6330de7da2320 100644 |
| --- a/chrome_elf/chrome_elf_util_unittest.cc |
| +++ b/chrome_elf/chrome_elf_util_unittest.cc |
| @@ -10,20 +10,9 @@ |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "testing/platform_test.h" |
| -namespace { |
| - |
| -const wchar_t kRegPathClientState[] = L"Software\\Google\\Update\\ClientState"; |
| -const wchar_t kRegPathClientStateMedium[] = |
| - L"Software\\Google\\Update\\ClientStateMedium"; |
| -const wchar_t kRegValueUsageStats[] = L"usagestats"; |
| -const wchar_t kUninstallArgumentsField[] = L"UninstallArguments"; |
| +using namespace install_static; |
| -const wchar_t kAppGuidCanary[] = |
| - L"{4ea16ac7-fd5a-47c3-875b-dbf4a2008c20}"; |
| -const wchar_t kAppGuidGoogleChrome[] = |
| - L"{8A69D345-D564-463c-AFF1-A69D9E530F96}"; |
| -const wchar_t kAppGuidGoogleBinaries[] = |
| - L"{4DC8B4CA-1BDA-483e-B5FA-D3C12E15B62D}"; |
| +namespace { |
| const wchar_t kCanaryExePath[] = |
| L"C:\\Users\\user\\AppData\\Local\\Google\\Chrome SxS\\Application" |
| @@ -35,11 +24,10 @@ const wchar_t kChromeUserExePath[] = |
| const wchar_t kChromiumExePath[] = |
| L"C:\\Users\\user\\AppData\\Local\\Chromium\\Application\\chrome.exe"; |
| - |
| TEST(ChromeElfUtilTest, CanaryTest) { |
| - EXPECT_TRUE(IsCanary(kCanaryExePath)); |
| - EXPECT_FALSE(IsCanary(kChromeUserExePath)); |
| - EXPECT_FALSE(IsCanary(kChromiumExePath)); |
| + EXPECT_TRUE(IsSxSChrome(kCanaryExePath)); |
| + EXPECT_FALSE(IsSxSChrome(kChromeUserExePath)); |
| + EXPECT_FALSE(IsSxSChrome(kChromiumExePath)); |
| } |
| TEST(ChromeElfUtilTest, SystemInstallTest) { |
| @@ -119,6 +107,14 @@ class ChromeElfUtilTest : |
| ASSERT_EQ(ERROR_SUCCESS, result); |
| } |
| + void SetChannelName(const base::string16& channel_name) { |
| + LONG result = base::win::RegKey( |
| + system_level_ ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER, |
| + BuildKey(kRegPathClientState, app_guid_).c_str(), |
| + KEY_SET_VALUE).WriteValue(kRegApField, channel_name.c_str()); |
| + ASSERT_EQ(ERROR_SUCCESS, result); |
| + } |
| + |
| const wchar_t* app_guid_; |
| const wchar_t* chrome_path_; |
| bool system_level_; |
| @@ -138,26 +134,26 @@ TEST_P(ChromeElfUtilTest, MultiInstallTest) { |
| } |
| TEST_P(ChromeElfUtilTest, UsageStatsAbsent) { |
| - EXPECT_FALSE(AreUsageStatsEnabled(chrome_path_)); |
| + EXPECT_FALSE(GetCollectStatsConsentForTesting(chrome_path_)); |
| } |
| TEST_P(ChromeElfUtilTest, UsageStatsZero) { |
| SetUsageStat(0, false); |
| - EXPECT_FALSE(AreUsageStatsEnabled(chrome_path_)); |
| + EXPECT_FALSE(GetCollectStatsConsentForTesting(chrome_path_)); |
| } |
| TEST_P(ChromeElfUtilTest, UsageStatsOne) { |
| SetUsageStat(1, false); |
| - EXPECT_TRUE(AreUsageStatsEnabled(chrome_path_)); |
| + EXPECT_TRUE(GetCollectStatsConsentForTesting(chrome_path_)); |
| if (is_canary_) { |
| - EXPECT_FALSE(AreUsageStatsEnabled(kChromeUserExePath)); |
| - EXPECT_FALSE(AreUsageStatsEnabled(kChromeSystemExePath)); |
| + EXPECT_FALSE(GetCollectStatsConsentForTesting(kChromeUserExePath)); |
| + EXPECT_FALSE(GetCollectStatsConsentForTesting(kChromeSystemExePath)); |
| } else if (system_level_) { |
| - EXPECT_FALSE(AreUsageStatsEnabled(kCanaryExePath)); |
| - EXPECT_FALSE(AreUsageStatsEnabled(kChromeUserExePath)); |
| + EXPECT_FALSE(GetCollectStatsConsentForTesting(kCanaryExePath)); |
| + EXPECT_FALSE(GetCollectStatsConsentForTesting(kChromeUserExePath)); |
| } else { |
| - EXPECT_FALSE(AreUsageStatsEnabled(kCanaryExePath)); |
| - EXPECT_FALSE(AreUsageStatsEnabled(kChromeSystemExePath)); |
| + EXPECT_FALSE(GetCollectStatsConsentForTesting(kCanaryExePath)); |
| + EXPECT_FALSE(GetCollectStatsConsentForTesting(kChromeSystemExePath)); |
| } |
| } |
| @@ -165,16 +161,183 @@ TEST_P(ChromeElfUtilTest, UsageStatsZeroInStateMedium) { |
| if (!system_level_) |
| return; |
| SetUsageStat(0, true); |
| - EXPECT_FALSE(AreUsageStatsEnabled(chrome_path_)); |
| + EXPECT_FALSE(GetCollectStatsConsentForTesting(chrome_path_)); |
| } |
| TEST_P(ChromeElfUtilTest, UsageStatsOneInStateMedium) { |
| if (!system_level_) |
| return; |
| SetUsageStat(1, true); |
| - EXPECT_TRUE(AreUsageStatsEnabled(chrome_path_)); |
| - EXPECT_FALSE(AreUsageStatsEnabled(kCanaryExePath)); |
| - EXPECT_FALSE(AreUsageStatsEnabled(kChromeUserExePath)); |
| + EXPECT_TRUE(GetCollectStatsConsentForTesting(chrome_path_)); |
| + EXPECT_FALSE(GetCollectStatsConsentForTesting(kCanaryExePath)); |
| + EXPECT_FALSE(GetCollectStatsConsentForTesting(kChromeUserExePath)); |
| +} |
| + |
| +// TODO(ananta) |
| +// Move this to install_static_unittests. |
| +// http://crbug.com/604923 |
| +// This test tests the install_static::GetChromeChannelName function and is |
| +// based on the ChannelInfoTest.Channels in channel_info_unittest.cc |
| +TEST_P(ChromeElfUtilTest, InstallStaticGetChannelNameTest) { |
| + // We can't test the channel name correctly for canary mode because the |
| + // install_static checks whether an exe is a canary executable is based on |
| + // the path where the exe is running from. |
| + if (is_canary_) |
| + return; |
| + SetChannelName(L""); |
| + base::string16 channel; |
| + install_static::GetChromeChannelName(!system_level_, true, &channel); |
|
grt (UTC plus 2)
2016/05/06 15:05:01
please add test coverage for the cases where add_m
ananta
2016/05/06 19:36:03
Done.
|
| + EXPECT_EQ(install_static::kChromeChannelStable, channel); |
| + |
| + SetChannelName(L"-full"); |
| + install_static::GetChromeChannelName(!system_level_, true, &channel); |
| + if (multi_install_) { |
| + EXPECT_TRUE(install_static::MatchPattern(channel, L"*-m*")); |
|
grt (UTC plus 2)
2016/05/06 15:05:01
"-full" multi-install should be "-m" when modifier
ananta
2016/05/06 19:36:03
Done.
|
| + } else { |
| + EXPECT_EQ(install_static::kChromeChannelStable, channel); |
| + } |
| + |
| + SetChannelName(L"1.1-beta"); |
| + install_static::GetChromeChannelName(!system_level_, true, &channel); |
| + if (multi_install_) { |
| + EXPECT_EQ(L"beta-m", channel); |
| + } else { |
| + EXPECT_EQ(install_static::kChromeChannelBeta, channel); |
| + } |
| + |
| + SetChannelName(L"1.1-beta"); |
| + install_static::GetChromeChannelName(!system_level_, true, &channel); |
| + if (multi_install_) { |
| + EXPECT_EQ(L"beta-m", channel); |
| + } else { |
| + EXPECT_EQ(install_static::kChromeChannelBeta, channel); |
| + } |
| + |
| + SetChannelName(L"1.1-bar"); |
| + install_static::GetChromeChannelName(!system_level_, true, &channel); |
| + if (multi_install_) { |
| + EXPECT_EQ(L"beta-m", channel); |
| + } else { |
| + EXPECT_EQ(install_static::kChromeChannelBeta, channel); |
| + } |
| + |
| + SetChannelName(L"1n1-foobar"); |
| + install_static::GetChromeChannelName(!system_level_, true, &channel); |
| + if (multi_install_) { |
| + EXPECT_EQ(L"beta-m", channel); |
| + } else { |
| + EXPECT_EQ(install_static::kChromeChannelBeta, channel); |
| + } |
| + |
| + SetChannelName(L"foo-1.1-beta"); |
| + install_static::GetChromeChannelName(!system_level_, true, &channel); |
| + if (multi_install_) { |
| + EXPECT_EQ(L"-m", channel); |
| + } else { |
| + EXPECT_TRUE(channel.empty()); |
|
grt (UTC plus 2)
2016/05/06 15:05:01
install_static::kChromeChannelStable for all of th
ananta
2016/05/06 19:36:03
Done.
|
| + } |
| + SetChannelName(L"2.0-beta"); |
| + install_static::GetChromeChannelName(!system_level_, true, &channel); |
| + if (multi_install_) { |
| + EXPECT_EQ(L"-m", channel); |
| + } else { |
| + EXPECT_TRUE(channel.empty()); |
| + } |
| + |
| + SetChannelName(L"2.0-dev"); |
| + install_static::GetChromeChannelName(!system_level_, true, &channel); |
| + if (multi_install_) { |
| + EXPECT_EQ(L"dev-m", channel); |
| + } else { |
| + EXPECT_EQ(install_static::kChromeChannelDev, channel); |
| + } |
| + SetChannelName(L"2.0-DEV"); |
| + install_static::GetChromeChannelName(!system_level_, true, &channel); |
| + if (multi_install_) { |
| + EXPECT_EQ(L"dev-m", channel); |
| + } else { |
| + EXPECT_EQ(install_static::kChromeChannelDev, channel); |
| + } |
| + SetChannelName(L"2.0-dev-eloper"); |
| + install_static::GetChromeChannelName(!system_level_, true, &channel); |
| + if (multi_install_) { |
| + EXPECT_EQ(L"dev-m", channel); |
| + } else { |
| + EXPECT_EQ(install_static::kChromeChannelDev, channel); |
| + } |
| + SetChannelName(L"2.0-doom"); |
| + install_static::GetChromeChannelName(!system_level_, true, &channel); |
| + if (multi_install_) { |
| + EXPECT_EQ(L"dev-m", channel); |
| + } else { |
| + EXPECT_EQ(install_static::kChromeChannelDev, channel); |
| + } |
| + SetChannelName(L"250-doom"); |
| + install_static::GetChromeChannelName(!system_level_, true, &channel); |
| + if (multi_install_) { |
| + EXPECT_EQ(L"dev-m", channel); |
| + } else { |
| + EXPECT_EQ(install_static::kChromeChannelDev, channel); |
| + } |
| + SetChannelName(L"bar-2.0-dev"); |
| + install_static::GetChromeChannelName(!system_level_, true, &channel); |
| + if (multi_install_) { |
| + EXPECT_EQ(L"-m", channel); |
| + } else { |
| + EXPECT_TRUE(channel.empty()); |
| + } |
| + SetChannelName(L"1.0-dev"); |
| + install_static::GetChromeChannelName(!system_level_, true, &channel); |
| + if (multi_install_) { |
| + EXPECT_EQ(L"-m", channel); |
| + } else { |
| + EXPECT_TRUE(channel.empty()); |
| + } |
| + |
| + SetChannelName(L"x64-beta"); |
| + install_static::GetChromeChannelName(!system_level_, true, &channel); |
| + if (multi_install_) { |
| + EXPECT_EQ(L"beta-m", channel); |
| + } else { |
| + EXPECT_EQ(install_static::kChromeChannelBeta, channel); |
| + } |
| + SetChannelName(L"bar-x64-beta"); |
| + if (multi_install_) { |
|
grt (UTC plus 2)
2016/05/06 15:05:01
GetChromeChannelName before this?
ananta
2016/05/06 19:36:03
Done. Forgot to upload the patch with the fix yest
|
| + EXPECT_EQ(L"beta-m", channel); |
| + } else { |
| + EXPECT_EQ(install_static::kChromeChannelBeta, channel); |
| + } |
| + SetChannelName(L"x64-Beta"); |
| + if (multi_install_) { |
|
grt (UTC plus 2)
2016/05/06 15:05:01
GetChromeChannelName before this?
ananta
2016/05/06 19:36:03
Done.
|
| + EXPECT_EQ(L"beta-m", channel); |
| + } else { |
| + EXPECT_EQ(install_static::kChromeChannelBeta, channel); |
| + } |
| + |
| + SetChannelName(L"x64-stable"); |
| + install_static::GetChromeChannelName(!system_level_, true, &channel); |
| + EXPECT_EQ(install_static::kChromeChannelStable, channel); |
|
grt (UTC plus 2)
2016/05/06 15:05:01
why isn't this handling multi-install as above?
ananta
2016/05/06 19:36:03
Channel names with "stable" in them are returned a
ananta
2016/05/06 21:30:11
Please look here https://code.google.com/p/chromiu
grt (UTC plus 2)
2016/05/09 18:54:11
Correct. The modifier is still added in this case
ananta
2016/05/09 22:21:07
Thanks. Done
|
| + SetChannelName(L"baz-x64-stable"); |
| + install_static::GetChromeChannelName(!system_level_, true, &channel); |
| + EXPECT_EQ(install_static::kChromeChannelStable, channel); |
| + SetChannelName(L"x64-Stable"); |
| + install_static::GetChromeChannelName(!system_level_, true, &channel); |
| + EXPECT_EQ(install_static::kChromeChannelStable, channel); |
| + |
| + SetChannelName(L"fuzzy"); |
| + install_static::GetChromeChannelName(!system_level_, true, &channel); |
| + if (multi_install_) { |
| + EXPECT_EQ(L"-m", channel); |
| + } else { |
| + EXPECT_TRUE(channel.empty()); |
| + } |
| + SetChannelName(L"foo"); |
| + install_static::GetChromeChannelName(!system_level_, true, &channel); |
| + if (multi_install_) { |
| + EXPECT_EQ(L"-m", channel); |
| + } else { |
| + EXPECT_TRUE(channel.empty()); |
| + } |
| } |
| INSTANTIATE_TEST_CASE_P(Canary, ChromeElfUtilTest, |
| @@ -186,4 +349,23 @@ INSTANTIATE_TEST_CASE_P(GoogleChrome, ChromeElfUtilTest, |
| testing::Values("user", "system"), |
| testing::Values("single", "multi"))); |
| +// Tests the MatchPattern function in the install_static library. |
| +// TODO(ananta) |
| +// Move this to install_static_unittests. |
| +// http://crbug.com/604923 |
| +TEST(MiscUtilTest, InstallStaticMatchPattern) { |
| + EXPECT_TRUE(install_static::MatchPattern(L"", L"")); |
| + EXPECT_TRUE(install_static::MatchPattern(L"", L"*")); |
| + EXPECT_FALSE(install_static::MatchPattern(L"", L"*a")); |
| + EXPECT_FALSE(install_static::MatchPattern(L"", L"abc")); |
| + EXPECT_TRUE(install_static::MatchPattern(L"Hello1234", L"He??o*1*")); |
| + EXPECT_TRUE(install_static::MatchPattern(L"Foo", L"F*?")); |
| + EXPECT_TRUE(install_static::MatchPattern(L"Foo", L"F*")); |
| + EXPECT_FALSE(install_static::MatchPattern(L"Foo", L"F*b")); |
| + EXPECT_TRUE(install_static::MatchPattern(L"abcd", L"*c*d")); |
| + EXPECT_TRUE(install_static::MatchPattern(L"abcd", L"*?c*d")); |
| + EXPECT_FALSE(install_static::MatchPattern(L"abcd", L"abcd*efgh")); |
| + EXPECT_TRUE(install_static::MatchPattern(L"foobarabc", L"*bar*")); |
| +} |
| + |
| } // namespace |