OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/installer/setup/setup_util_unittest.h" | 5 #include "chrome/installer/setup/setup_util_unittest.h" |
6 | 6 |
7 #include <windows.h> | 7 #include <windows.h> |
8 #include <shlobj.h> | 8 #include <shlobj.h> |
9 | 9 |
10 #include <memory> | 10 #include <memory> |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
86 return false; | 86 return false; |
87 } | 87 } |
88 | 88 |
89 } // namespace | 89 } // namespace |
90 | 90 |
91 // Test that we are parsing Chrome version correctly. | 91 // Test that we are parsing Chrome version correctly. |
92 TEST(SetupUtilTest, GetMaxVersionFromArchiveDirTest) { | 92 TEST(SetupUtilTest, GetMaxVersionFromArchiveDirTest) { |
93 // Create a version dir | 93 // Create a version dir |
94 base::ScopedTempDir test_dir; | 94 base::ScopedTempDir test_dir; |
95 ASSERT_TRUE(test_dir.CreateUniqueTempDir()); | 95 ASSERT_TRUE(test_dir.CreateUniqueTempDir()); |
96 base::FilePath chrome_dir = test_dir.path().AppendASCII("1.0.0.0"); | 96 base::FilePath chrome_dir = test_dir.GetPath().AppendASCII("1.0.0.0"); |
97 base::CreateDirectory(chrome_dir); | 97 base::CreateDirectory(chrome_dir); |
98 ASSERT_TRUE(base::PathExists(chrome_dir)); | 98 ASSERT_TRUE(base::PathExists(chrome_dir)); |
99 std::unique_ptr<base::Version> version( | 99 std::unique_ptr<base::Version> version( |
100 installer::GetMaxVersionFromArchiveDir(test_dir.path())); | 100 installer::GetMaxVersionFromArchiveDir(test_dir.GetPath())); |
101 ASSERT_EQ(version->GetString(), "1.0.0.0"); | 101 ASSERT_EQ(version->GetString(), "1.0.0.0"); |
102 | 102 |
103 base::DeleteFile(chrome_dir, true); | 103 base::DeleteFile(chrome_dir, true); |
104 ASSERT_FALSE(base::PathExists(chrome_dir)) << chrome_dir.value(); | 104 ASSERT_FALSE(base::PathExists(chrome_dir)) << chrome_dir.value(); |
105 ASSERT_TRUE(installer::GetMaxVersionFromArchiveDir(test_dir.path()) == NULL); | 105 ASSERT_TRUE(installer::GetMaxVersionFromArchiveDir(test_dir.GetPath()) == |
| 106 NULL); |
106 | 107 |
107 chrome_dir = test_dir.path().AppendASCII("ABC"); | 108 chrome_dir = test_dir.GetPath().AppendASCII("ABC"); |
108 base::CreateDirectory(chrome_dir); | 109 base::CreateDirectory(chrome_dir); |
109 ASSERT_TRUE(base::PathExists(chrome_dir)); | 110 ASSERT_TRUE(base::PathExists(chrome_dir)); |
110 ASSERT_TRUE(installer::GetMaxVersionFromArchiveDir(test_dir.path()) == NULL); | 111 ASSERT_TRUE(installer::GetMaxVersionFromArchiveDir(test_dir.GetPath()) == |
| 112 NULL); |
111 | 113 |
112 chrome_dir = test_dir.path().AppendASCII("2.3.4.5"); | 114 chrome_dir = test_dir.GetPath().AppendASCII("2.3.4.5"); |
113 base::CreateDirectory(chrome_dir); | 115 base::CreateDirectory(chrome_dir); |
114 ASSERT_TRUE(base::PathExists(chrome_dir)); | 116 ASSERT_TRUE(base::PathExists(chrome_dir)); |
115 version.reset(installer::GetMaxVersionFromArchiveDir(test_dir.path())); | 117 version.reset(installer::GetMaxVersionFromArchiveDir(test_dir.GetPath())); |
116 ASSERT_EQ(version->GetString(), "2.3.4.5"); | 118 ASSERT_EQ(version->GetString(), "2.3.4.5"); |
117 | 119 |
118 // Create multiple version dirs, ensure that we select the greatest. | 120 // Create multiple version dirs, ensure that we select the greatest. |
119 chrome_dir = test_dir.path().AppendASCII("9.9.9.9"); | 121 chrome_dir = test_dir.GetPath().AppendASCII("9.9.9.9"); |
120 base::CreateDirectory(chrome_dir); | 122 base::CreateDirectory(chrome_dir); |
121 ASSERT_TRUE(base::PathExists(chrome_dir)); | 123 ASSERT_TRUE(base::PathExists(chrome_dir)); |
122 chrome_dir = test_dir.path().AppendASCII("1.1.1.1"); | 124 chrome_dir = test_dir.GetPath().AppendASCII("1.1.1.1"); |
123 base::CreateDirectory(chrome_dir); | 125 base::CreateDirectory(chrome_dir); |
124 ASSERT_TRUE(base::PathExists(chrome_dir)); | 126 ASSERT_TRUE(base::PathExists(chrome_dir)); |
125 | 127 |
126 version.reset(installer::GetMaxVersionFromArchiveDir(test_dir.path())); | 128 version.reset(installer::GetMaxVersionFromArchiveDir(test_dir.GetPath())); |
127 ASSERT_EQ(version->GetString(), "9.9.9.9"); | 129 ASSERT_EQ(version->GetString(), "9.9.9.9"); |
128 } | 130 } |
129 | 131 |
130 TEST(SetupUtilTest, DeleteFileFromTempProcess) { | 132 TEST(SetupUtilTest, DeleteFileFromTempProcess) { |
131 base::ScopedTempDir test_dir; | 133 base::ScopedTempDir test_dir; |
132 ASSERT_TRUE(test_dir.CreateUniqueTempDir()); | 134 ASSERT_TRUE(test_dir.CreateUniqueTempDir()); |
133 base::FilePath test_file; | 135 base::FilePath test_file; |
134 base::CreateTemporaryFileInDir(test_dir.path(), &test_file); | 136 base::CreateTemporaryFileInDir(test_dir.GetPath(), &test_file); |
135 ASSERT_TRUE(base::PathExists(test_file)); | 137 ASSERT_TRUE(base::PathExists(test_file)); |
136 base::WriteFile(test_file, "foo", 3); | 138 base::WriteFile(test_file, "foo", 3); |
137 EXPECT_TRUE(installer::DeleteFileFromTempProcess(test_file, 0)); | 139 EXPECT_TRUE(installer::DeleteFileFromTempProcess(test_file, 0)); |
138 base::PlatformThread::Sleep(TestTimeouts::tiny_timeout() * 3); | 140 base::PlatformThread::Sleep(TestTimeouts::tiny_timeout() * 3); |
139 EXPECT_FALSE(base::PathExists(test_file)) << test_file.value(); | 141 EXPECT_FALSE(base::PathExists(test_file)) << test_file.value(); |
140 } | 142 } |
141 | 143 |
142 // Note: This test is only valid when run at high integrity (i.e. it will fail | 144 // Note: This test is only valid when run at high integrity (i.e. it will fail |
143 // at medium integrity). | 145 // at medium integrity). |
144 TEST(SetupUtilTest, ScopedTokenPrivilegeBasic) { | 146 TEST(SetupUtilTest, ScopedTokenPrivilegeBasic) { |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
328 ASSERT_TRUE( | 330 ASSERT_TRUE( |
329 base::CreateDirectory(GetMaxVersionArchivePath().DirName())); | 331 base::CreateDirectory(GetMaxVersionArchivePath().DirName())); |
330 ASSERT_EQ(1, base::WriteFile(GetMaxVersionArchivePath(), "b", 1)); | 332 ASSERT_EQ(1, base::WriteFile(GetMaxVersionArchivePath(), "b", 1)); |
331 } | 333 } |
332 | 334 |
333 void TearDown() override { | 335 void TearDown() override { |
334 original_state_.reset(); | 336 original_state_.reset(); |
335 } | 337 } |
336 | 338 |
337 base::FilePath GetArchivePath(const base::Version& version) const { | 339 base::FilePath GetArchivePath(const base::Version& version) const { |
338 return test_dir_.path() | 340 return test_dir_.GetPath() |
339 .AppendASCII(version.GetString()) | 341 .AppendASCII(version.GetString()) |
340 .Append(installer::kInstallerDir) | 342 .Append(installer::kInstallerDir) |
341 .Append(installer::kChromeArchive); | 343 .Append(installer::kChromeArchive); |
342 } | 344 } |
343 | 345 |
344 base::FilePath GetMaxVersionArchivePath() const { | 346 base::FilePath GetMaxVersionArchivePath() const { |
345 return GetArchivePath(max_version_); | 347 return GetArchivePath(max_version_); |
346 } | 348 } |
347 | 349 |
348 base::FilePath GetProductVersionArchivePath() const { | 350 base::FilePath GetProductVersionArchivePath() const { |
349 return GetArchivePath(product_version_); | 351 return GetArchivePath(product_version_); |
350 } | 352 } |
351 | 353 |
352 void InstallProduct() { | 354 void InstallProduct() { |
353 FakeProductState* product = FakeProductState::FromProductState( | 355 FakeProductState* product = FakeProductState::FromProductState( |
354 original_state_->GetNonVersionedProductState(kSystemInstall_, | 356 original_state_->GetNonVersionedProductState(kSystemInstall_, |
355 kProductType_)); | 357 kProductType_)); |
356 | 358 |
357 product->set_version(product_version_); | 359 product->set_version(product_version_); |
358 base::CommandLine uninstall_command( | 360 base::CommandLine uninstall_command( |
359 test_dir_.path() | 361 test_dir_.GetPath() |
360 .AppendASCII(product_version_.GetString()) | 362 .AppendASCII(product_version_.GetString()) |
361 .Append(installer::kInstallerDir) | 363 .Append(installer::kInstallerDir) |
362 .Append(installer::kSetupExe)); | 364 .Append(installer::kSetupExe)); |
363 uninstall_command.AppendSwitch(installer::switches::kUninstall); | 365 uninstall_command.AppendSwitch(installer::switches::kUninstall); |
364 product->set_uninstall_command(uninstall_command); | 366 product->set_uninstall_command(uninstall_command); |
365 } | 367 } |
366 | 368 |
367 void UninstallProduct() { | 369 void UninstallProduct() { |
368 FakeProductState::FromProductState( | 370 FakeProductState::FromProductState( |
369 original_state_->GetNonVersionedProductState(kSystemInstall_, | 371 original_state_->GetNonVersionedProductState(kSystemInstall_, |
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
643 } | 645 } |
644 | 646 |
645 // Ensure that all values are absent. | 647 // Ensure that all values are absent. |
646 { | 648 { |
647 base::win::RegistryValueIterator it(root_, path_.c_str()); | 649 base::win::RegistryValueIterator it(root_, path_.c_str()); |
648 ASSERT_EQ(0u, it.ValueCount()); | 650 ASSERT_EQ(0u, it.ValueCount()); |
649 } | 651 } |
650 } | 652 } |
651 | 653 |
652 } // namespace installer | 654 } // namespace installer |
OLD | NEW |