OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 <windows.h> | 5 #include <windows.h> |
6 #include <stdint.h> | 6 #include <stdint.h> |
7 #include <wincrypt.h> | 7 #include <wincrypt.h> |
8 | 8 |
9 #include "base/files/file_util.h" | 9 #include "base/files/file_util.h" |
10 #include "base/files/scoped_temp_dir.h" | 10 #include "base/files/scoped_temp_dir.h" |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
64 } | 64 } |
65 | 65 |
66 // Test that all intermediate dirs are cleaned up if they're empty when | 66 // Test that all intermediate dirs are cleaned up if they're empty when |
67 // Delete() is called. | 67 // Delete() is called. |
68 TEST_F(SelfCleaningTempDirTest, RemoveUnusedOnDelete) { | 68 TEST_F(SelfCleaningTempDirTest, RemoveUnusedOnDelete) { |
69 // Make a directory in which we'll work. | 69 // Make a directory in which we'll work. |
70 base::ScopedTempDir work_dir; | 70 base::ScopedTempDir work_dir; |
71 EXPECT_TRUE(work_dir.CreateUniqueTempDir()); | 71 EXPECT_TRUE(work_dir.CreateUniqueTempDir()); |
72 | 72 |
73 // Make up some path under the temp dir. | 73 // Make up some path under the temp dir. |
74 base::FilePath parent_temp_dir(work_dir.path().Append(L"One").Append(L"Two")); | 74 base::FilePath parent_temp_dir( |
| 75 work_dir.GetPath().Append(L"One").Append(L"Two")); |
75 SelfCleaningTempDir temp_dir; | 76 SelfCleaningTempDir temp_dir; |
76 EXPECT_TRUE(temp_dir.Initialize(parent_temp_dir, L"Three")); | 77 EXPECT_TRUE(temp_dir.Initialize(parent_temp_dir, L"Three")); |
77 EXPECT_EQ(parent_temp_dir.Append(L"Three"), temp_dir.path()); | 78 EXPECT_EQ(parent_temp_dir.Append(L"Three"), temp_dir.path()); |
78 EXPECT_TRUE(base::DirectoryExists(temp_dir.path())); | 79 EXPECT_TRUE(base::DirectoryExists(temp_dir.path())); |
79 EXPECT_TRUE(temp_dir.Delete()); | 80 EXPECT_TRUE(temp_dir.Delete()); |
80 EXPECT_FALSE(base::DirectoryExists(parent_temp_dir.Append(L"Three"))); | 81 EXPECT_FALSE(base::DirectoryExists(parent_temp_dir.Append(L"Three"))); |
81 EXPECT_FALSE(base::DirectoryExists(parent_temp_dir)); | 82 EXPECT_FALSE(base::DirectoryExists(parent_temp_dir)); |
82 EXPECT_FALSE(base::DirectoryExists(parent_temp_dir.DirName())); | 83 EXPECT_FALSE(base::DirectoryExists(parent_temp_dir.DirName())); |
83 EXPECT_TRUE(base::DirectoryExists(parent_temp_dir.DirName().DirName())); | 84 EXPECT_TRUE(base::DirectoryExists(parent_temp_dir.DirName().DirName())); |
84 EXPECT_TRUE(work_dir.Delete()); | 85 EXPECT_TRUE(work_dir.Delete()); |
85 EXPECT_FALSE(base::DirectoryExists(parent_temp_dir.DirName().DirName())); | 86 EXPECT_FALSE(base::DirectoryExists(parent_temp_dir.DirName().DirName())); |
86 } | 87 } |
87 | 88 |
88 // Test that two clients can work in the same area. | 89 // Test that two clients can work in the same area. |
89 TEST_F(SelfCleaningTempDirTest, TwoClients) { | 90 TEST_F(SelfCleaningTempDirTest, TwoClients) { |
90 // Make a directory in which we'll work. | 91 // Make a directory in which we'll work. |
91 base::ScopedTempDir work_dir; | 92 base::ScopedTempDir work_dir; |
92 EXPECT_TRUE(work_dir.CreateUniqueTempDir()); | 93 EXPECT_TRUE(work_dir.CreateUniqueTempDir()); |
93 | 94 |
94 // Make up some path under the temp dir. | 95 // Make up some path under the temp dir. |
95 base::FilePath parent_temp_dir(work_dir.path().Append(L"One").Append(L"Two")); | 96 base::FilePath parent_temp_dir( |
| 97 work_dir.GetPath().Append(L"One").Append(L"Two")); |
96 SelfCleaningTempDir temp_dir1; | 98 SelfCleaningTempDir temp_dir1; |
97 SelfCleaningTempDir temp_dir2; | 99 SelfCleaningTempDir temp_dir2; |
98 // First client is created. | 100 // First client is created. |
99 EXPECT_TRUE(temp_dir1.Initialize(parent_temp_dir, L"Three")); | 101 EXPECT_TRUE(temp_dir1.Initialize(parent_temp_dir, L"Three")); |
100 // Second client is created in the same space. | 102 // Second client is created in the same space. |
101 EXPECT_TRUE(temp_dir2.Initialize(parent_temp_dir, L"Three")); | 103 EXPECT_TRUE(temp_dir2.Initialize(parent_temp_dir, L"Three")); |
102 // Both clients are where they are expected. | 104 // Both clients are where they are expected. |
103 EXPECT_EQ(parent_temp_dir.Append(L"Three"), temp_dir1.path()); | 105 EXPECT_EQ(parent_temp_dir.Append(L"Three"), temp_dir1.path()); |
104 EXPECT_EQ(parent_temp_dir.Append(L"Three"), temp_dir2.path()); | 106 EXPECT_EQ(parent_temp_dir.Append(L"Three"), temp_dir2.path()); |
105 EXPECT_TRUE(base::DirectoryExists(temp_dir1.path())); | 107 EXPECT_TRUE(base::DirectoryExists(temp_dir1.path())); |
(...skipping 16 matching lines...) Expand all Loading... |
122 } | 124 } |
123 | 125 |
124 // Test that all intermediate dirs are cleaned up if they're empty when the | 126 // Test that all intermediate dirs are cleaned up if they're empty when the |
125 // destructor is called. | 127 // destructor is called. |
126 TEST_F(SelfCleaningTempDirTest, RemoveUnusedOnDestroy) { | 128 TEST_F(SelfCleaningTempDirTest, RemoveUnusedOnDestroy) { |
127 // Make a directory in which we'll work. | 129 // Make a directory in which we'll work. |
128 base::ScopedTempDir work_dir; | 130 base::ScopedTempDir work_dir; |
129 EXPECT_TRUE(work_dir.CreateUniqueTempDir()); | 131 EXPECT_TRUE(work_dir.CreateUniqueTempDir()); |
130 | 132 |
131 // Make up some path under the temp dir. | 133 // Make up some path under the temp dir. |
132 base::FilePath parent_temp_dir(work_dir.path().Append(L"One").Append(L"Two")); | 134 base::FilePath parent_temp_dir( |
| 135 work_dir.GetPath().Append(L"One").Append(L"Two")); |
133 { | 136 { |
134 SelfCleaningTempDir temp_dir; | 137 SelfCleaningTempDir temp_dir; |
135 EXPECT_TRUE(temp_dir.Initialize(parent_temp_dir, L"Three")); | 138 EXPECT_TRUE(temp_dir.Initialize(parent_temp_dir, L"Three")); |
136 EXPECT_EQ(parent_temp_dir.Append(L"Three"), temp_dir.path()); | 139 EXPECT_EQ(parent_temp_dir.Append(L"Three"), temp_dir.path()); |
137 EXPECT_TRUE(base::DirectoryExists(temp_dir.path())); | 140 EXPECT_TRUE(base::DirectoryExists(temp_dir.path())); |
138 } | 141 } |
139 EXPECT_FALSE(base::DirectoryExists(parent_temp_dir.Append(L"Three"))); | 142 EXPECT_FALSE(base::DirectoryExists(parent_temp_dir.Append(L"Three"))); |
140 EXPECT_FALSE(base::DirectoryExists(parent_temp_dir)); | 143 EXPECT_FALSE(base::DirectoryExists(parent_temp_dir)); |
141 EXPECT_FALSE(base::DirectoryExists(parent_temp_dir.DirName())); | 144 EXPECT_FALSE(base::DirectoryExists(parent_temp_dir.DirName())); |
142 EXPECT_TRUE(base::DirectoryExists(parent_temp_dir.DirName().DirName())); | 145 EXPECT_TRUE(base::DirectoryExists(parent_temp_dir.DirName().DirName())); |
143 EXPECT_TRUE(work_dir.Delete()); | 146 EXPECT_TRUE(work_dir.Delete()); |
144 EXPECT_FALSE(base::DirectoryExists(parent_temp_dir.DirName().DirName())); | 147 EXPECT_FALSE(base::DirectoryExists(parent_temp_dir.DirName().DirName())); |
145 } | 148 } |
146 | 149 |
147 // Test that intermediate dirs are left behind if they're not empty when the | 150 // Test that intermediate dirs are left behind if they're not empty when the |
148 // destructor is called. | 151 // destructor is called. |
149 TEST_F(SelfCleaningTempDirTest, LeaveUsedOnDestroy) { | 152 TEST_F(SelfCleaningTempDirTest, LeaveUsedOnDestroy) { |
150 static const char kHiHon[] = "hi, hon"; | 153 static const char kHiHon[] = "hi, hon"; |
151 | 154 |
152 // Make a directory in which we'll work. | 155 // Make a directory in which we'll work. |
153 base::ScopedTempDir work_dir; | 156 base::ScopedTempDir work_dir; |
154 EXPECT_TRUE(work_dir.CreateUniqueTempDir()); | 157 EXPECT_TRUE(work_dir.CreateUniqueTempDir()); |
155 | 158 |
156 // Make up some path under the temp dir. | 159 // Make up some path under the temp dir. |
157 base::FilePath parent_temp_dir(work_dir.path().Append(L"One").Append(L"Two")); | 160 base::FilePath parent_temp_dir( |
| 161 work_dir.GetPath().Append(L"One").Append(L"Two")); |
158 { | 162 { |
159 SelfCleaningTempDir temp_dir; | 163 SelfCleaningTempDir temp_dir; |
160 EXPECT_TRUE(temp_dir.Initialize(parent_temp_dir, L"Three")); | 164 EXPECT_TRUE(temp_dir.Initialize(parent_temp_dir, L"Three")); |
161 EXPECT_EQ(parent_temp_dir.Append(L"Three"), temp_dir.path()); | 165 EXPECT_EQ(parent_temp_dir.Append(L"Three"), temp_dir.path()); |
162 EXPECT_TRUE(base::DirectoryExists(temp_dir.path())); | 166 EXPECT_TRUE(base::DirectoryExists(temp_dir.path())); |
163 // Drop a file somewhere. | 167 // Drop a file somewhere. |
164 EXPECT_EQ(static_cast<int>(arraysize(kHiHon) - 1), | 168 EXPECT_EQ(static_cast<int>(arraysize(kHiHon) - 1), |
165 base::WriteFile(parent_temp_dir.AppendASCII(GetRandomFilename()), | 169 base::WriteFile(parent_temp_dir.AppendASCII(GetRandomFilename()), |
166 kHiHon, arraysize(kHiHon) - 1)); | 170 kHiHon, arraysize(kHiHon) - 1)); |
167 } | 171 } |
168 EXPECT_FALSE(base::DirectoryExists(parent_temp_dir.Append(L"Three"))); | 172 EXPECT_FALSE(base::DirectoryExists(parent_temp_dir.Append(L"Three"))); |
169 EXPECT_TRUE(base::DirectoryExists(parent_temp_dir)); | 173 EXPECT_TRUE(base::DirectoryExists(parent_temp_dir)); |
170 EXPECT_TRUE(work_dir.Delete()); | 174 EXPECT_TRUE(work_dir.Delete()); |
171 EXPECT_FALSE(base::DirectoryExists(parent_temp_dir.DirName().DirName())); | 175 EXPECT_FALSE(base::DirectoryExists(parent_temp_dir.DirName().DirName())); |
172 } | 176 } |
173 | 177 |
174 } // namespace installer | 178 } // namespace installer |
OLD | NEW |