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

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

Issue 19052005: Move PathIsWritable, DirectoryExists, ContentsEqual, and TextContentsEqual to the base namespace. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 5 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) 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 <windows.h> 5 #include <windows.h>
6 6
7 #include <fstream> 7 #include <fstream>
8 8
9 #include "base/base_paths.h" 9 #include "base/base_paths.h"
10 #include "base/file_util.h" 10 #include "base/file_util.h"
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 WorkItem::CreateCopyTreeWorkItem(file_name_from, 96 WorkItem::CreateCopyTreeWorkItem(file_name_from,
97 file_name_to, 97 file_name_to,
98 temp_dir_.path(), 98 temp_dir_.path(),
99 WorkItem::ALWAYS, 99 WorkItem::ALWAYS,
100 base::FilePath())); 100 base::FilePath()));
101 101
102 EXPECT_TRUE(work_item->Do()); 102 EXPECT_TRUE(work_item->Do());
103 103
104 EXPECT_TRUE(base::PathExists(file_name_from)); 104 EXPECT_TRUE(base::PathExists(file_name_from));
105 EXPECT_TRUE(base::PathExists(file_name_to)); 105 EXPECT_TRUE(base::PathExists(file_name_to));
106 EXPECT_TRUE(file_util::ContentsEqual(file_name_from, file_name_to)); 106 EXPECT_TRUE(base::ContentsEqual(file_name_from, file_name_to));
107 107
108 // test rollback() 108 // test rollback()
109 work_item->Rollback(); 109 work_item->Rollback();
110 110
111 EXPECT_FALSE(base::PathExists(file_name_to)); 111 EXPECT_FALSE(base::PathExists(file_name_to));
112 EXPECT_TRUE(base::PathExists(file_name_from)); 112 EXPECT_TRUE(base::PathExists(file_name_from));
113 } 113 }
114 114
115 // Copy one file, overwriting the existing one in destination. 115 // Copy one file, overwriting the existing one in destination.
116 // Test with always_overwrite being true or false. The file is overwritten 116 // Test with always_overwrite being true or false. The file is overwritten
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 base::FilePath backup_file(work_item->backup_path_.path()); 365 base::FilePath backup_file(work_item->backup_path_.path());
366 EXPECT_FALSE(backup_file.empty()); 366 EXPECT_FALSE(backup_file.empty());
367 backup_file = backup_file.AppendASCII("File_To"); 367 backup_file = backup_file.AppendASCII("File_To");
368 368
369 EXPECT_TRUE(base::PathExists(file_name_from)); 369 EXPECT_TRUE(base::PathExists(file_name_from));
370 EXPECT_TRUE(base::PathExists(file_name_to)); 370 EXPECT_TRUE(base::PathExists(file_name_to));
371 EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1)); 371 EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
372 EXPECT_EQ(0, ReadTextFile(file_name_to.value()).compare(text_content_1)); 372 EXPECT_EQ(0, ReadTextFile(file_name_to.value()).compare(text_content_1));
373 // verify the file in used is moved to backup place. 373 // verify the file in used is moved to backup place.
374 EXPECT_TRUE(base::PathExists(backup_file)); 374 EXPECT_TRUE(base::PathExists(backup_file));
375 EXPECT_TRUE(file_util::ContentsEqual(exe_full_path, backup_file)); 375 EXPECT_TRUE(base::ContentsEqual(exe_full_path, backup_file));
376 376
377 // test rollback() 377 // test rollback()
378 work_item->Rollback(); 378 work_item->Rollback();
379 379
380 EXPECT_TRUE(base::PathExists(file_name_from)); 380 EXPECT_TRUE(base::PathExists(file_name_from));
381 EXPECT_TRUE(base::PathExists(file_name_to)); 381 EXPECT_TRUE(base::PathExists(file_name_to));
382 EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1)); 382 EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
383 EXPECT_TRUE(file_util::ContentsEqual(exe_full_path, file_name_to)); 383 EXPECT_TRUE(base::ContentsEqual(exe_full_path, file_name_to));
384 // the backup file should be gone after rollback 384 // the backup file should be gone after rollback
385 EXPECT_FALSE(base::PathExists(backup_file)); 385 EXPECT_FALSE(base::PathExists(backup_file));
386 386
387 TerminateProcess(pi.hProcess, 0); 387 TerminateProcess(pi.hProcess, 0);
388 // make sure the handle is closed. 388 // make sure the handle is closed.
389 EXPECT_TRUE(WaitForSingleObject(pi.hProcess, 10000) == WAIT_OBJECT_0); 389 EXPECT_TRUE(WaitForSingleObject(pi.hProcess, 10000) == WAIT_OBJECT_0);
390 CloseHandle(pi.hProcess); 390 CloseHandle(pi.hProcess);
391 CloseHandle(pi.hThread); 391 CloseHandle(pi.hThread);
392 } 392 }
393 393
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 file_name_to, 437 file_name_to,
438 temp_dir_.path(), 438 temp_dir_.path(),
439 WorkItem::NEW_NAME_IF_IN_USE, 439 WorkItem::NEW_NAME_IF_IN_USE,
440 alternate_to)); 440 alternate_to));
441 441
442 EXPECT_TRUE(work_item->Do()); 442 EXPECT_TRUE(work_item->Do());
443 443
444 EXPECT_TRUE(base::PathExists(file_name_from)); 444 EXPECT_TRUE(base::PathExists(file_name_from));
445 EXPECT_TRUE(base::PathExists(file_name_to)); 445 EXPECT_TRUE(base::PathExists(file_name_to));
446 EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1)); 446 EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
447 EXPECT_TRUE(file_util::ContentsEqual(exe_full_path, file_name_to)); 447 EXPECT_TRUE(base::ContentsEqual(exe_full_path, file_name_to));
448 // verify that the backup path does not exist 448 // verify that the backup path does not exist
449 EXPECT_TRUE(work_item->backup_path_.path().empty()); 449 EXPECT_TRUE(work_item->backup_path_.path().empty());
450 EXPECT_TRUE(file_util::ContentsEqual(file_name_from, alternate_to)); 450 EXPECT_TRUE(base::ContentsEqual(file_name_from, alternate_to));
451 451
452 // test rollback() 452 // test rollback()
453 work_item->Rollback(); 453 work_item->Rollback();
454 454
455 EXPECT_TRUE(base::PathExists(file_name_from)); 455 EXPECT_TRUE(base::PathExists(file_name_from));
456 EXPECT_TRUE(base::PathExists(file_name_to)); 456 EXPECT_TRUE(base::PathExists(file_name_to));
457 EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1)); 457 EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
458 EXPECT_TRUE(file_util::ContentsEqual(exe_full_path, file_name_to)); 458 EXPECT_TRUE(base::ContentsEqual(exe_full_path, file_name_to));
459 EXPECT_TRUE(work_item->backup_path_.path().empty()); 459 EXPECT_TRUE(work_item->backup_path_.path().empty());
460 // the alternate file should be gone after rollback 460 // the alternate file should be gone after rollback
461 EXPECT_FALSE(base::PathExists(alternate_to)); 461 EXPECT_FALSE(base::PathExists(alternate_to));
462 462
463 TerminateProcess(pi.hProcess, 0); 463 TerminateProcess(pi.hProcess, 0);
464 // make sure the handle is closed. 464 // make sure the handle is closed.
465 EXPECT_TRUE(WaitForSingleObject(pi.hProcess, 10000) == WAIT_OBJECT_0); 465 EXPECT_TRUE(WaitForSingleObject(pi.hProcess, 10000) == WAIT_OBJECT_0);
466 CloseHandle(pi.hProcess); 466 CloseHandle(pi.hProcess);
467 CloseHandle(pi.hThread); 467 CloseHandle(pi.hThread);
468 468
469 // Now the process has terminated, lets try overwriting the file again 469 // Now the process has terminated, lets try overwriting the file again
470 work_item.reset(WorkItem::CreateCopyTreeWorkItem( 470 work_item.reset(WorkItem::CreateCopyTreeWorkItem(
471 file_name_from, file_name_to, 471 file_name_from, file_name_to,
472 temp_dir_.path(), WorkItem::NEW_NAME_IF_IN_USE, 472 temp_dir_.path(), WorkItem::NEW_NAME_IF_IN_USE,
473 alternate_to)); 473 alternate_to));
474 if (IsFileInUse(file_name_to)) 474 if (IsFileInUse(file_name_to))
475 base::PlatformThread::Sleep(base::TimeDelta::FromSeconds(2)); 475 base::PlatformThread::Sleep(base::TimeDelta::FromSeconds(2));
476 // If file is still in use, the rest of the test will fail. 476 // If file is still in use, the rest of the test will fail.
477 ASSERT_FALSE(IsFileInUse(file_name_to)); 477 ASSERT_FALSE(IsFileInUse(file_name_to));
478 EXPECT_TRUE(work_item->Do()); 478 EXPECT_TRUE(work_item->Do());
479 479
480 // Get the path of backup file 480 // Get the path of backup file
481 base::FilePath backup_file(work_item->backup_path_.path()); 481 base::FilePath backup_file(work_item->backup_path_.path());
482 EXPECT_FALSE(backup_file.empty()); 482 EXPECT_FALSE(backup_file.empty());
483 backup_file = backup_file.AppendASCII("File_To"); 483 backup_file = backup_file.AppendASCII("File_To");
484 484
485 EXPECT_TRUE(base::PathExists(file_name_from)); 485 EXPECT_TRUE(base::PathExists(file_name_from));
486 EXPECT_TRUE(base::PathExists(file_name_to)); 486 EXPECT_TRUE(base::PathExists(file_name_to));
487 EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1)); 487 EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
488 EXPECT_TRUE(file_util::ContentsEqual(file_name_from, file_name_to)); 488 EXPECT_TRUE(base::ContentsEqual(file_name_from, file_name_to));
489 // verify that the backup path does exist 489 // verify that the backup path does exist
490 EXPECT_TRUE(base::PathExists(backup_file)); 490 EXPECT_TRUE(base::PathExists(backup_file));
491 EXPECT_FALSE(base::PathExists(alternate_to)); 491 EXPECT_FALSE(base::PathExists(alternate_to));
492 492
493 // test rollback() 493 // test rollback()
494 work_item->Rollback(); 494 work_item->Rollback();
495 495
496 EXPECT_TRUE(base::PathExists(file_name_from)); 496 EXPECT_TRUE(base::PathExists(file_name_from));
497 EXPECT_TRUE(base::PathExists(file_name_to)); 497 EXPECT_TRUE(base::PathExists(file_name_to));
498 EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1)); 498 EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
499 EXPECT_TRUE(file_util::ContentsEqual(exe_full_path, file_name_to)); 499 EXPECT_TRUE(base::ContentsEqual(exe_full_path, file_name_to));
500 // the backup file should be gone after rollback 500 // the backup file should be gone after rollback
501 EXPECT_FALSE(base::PathExists(backup_file)); 501 EXPECT_FALSE(base::PathExists(backup_file));
502 EXPECT_FALSE(base::PathExists(alternate_to)); 502 EXPECT_FALSE(base::PathExists(alternate_to));
503 } 503 }
504 504
505 // Test overwrite option IF_NOT_PRESENT: 505 // Test overwrite option IF_NOT_PRESENT:
506 // 1. If destination file/directory exist, the source should not be copied 506 // 1. If destination file/directory exist, the source should not be copied
507 // 2. If destination file/directory do not exist, the source should be copied 507 // 2. If destination file/directory do not exist, the source should be copied
508 // in the destination folder after Do() and should be rolled back after 508 // in the destination folder after Do() and should be rolled back after
509 // Rollback(). 509 // Rollback().
(...skipping 30 matching lines...) Expand all
540 file_name_to, temp_dir_.path(), 540 file_name_to, temp_dir_.path(),
541 WorkItem::IF_NOT_PRESENT, 541 WorkItem::IF_NOT_PRESENT,
542 base::FilePath())); 542 base::FilePath()));
543 EXPECT_TRUE(work_item->Do()); 543 EXPECT_TRUE(work_item->Do());
544 544
545 // verify that the source, destination have not changed and backup path 545 // verify that the source, destination have not changed and backup path
546 // does not exist 546 // does not exist
547 EXPECT_TRUE(base::PathExists(file_name_from)); 547 EXPECT_TRUE(base::PathExists(file_name_from));
548 EXPECT_TRUE(base::PathExists(file_name_to)); 548 EXPECT_TRUE(base::PathExists(file_name_to));
549 EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1)); 549 EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
550 EXPECT_TRUE(file_util::ContentsEqual(exe_full_path, file_name_to)); 550 EXPECT_TRUE(base::ContentsEqual(exe_full_path, file_name_to));
551 EXPECT_FALSE(base::PathExists(backup_file)); 551 EXPECT_FALSE(base::PathExists(backup_file));
552 552
553 // test rollback() 553 // test rollback()
554 work_item->Rollback(); 554 work_item->Rollback();
555 555
556 // verify that the source, destination have not changed and backup path 556 // verify that the source, destination have not changed and backup path
557 // does not exist after rollback also 557 // does not exist after rollback also
558 EXPECT_TRUE(base::PathExists(file_name_from)); 558 EXPECT_TRUE(base::PathExists(file_name_from));
559 EXPECT_TRUE(base::PathExists(file_name_to)); 559 EXPECT_TRUE(base::PathExists(file_name_to));
560 EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1)); 560 EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
561 EXPECT_TRUE(file_util::ContentsEqual(exe_full_path, file_name_to)); 561 EXPECT_TRUE(base::ContentsEqual(exe_full_path, file_name_to));
562 EXPECT_FALSE(base::PathExists(backup_file)); 562 EXPECT_FALSE(base::PathExists(backup_file));
563 563
564 // Now delete the destination and try copying the file again. 564 // Now delete the destination and try copying the file again.
565 base::Delete(file_name_to, true); 565 base::Delete(file_name_to, true);
566 work_item.reset(WorkItem::CreateCopyTreeWorkItem( 566 work_item.reset(WorkItem::CreateCopyTreeWorkItem(
567 file_name_from, file_name_to, 567 file_name_from, file_name_to,
568 temp_dir_.path(), WorkItem::IF_NOT_PRESENT, 568 temp_dir_.path(), WorkItem::IF_NOT_PRESENT,
569 base::FilePath())); 569 base::FilePath()));
570 EXPECT_TRUE(work_item->Do()); 570 EXPECT_TRUE(work_item->Do());
571 571
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
640 backup_file = work_item->backup_path_.path(); 640 backup_file = work_item->backup_path_.path();
641 EXPECT_FALSE(backup_file.empty()); 641 EXPECT_FALSE(backup_file.empty());
642 backup_file = backup_file.AppendASCII("File_To"); 642 backup_file = backup_file.AppendASCII("File_To");
643 643
644 EXPECT_TRUE(base::PathExists(file_name_from)); 644 EXPECT_TRUE(base::PathExists(file_name_from));
645 EXPECT_TRUE(base::PathExists(file_name_to)); 645 EXPECT_TRUE(base::PathExists(file_name_to));
646 EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1)); 646 EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
647 EXPECT_EQ(0, ReadTextFile(file_name_to.value()).compare(text_content_1)); 647 EXPECT_EQ(0, ReadTextFile(file_name_to.value()).compare(text_content_1));
648 // verify the file in used is moved to backup place. 648 // verify the file in used is moved to backup place.
649 EXPECT_TRUE(base::PathExists(backup_file)); 649 EXPECT_TRUE(base::PathExists(backup_file));
650 EXPECT_TRUE(file_util::ContentsEqual(exe_full_path, backup_file)); 650 EXPECT_TRUE(base::ContentsEqual(exe_full_path, backup_file));
651 } 651 }
652 652
653 // verify the file in used should be still at the backup place. 653 // verify the file in used should be still at the backup place.
654 EXPECT_TRUE(base::PathExists(backup_file)); 654 EXPECT_TRUE(base::PathExists(backup_file));
655 EXPECT_TRUE(file_util::ContentsEqual(exe_full_path, backup_file)); 655 EXPECT_TRUE(base::ContentsEqual(exe_full_path, backup_file));
656 656
657 TerminateProcess(pi.hProcess, 0); 657 TerminateProcess(pi.hProcess, 0);
658 // make sure the handle is closed. 658 // make sure the handle is closed.
659 EXPECT_TRUE(WaitForSingleObject(pi.hProcess, 10000) == WAIT_OBJECT_0); 659 EXPECT_TRUE(WaitForSingleObject(pi.hProcess, 10000) == WAIT_OBJECT_0);
660 CloseHandle(pi.hProcess); 660 CloseHandle(pi.hProcess);
661 CloseHandle(pi.hThread); 661 CloseHandle(pi.hThread);
662 } 662 }
663 663
664 // Copy a tree from source to destination. 664 // Copy a tree from source to destination.
665 // Flaky, http://crbug.com/59784. 665 // Flaky, http://crbug.com/59784.
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
704 704
705 EXPECT_TRUE(work_item->Do()); 705 EXPECT_TRUE(work_item->Do());
706 } 706 }
707 707
708 base::FilePath file_name_to_1(dir_name_to); 708 base::FilePath file_name_to_1(dir_name_to);
709 file_name_to_1 = file_name_to_1.AppendASCII("1"); 709 file_name_to_1 = file_name_to_1.AppendASCII("1");
710 file_name_to_1 = file_name_to_1.AppendASCII("File_1.txt"); 710 file_name_to_1 = file_name_to_1.AppendASCII("File_1.txt");
711 EXPECT_TRUE(base::PathExists(file_name_to_1)); 711 EXPECT_TRUE(base::PathExists(file_name_to_1));
712 VLOG(1) << "compare " << file_name_from_1.value() 712 VLOG(1) << "compare " << file_name_from_1.value()
713 << " and " << file_name_to_1.value(); 713 << " and " << file_name_to_1.value();
714 EXPECT_TRUE(file_util::ContentsEqual(file_name_from_1, file_name_to_1)); 714 EXPECT_TRUE(base::ContentsEqual(file_name_from_1, file_name_to_1));
715 715
716 base::FilePath file_name_to_2(dir_name_to); 716 base::FilePath file_name_to_2(dir_name_to);
717 file_name_to_2 = file_name_to_2.AppendASCII("2"); 717 file_name_to_2 = file_name_to_2.AppendASCII("2");
718 file_name_to_2 = file_name_to_2.AppendASCII("File_2.txt"); 718 file_name_to_2 = file_name_to_2.AppendASCII("File_2.txt");
719 EXPECT_TRUE(base::PathExists(file_name_to_2)); 719 EXPECT_TRUE(base::PathExists(file_name_to_2));
720 VLOG(1) << "compare " << file_name_from_2.value() 720 VLOG(1) << "compare " << file_name_from_2.value()
721 << " and " << file_name_to_2.value(); 721 << " and " << file_name_to_2.value();
722 EXPECT_TRUE(file_util::ContentsEqual(file_name_from_2, file_name_to_2)); 722 EXPECT_TRUE(base::ContentsEqual(file_name_from_2, file_name_to_2));
723 } 723 }
OLDNEW
« no previous file with comments | « chrome/installer/util/copy_tree_work_item.cc ('k') | chrome/installer/util/delete_after_reboot_helper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698