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

Side by Side Diff: chrome/installer/util/move_tree_work_item_unittest.cc

Issue 174189: Remove uses of deprecated version of FileUtil::PathExists() in the installer.... (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: wstring_exe_full_path removed Created 11 years, 4 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 6
7 #include <fstream> 7 #include <fstream>
8 #include <iostream> 8 #include <iostream>
9 9
10 #include "base/base_paths.h" 10 #include "base/base_paths.h"
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 } 70 }
71 71
72 wchar_t text_content_1[] = L"Gooooooooooooooooooooogle"; 72 wchar_t text_content_1[] = L"Gooooooooooooooooooooogle";
73 wchar_t text_content_2[] = L"Overwrite Me"; 73 wchar_t text_content_2[] = L"Overwrite Me";
74 }; 74 };
75 75
76 // Move one directory from source to destination when destination does not 76 // Move one directory from source to destination when destination does not
77 // exist. 77 // exist.
78 TEST_F(MoveTreeWorkItemTest, MoveDirectory) { 78 TEST_F(MoveTreeWorkItemTest, MoveDirectory) {
79 // Create two level deep source dir 79 // Create two level deep source dir
80 std::wstring from_dir1(test_dir_.ToWStringHack()); 80 FilePath from_dir1(test_dir_);
81 file_util::AppendToPath(&from_dir1, L"From_Dir1"); 81 from_dir1 = from_dir1.AppendASCII("From_Dir1");
82 CreateDirectory(from_dir1.c_str(), NULL); 82 CreateDirectory(from_dir1.value().c_str(), NULL);
83 ASSERT_TRUE(file_util::PathExists(from_dir1)); 83 ASSERT_TRUE(file_util::PathExists(from_dir1));
84 84
85 std::wstring from_dir2(from_dir1); 85 FilePath from_dir2(from_dir1);
86 file_util::AppendToPath(&from_dir2, L"From_Dir2"); 86 from_dir2 = from_dir2.AppendASCII("From_Dir2");
87 CreateDirectory(from_dir2.c_str(), NULL); 87 CreateDirectory(from_dir2.value().c_str(), NULL);
88 ASSERT_TRUE(file_util::PathExists(from_dir2)); 88 ASSERT_TRUE(file_util::PathExists(from_dir2));
89 89
90 std::wstring from_file(from_dir2); 90 FilePath from_file(from_dir2);
91 file_util::AppendToPath(&from_file, L"From_File"); 91 from_file = from_file.AppendASCII("From_File");
92 CreateTextFile(from_file, text_content_1); 92 CreateTextFile(from_file.value(), text_content_1);
93 ASSERT_TRUE(file_util::PathExists(from_file)); 93 ASSERT_TRUE(file_util::PathExists(from_file));
94 94
95 // Generate destination path 95 // Generate destination path
96 std::wstring to_dir(test_dir_.ToWStringHack()); 96 FilePath to_dir(test_dir_);
97 file_util::AppendToPath(&to_dir, L"To_Dir"); 97 to_dir = to_dir.AppendASCII("To_Dir");
98 ASSERT_FALSE(file_util::PathExists(to_dir)); 98 ASSERT_FALSE(file_util::PathExists(to_dir));
99 99
100 std::wstring to_file(to_dir); 100 FilePath to_file(to_dir);
101 file_util::AppendToPath(&to_file, L"From_Dir2"); 101 to_file = to_file.AppendASCII("From_Dir2");
102 file_util::AppendToPath(&to_file, L"From_File"); 102 to_file = to_file.AppendASCII("From_File");
103 ASSERT_FALSE(file_util::PathExists(to_file)); 103 ASSERT_FALSE(file_util::PathExists(to_file));
104 104
105 // test Do() 105 // test Do()
106 scoped_ptr<MoveTreeWorkItem> work_item(WorkItem::CreateMoveTreeWorkItem( 106 scoped_ptr<MoveTreeWorkItem> work_item(WorkItem::CreateMoveTreeWorkItem(
107 from_dir1, to_dir, temp_dir_.ToWStringHack())); 107 from_dir1.ToWStringHack(), to_dir.ToWStringHack(),
108 temp_dir_.ToWStringHack()));
108 EXPECT_TRUE(work_item->Do()); 109 EXPECT_TRUE(work_item->Do());
109 110
110 EXPECT_FALSE(file_util::PathExists(from_dir1)); 111 EXPECT_FALSE(file_util::PathExists(from_dir1));
111 EXPECT_TRUE(file_util::PathExists(to_dir)); 112 EXPECT_TRUE(file_util::PathExists(to_dir));
112 EXPECT_TRUE(file_util::PathExists(to_file)); 113 EXPECT_TRUE(file_util::PathExists(to_file));
113 114
114 // test rollback() 115 // test rollback()
115 work_item->Rollback(); 116 work_item->Rollback();
116 117
117 EXPECT_TRUE(file_util::PathExists(from_dir1)); 118 EXPECT_TRUE(file_util::PathExists(from_dir1));
118 EXPECT_TRUE(file_util::PathExists(from_file)); 119 EXPECT_TRUE(file_util::PathExists(from_file));
119 EXPECT_FALSE(file_util::PathExists(to_dir)); 120 EXPECT_FALSE(file_util::PathExists(to_dir));
120 } 121 }
121 122
122 // Move one directory from source to destination when destination already 123 // Move one directory from source to destination when destination already
123 // exists. 124 // exists.
124 TEST_F(MoveTreeWorkItemTest, MoveDirectoryDestExists) { 125 TEST_F(MoveTreeWorkItemTest, MoveDirectoryDestExists) {
125 // Create two level deep source dir 126 // Create two level deep source dir
126 std::wstring from_dir1(test_dir_.ToWStringHack()); 127 FilePath from_dir1(test_dir_);
127 file_util::AppendToPath(&from_dir1, L"From_Dir1"); 128 from_dir1 = from_dir1.AppendASCII("From_Dir1");
128 CreateDirectory(from_dir1.c_str(), NULL); 129 CreateDirectory(from_dir1.value().c_str(), NULL);
129 ASSERT_TRUE(file_util::PathExists(from_dir1)); 130 ASSERT_TRUE(file_util::PathExists(from_dir1));
130 131
131 std::wstring from_dir2(from_dir1); 132 FilePath from_dir2(from_dir1);
132 file_util::AppendToPath(&from_dir2, L"From_Dir2"); 133 from_dir2 = from_dir2.AppendASCII("From_Dir2");
133 CreateDirectory(from_dir2.c_str(), NULL); 134 CreateDirectory(from_dir2.value().c_str(), NULL);
134 ASSERT_TRUE(file_util::PathExists(from_dir2)); 135 ASSERT_TRUE(file_util::PathExists(from_dir2));
135 136
136 std::wstring from_file(from_dir2); 137 FilePath from_file(from_dir2);
137 file_util::AppendToPath(&from_file, L"From_File"); 138 from_file = from_file.AppendASCII("From_File");
138 CreateTextFile(from_file, text_content_1); 139 CreateTextFile(from_file.value(), text_content_1);
139 ASSERT_TRUE(file_util::PathExists(from_file)); 140 ASSERT_TRUE(file_util::PathExists(from_file));
140 141
141 // Create destination path 142 // Create destination path
142 std::wstring to_dir(test_dir_.ToWStringHack()); 143 FilePath to_dir(test_dir_);
143 file_util::AppendToPath(&to_dir, L"To_Dir"); 144 to_dir = to_dir.AppendASCII("To_Dir");
144 CreateDirectory(to_dir.c_str(), NULL); 145 CreateDirectory(to_dir.value().c_str(), NULL);
145 ASSERT_TRUE(file_util::PathExists(to_dir)); 146 ASSERT_TRUE(file_util::PathExists(to_dir));
146 147
147 std::wstring orig_to_file(to_dir); 148 FilePath orig_to_file(to_dir);
148 file_util::AppendToPath(&orig_to_file, L"To_File"); 149 orig_to_file = orig_to_file.AppendASCII("To_File");
149 CreateTextFile(orig_to_file, text_content_2); 150 CreateTextFile(orig_to_file.value(), text_content_2);
150 ASSERT_TRUE(file_util::PathExists(orig_to_file)); 151 ASSERT_TRUE(file_util::PathExists(orig_to_file));
151 152
152 std::wstring new_to_file(to_dir); 153 FilePath new_to_file(to_dir);
153 file_util::AppendToPath(&new_to_file, L"From_Dir2"); 154 new_to_file = new_to_file.AppendASCII("From_Dir2");
154 file_util::AppendToPath(&new_to_file, L"From_File"); 155 new_to_file = new_to_file.AppendASCII("From_File");
155 ASSERT_FALSE(file_util::PathExists(new_to_file)); 156 ASSERT_FALSE(file_util::PathExists(new_to_file));
156 157
157 // test Do() 158 // test Do()
158 scoped_ptr<MoveTreeWorkItem> work_item(WorkItem::CreateMoveTreeWorkItem( 159 scoped_ptr<MoveTreeWorkItem> work_item(WorkItem::CreateMoveTreeWorkItem(
159 from_dir1, to_dir, temp_dir_.ToWStringHack())); 160 from_dir1.ToWStringHack(), to_dir.ToWStringHack(),
161 temp_dir_.ToWStringHack()));
160 EXPECT_TRUE(work_item->Do()); 162 EXPECT_TRUE(work_item->Do());
161 163
162 EXPECT_FALSE(file_util::PathExists(from_dir1)); 164 EXPECT_FALSE(file_util::PathExists(from_dir1));
163 EXPECT_TRUE(file_util::PathExists(to_dir)); 165 EXPECT_TRUE(file_util::PathExists(to_dir));
164 EXPECT_TRUE(file_util::PathExists(new_to_file)); 166 EXPECT_TRUE(file_util::PathExists(new_to_file));
165 EXPECT_FALSE(file_util::PathExists(orig_to_file)); 167 EXPECT_FALSE(file_util::PathExists(orig_to_file));
166 168
167 // test rollback() 169 // test rollback()
168 work_item->Rollback(); 170 work_item->Rollback();
169 171
170 EXPECT_TRUE(file_util::PathExists(from_dir1)); 172 EXPECT_TRUE(file_util::PathExists(from_dir1));
171 EXPECT_TRUE(file_util::PathExists(to_dir)); 173 EXPECT_TRUE(file_util::PathExists(to_dir));
172 EXPECT_FALSE(file_util::PathExists(new_to_file)); 174 EXPECT_FALSE(file_util::PathExists(new_to_file));
173 EXPECT_TRUE(file_util::PathExists(orig_to_file)); 175 EXPECT_TRUE(file_util::PathExists(orig_to_file));
174 EXPECT_EQ(0, ReadTextFile(orig_to_file).compare(text_content_2)); 176 EXPECT_EQ(0, ReadTextFile(orig_to_file.ToWStringHack()).compare(
175 EXPECT_EQ(0, ReadTextFile(from_file).compare(text_content_1)); 177 text_content_2));
178 EXPECT_EQ(0, ReadTextFile(from_file.ToWStringHack()).compare(text_content_1));
176 } 179 }
177 180
178 // Move one file from source to destination when destination does not 181 // Move one file from source to destination when destination does not
179 // exist. 182 // exist.
180 TEST_F(MoveTreeWorkItemTest, MoveAFile) { 183 TEST_F(MoveTreeWorkItemTest, MoveAFile) {
181 // Create a file inside source dir 184 // Create a file inside source dir
182 std::wstring from_dir(test_dir_.ToWStringHack()); 185 FilePath from_dir(test_dir_);
183 file_util::AppendToPath(&from_dir, L"From_Dir"); 186 from_dir = from_dir.AppendASCII("From_Dir");
184 CreateDirectory(from_dir.c_str(), NULL); 187 CreateDirectory(from_dir.value().c_str(), NULL);
185 ASSERT_TRUE(file_util::PathExists(from_dir)); 188 ASSERT_TRUE(file_util::PathExists(from_dir));
186 189
187 std::wstring from_file(from_dir); 190 FilePath from_file(from_dir);
188 file_util::AppendToPath(&from_file, L"From_File"); 191 from_file = from_file.AppendASCII("From_File");
189 CreateTextFile(from_file, text_content_1); 192 CreateTextFile(from_file.value(), text_content_1);
190 ASSERT_TRUE(file_util::PathExists(from_file)); 193 ASSERT_TRUE(file_util::PathExists(from_file));
191 194
192 // Generate destination file name 195 // Generate destination file name
193 std::wstring to_file(test_dir_.ToWStringHack()); 196 FilePath to_file(test_dir_);
194 file_util::AppendToPath(&to_file, L"To_File"); 197 to_file = to_file.AppendASCII("To_File");
195 ASSERT_FALSE(file_util::PathExists(to_file)); 198 ASSERT_FALSE(file_util::PathExists(to_file));
196 199
197 // test Do() 200 // test Do()
198 scoped_ptr<MoveTreeWorkItem> work_item(WorkItem::CreateMoveTreeWorkItem( 201 scoped_ptr<MoveTreeWorkItem> work_item(WorkItem::CreateMoveTreeWorkItem(
199 from_file, to_file, temp_dir_.ToWStringHack())); 202 from_file.ToWStringHack(), to_file.ToWStringHack(),
203 temp_dir_.ToWStringHack()));
200 EXPECT_TRUE(work_item->Do()); 204 EXPECT_TRUE(work_item->Do());
201 205
202 EXPECT_TRUE(file_util::PathExists(from_dir)); 206 EXPECT_TRUE(file_util::PathExists(from_dir));
203 EXPECT_FALSE(file_util::PathExists(from_file)); 207 EXPECT_FALSE(file_util::PathExists(from_file));
204 EXPECT_TRUE(file_util::PathExists(to_file)); 208 EXPECT_TRUE(file_util::PathExists(to_file));
205 EXPECT_EQ(0, ReadTextFile(to_file).compare(text_content_1)); 209 EXPECT_EQ(0, ReadTextFile(to_file.value()).compare(text_content_1));
206 210
207 // test rollback() 211 // test rollback()
208 work_item->Rollback(); 212 work_item->Rollback();
209 213
210 EXPECT_TRUE(file_util::PathExists(from_dir)); 214 EXPECT_TRUE(file_util::PathExists(from_dir));
211 EXPECT_TRUE(file_util::PathExists(from_file)); 215 EXPECT_TRUE(file_util::PathExists(from_file));
212 EXPECT_FALSE(file_util::PathExists(to_file)); 216 EXPECT_FALSE(file_util::PathExists(to_file));
213 EXPECT_EQ(0, ReadTextFile(from_file).compare(text_content_1)); 217 EXPECT_EQ(0, ReadTextFile(from_file.value()).compare(text_content_1));
214 } 218 }
215 219
216 // Move one file from source to destination when destination already 220 // Move one file from source to destination when destination already
217 // exists. 221 // exists.
218 TEST_F(MoveTreeWorkItemTest, MoveFileDestExists) { 222 TEST_F(MoveTreeWorkItemTest, MoveFileDestExists) {
219 // Create a file inside source dir 223 // Create a file inside source dir
220 std::wstring from_dir(test_dir_.ToWStringHack()); 224 FilePath from_dir(test_dir_);
221 file_util::AppendToPath(&from_dir, L"From_Dir"); 225 from_dir = from_dir.AppendASCII("From_Dir");
222 CreateDirectory(from_dir.c_str(), NULL); 226 CreateDirectory(from_dir.value().c_str(), NULL);
223 ASSERT_TRUE(file_util::PathExists(from_dir)); 227 ASSERT_TRUE(file_util::PathExists(from_dir));
224 228
225 std::wstring from_file(from_dir); 229 FilePath from_file(from_dir);
226 file_util::AppendToPath(&from_file, L"From_File"); 230 from_file = from_file.AppendASCII("From_File");
227 CreateTextFile(from_file, text_content_1); 231 CreateTextFile(from_file.value(), text_content_1);
228 ASSERT_TRUE(file_util::PathExists(from_file)); 232 ASSERT_TRUE(file_util::PathExists(from_file));
229 233
230 // Create destination path 234 // Create destination path
231 std::wstring to_dir(test_dir_.ToWStringHack()); 235 FilePath to_dir(test_dir_);
232 file_util::AppendToPath(&to_dir, L"To_Dir"); 236 to_dir = to_dir.AppendASCII("To_Dir");
233 CreateDirectory(to_dir.c_str(), NULL); 237 CreateDirectory(to_dir.value().c_str(), NULL);
234 ASSERT_TRUE(file_util::PathExists(to_dir)); 238 ASSERT_TRUE(file_util::PathExists(to_dir));
235 239
236 std::wstring to_file(to_dir); 240 FilePath to_file(to_dir);
237 file_util::AppendToPath(&to_file, L"To_File"); 241 to_file = to_file.AppendASCII("To_File");
238 CreateTextFile(to_file, text_content_2); 242 CreateTextFile(to_file.value(), text_content_2);
239 ASSERT_TRUE(file_util::PathExists(to_file)); 243 ASSERT_TRUE(file_util::PathExists(to_file));
240 244
241 // test Do() 245 // test Do()
242 scoped_ptr<MoveTreeWorkItem> work_item(WorkItem::CreateMoveTreeWorkItem( 246 scoped_ptr<MoveTreeWorkItem> work_item(WorkItem::CreateMoveTreeWorkItem(
243 from_file, to_dir, temp_dir_.ToWStringHack())); 247 from_file.ToWStringHack(), to_dir.ToWStringHack(),
248 temp_dir_.ToWStringHack()));
244 EXPECT_TRUE(work_item->Do()); 249 EXPECT_TRUE(work_item->Do());
245 250
246 EXPECT_TRUE(file_util::PathExists(from_dir)); 251 EXPECT_TRUE(file_util::PathExists(from_dir));
247 EXPECT_FALSE(file_util::PathExists(from_file)); 252 EXPECT_FALSE(file_util::PathExists(from_file));
248 EXPECT_TRUE(file_util::PathExists(to_dir)); 253 EXPECT_TRUE(file_util::PathExists(to_dir));
249 EXPECT_FALSE(file_util::PathExists(to_file)); 254 EXPECT_FALSE(file_util::PathExists(to_file));
250 EXPECT_EQ(0, ReadTextFile(to_dir).compare(text_content_1)); 255 EXPECT_EQ(0, ReadTextFile(to_dir.value()).compare(text_content_1));
251 256
252 // test rollback() 257 // test rollback()
253 work_item->Rollback(); 258 work_item->Rollback();
254 259
255 EXPECT_TRUE(file_util::PathExists(from_dir)); 260 EXPECT_TRUE(file_util::PathExists(from_dir));
256 EXPECT_EQ(0, ReadTextFile(from_file).compare(text_content_1)); 261 EXPECT_EQ(0, ReadTextFile(from_file.value()).compare(text_content_1));
257 EXPECT_TRUE(file_util::PathExists(to_dir)); 262 EXPECT_TRUE(file_util::PathExists(to_dir));
258 EXPECT_EQ(0, ReadTextFile(to_file).compare(text_content_2)); 263 EXPECT_EQ(0, ReadTextFile(to_file.value()).compare(text_content_2));
259 } 264 }
260 265
261 // Move one file from source to destination when destination already 266 // Move one file from source to destination when destination already
262 // exists and is in use. 267 // exists and is in use.
263 TEST_F(MoveTreeWorkItemTest, MoveFileDestInUse) { 268 TEST_F(MoveTreeWorkItemTest, MoveFileDestInUse) {
264 // Create a file inside source dir 269 // Create a file inside source dir
265 std::wstring from_dir(test_dir_.ToWStringHack()); 270 FilePath from_dir(test_dir_);
266 file_util::AppendToPath(&from_dir, L"From_Dir"); 271 from_dir = from_dir.AppendASCII("From_Dir");
267 CreateDirectory(from_dir.c_str(), NULL); 272 CreateDirectory(from_dir.value().c_str(), NULL);
268 ASSERT_TRUE(file_util::PathExists(from_dir)); 273 ASSERT_TRUE(file_util::PathExists(from_dir));
269 274
270 std::wstring from_file(from_dir); 275 FilePath from_file(from_dir);
271 file_util::AppendToPath(&from_file, L"From_File"); 276 from_file = from_file.AppendASCII("From_File");
272 CreateTextFile(from_file, text_content_1); 277 CreateTextFile(from_file.value(), text_content_1);
273 ASSERT_TRUE(file_util::PathExists(from_file)); 278 ASSERT_TRUE(file_util::PathExists(from_file));
274 279
275 // Create an executable in destination path by copying ourself to it. 280 // Create an executable in destination path by copying ourself to it.
276 std::wstring to_dir(test_dir_.ToWStringHack()); 281 FilePath to_dir(test_dir_);
277 file_util::AppendToPath(&to_dir, L"To_Dir"); 282 to_dir = to_dir.AppendASCII("To_Dir");
278 CreateDirectory(to_dir.c_str(), NULL); 283 CreateDirectory(to_dir.value().c_str(), NULL);
279 ASSERT_TRUE(file_util::PathExists(to_dir)); 284 ASSERT_TRUE(file_util::PathExists(to_dir));
280 285
281 wchar_t exe_full_path_str[MAX_PATH]; 286 wchar_t exe_full_path_str[MAX_PATH];
282 ::GetModuleFileName(NULL, exe_full_path_str, MAX_PATH); 287 ::GetModuleFileName(NULL, exe_full_path_str, MAX_PATH);
283 std::wstring exe_full_path(exe_full_path_str); 288 FilePath exe_full_path(exe_full_path_str);
284 std::wstring to_file(to_dir); 289 FilePath to_file(to_dir);
285 file_util::AppendToPath(&to_file, L"To_File"); 290 to_file = to_file.AppendASCII("To_File");
286 file_util::CopyFile(exe_full_path, to_file); 291 file_util::CopyFile(exe_full_path, to_file);
287 ASSERT_TRUE(file_util::PathExists(to_file)); 292 ASSERT_TRUE(file_util::PathExists(to_file));
288 293
289 // Run the executable in destination path 294 // Run the executable in destination path
290 STARTUPINFOW si = {sizeof(si)}; 295 STARTUPINFOW si = {sizeof(si)};
291 PROCESS_INFORMATION pi = {0}; 296 PROCESS_INFORMATION pi = {0};
292 ASSERT_TRUE(::CreateProcess(NULL, const_cast<wchar_t*>(to_file.c_str()), 297 ASSERT_TRUE(::CreateProcess(NULL,
298 const_cast<wchar_t*>(to_file.value().c_str()),
293 NULL, NULL, FALSE, 299 NULL, NULL, FALSE,
294 CREATE_NO_WINDOW | CREATE_SUSPENDED, 300 CREATE_NO_WINDOW | CREATE_SUSPENDED,
295 NULL, NULL, &si, &pi)); 301 NULL, NULL, &si, &pi));
296 302
297 // test Do() 303 // test Do()
298 scoped_ptr<MoveTreeWorkItem> work_item(WorkItem::CreateMoveTreeWorkItem( 304 scoped_ptr<MoveTreeWorkItem> work_item(WorkItem::CreateMoveTreeWorkItem(
299 from_file, to_file, temp_dir_.ToWStringHack())); 305 from_file.ToWStringHack(), to_file.ToWStringHack(),
306 temp_dir_.ToWStringHack()));
300 EXPECT_TRUE(work_item->Do()); 307 EXPECT_TRUE(work_item->Do());
301 308
302 EXPECT_TRUE(file_util::PathExists(from_dir)); 309 EXPECT_TRUE(file_util::PathExists(from_dir));
303 EXPECT_FALSE(file_util::PathExists(from_file)); 310 EXPECT_FALSE(file_util::PathExists(from_file));
304 EXPECT_TRUE(file_util::PathExists(to_dir)); 311 EXPECT_TRUE(file_util::PathExists(to_dir));
305 EXPECT_EQ(0, ReadTextFile(to_file).compare(text_content_1)); 312 EXPECT_EQ(0, ReadTextFile(to_file.value()).compare(text_content_1));
306 313
307 // test rollback() 314 // test rollback()
308 work_item->Rollback(); 315 work_item->Rollback();
309 316
310 EXPECT_TRUE(file_util::PathExists(from_dir)); 317 EXPECT_TRUE(file_util::PathExists(from_dir));
311 EXPECT_EQ(0, ReadTextFile(from_file).compare(text_content_1)); 318 EXPECT_EQ(0, ReadTextFile(from_file.value()).compare(text_content_1));
312 EXPECT_TRUE(file_util::PathExists(to_dir)); 319 EXPECT_TRUE(file_util::PathExists(to_dir));
313 EXPECT_TRUE(file_util::ContentsEqual(exe_full_path, to_file)); 320 EXPECT_TRUE(file_util::ContentsEqual(exe_full_path, to_file));
314 321
315 TerminateProcess(pi.hProcess, 0); 322 TerminateProcess(pi.hProcess, 0);
316 EXPECT_TRUE(WaitForSingleObject(pi.hProcess, 10000) == WAIT_OBJECT_0); 323 EXPECT_TRUE(WaitForSingleObject(pi.hProcess, 10000) == WAIT_OBJECT_0);
317 CloseHandle(pi.hProcess); 324 CloseHandle(pi.hProcess);
318 CloseHandle(pi.hThread); 325 CloseHandle(pi.hThread);
319 } 326 }
320 327
321 // Move one file that is in use to destination. 328 // Move one file that is in use to destination.
322 TEST_F(MoveTreeWorkItemTest, MoveFileInUse) { 329 TEST_F(MoveTreeWorkItemTest, MoveFileInUse) {
323 // Create an executable for source by copying ourself to a new source dir. 330 // Create an executable for source by copying ourself to a new source dir.
324 std::wstring from_dir(test_dir_.ToWStringHack()); 331 FilePath from_dir(test_dir_);
325 file_util::AppendToPath(&from_dir, L"From_Dir"); 332 from_dir = from_dir.AppendASCII("From_Dir");
326 CreateDirectory(from_dir.c_str(), NULL); 333 CreateDirectory(from_dir.value().c_str(), NULL);
327 ASSERT_TRUE(file_util::PathExists(from_dir)); 334 ASSERT_TRUE(file_util::PathExists(from_dir));
328 335
329 wchar_t exe_full_path_str[MAX_PATH]; 336 wchar_t exe_full_path_str[MAX_PATH];
330 ::GetModuleFileName(NULL, exe_full_path_str, MAX_PATH); 337 ::GetModuleFileName(NULL, exe_full_path_str, MAX_PATH);
331 std::wstring exe_full_path(exe_full_path_str); 338 FilePath exe_full_path(exe_full_path_str);
332 std::wstring from_file(from_dir); 339 FilePath from_file(from_dir);
333 file_util::AppendToPath(&from_file, L"From_File"); 340 from_file = from_file.AppendASCII("From_File");
334 file_util::CopyFile(exe_full_path, from_file); 341 file_util::CopyFile(exe_full_path, from_file);
335 ASSERT_TRUE(file_util::PathExists(from_file)); 342 ASSERT_TRUE(file_util::PathExists(from_file));
336 343
337 // Create a destination source dir and generate destination file name. 344 // Create a destination source dir and generate destination file name.
338 std::wstring to_dir(test_dir_.ToWStringHack()); 345 FilePath to_dir(test_dir_);
339 file_util::AppendToPath(&to_dir, L"To_Dir"); 346 to_dir = to_dir.AppendASCII("To_Dir");
340 CreateDirectory(to_dir.c_str(), NULL); 347 CreateDirectory(to_dir.value().c_str(), NULL);
341 ASSERT_TRUE(file_util::PathExists(to_dir)); 348 ASSERT_TRUE(file_util::PathExists(to_dir));
342 349
343 std::wstring to_file(to_dir); 350 FilePath to_file(to_dir);
344 file_util::AppendToPath(&to_file, L"To_File"); 351 to_file = to_file.AppendASCII("To_File");
345 CreateTextFile(to_file, text_content_1); 352 CreateTextFile(to_file.value(), text_content_1);
346 ASSERT_TRUE(file_util::PathExists(to_file)); 353 ASSERT_TRUE(file_util::PathExists(to_file));
347 354
348 // Run the executable in source path 355 // Run the executable in source path
349 STARTUPINFOW si = {sizeof(si)}; 356 STARTUPINFOW si = {sizeof(si)};
350 PROCESS_INFORMATION pi = {0}; 357 PROCESS_INFORMATION pi = {0};
351 ASSERT_TRUE(::CreateProcess(NULL, const_cast<wchar_t*>(from_file.c_str()), 358 ASSERT_TRUE(::CreateProcess(NULL,
359 const_cast<wchar_t*>(from_file.value().c_str()),
352 NULL, NULL, FALSE, 360 NULL, NULL, FALSE,
353 CREATE_NO_WINDOW | CREATE_SUSPENDED, 361 CREATE_NO_WINDOW | CREATE_SUSPENDED,
354 NULL, NULL, &si, &pi)); 362 NULL, NULL, &si, &pi));
355 363
356 // test Do() 364 // test Do()
357 scoped_ptr<MoveTreeWorkItem> work_item(WorkItem::CreateMoveTreeWorkItem( 365 scoped_ptr<MoveTreeWorkItem> work_item(WorkItem::CreateMoveTreeWorkItem(
358 from_file, to_file, temp_dir_.ToWStringHack())); 366 from_file.ToWStringHack(), to_file.ToWStringHack(),
367 temp_dir_.ToWStringHack()));
359 EXPECT_TRUE(work_item->Do()); 368 EXPECT_TRUE(work_item->Do());
360 369
361 EXPECT_TRUE(file_util::PathExists(from_dir)); 370 EXPECT_TRUE(file_util::PathExists(from_dir));
362 EXPECT_FALSE(file_util::PathExists(from_file)); 371 EXPECT_FALSE(file_util::PathExists(from_file));
363 EXPECT_TRUE(file_util::PathExists(to_dir)); 372 EXPECT_TRUE(file_util::PathExists(to_dir));
364 EXPECT_TRUE(file_util::ContentsEqual(exe_full_path, to_file)); 373 EXPECT_TRUE(file_util::ContentsEqual(exe_full_path, to_file));
365 374
366 // Close the process and make sure all the conditions after Do() are 375 // Close the process and make sure all the conditions after Do() are
367 // still true. 376 // still true.
368 TerminateProcess(pi.hProcess, 0); 377 TerminateProcess(pi.hProcess, 0);
369 EXPECT_TRUE(WaitForSingleObject(pi.hProcess, 10000) == WAIT_OBJECT_0); 378 EXPECT_TRUE(WaitForSingleObject(pi.hProcess, 10000) == WAIT_OBJECT_0);
370 CloseHandle(pi.hProcess); 379 CloseHandle(pi.hProcess);
371 CloseHandle(pi.hThread); 380 CloseHandle(pi.hThread);
372 381
373 EXPECT_TRUE(file_util::PathExists(from_dir)); 382 EXPECT_TRUE(file_util::PathExists(from_dir));
374 EXPECT_FALSE(file_util::PathExists(from_file)); 383 EXPECT_FALSE(file_util::PathExists(from_file));
375 EXPECT_TRUE(file_util::PathExists(to_dir)); 384 EXPECT_TRUE(file_util::PathExists(to_dir));
376 EXPECT_TRUE(file_util::ContentsEqual(exe_full_path, to_file)); 385 EXPECT_TRUE(file_util::ContentsEqual(exe_full_path, to_file));
377 386
378 // test rollback() 387 // test rollback()
379 work_item->Rollback(); 388 work_item->Rollback();
380 389
381 EXPECT_TRUE(file_util::PathExists(from_dir)); 390 EXPECT_TRUE(file_util::PathExists(from_dir));
382 EXPECT_TRUE(file_util::ContentsEqual(exe_full_path, from_file)); 391 EXPECT_TRUE(file_util::ContentsEqual(exe_full_path, from_file));
383 EXPECT_TRUE(file_util::PathExists(to_dir)); 392 EXPECT_TRUE(file_util::PathExists(to_dir));
384 EXPECT_EQ(0, ReadTextFile(to_file).compare(text_content_1)); 393 EXPECT_EQ(0, ReadTextFile(to_file.value()).compare(text_content_1));
385 } 394 }
OLDNEW
« no previous file with comments | « chrome/installer/util/helper_unittest.cc ('k') | chrome/installer/util/work_item_list_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698