| Index: chrome/installer/util/copy_tree_work_item_unittest.cc
|
| ===================================================================
|
| --- chrome/installer/util/copy_tree_work_item_unittest.cc (revision 24065)
|
| +++ chrome/installer/util/copy_tree_work_item_unittest.cc (working copy)
|
| @@ -92,23 +92,24 @@
|
| // Copy one file from source to destination.
|
| TEST_F(CopyTreeWorkItemTest, CopyFile) {
|
| // Create source file
|
| - std::wstring file_name_from(test_dir_.ToWStringHack());
|
| - file_util::AppendToPath(&file_name_from, L"File_From.txt");
|
| - CreateTextFile(file_name_from, text_content_1);
|
| + FilePath file_name_from(test_dir_);
|
| + file_name_from = file_name_from.AppendASCII("File_From.txt");
|
| + CreateTextFile(file_name_from.value(), text_content_1);
|
| ASSERT_TRUE(file_util::PathExists(file_name_from));
|
|
|
| // Create destination path
|
| - std::wstring dir_name_to(test_dir_.ToWStringHack());
|
| - file_util::AppendToPath(&dir_name_to, L"Copy_To_Subdir");
|
| - CreateDirectory(dir_name_to.c_str(), NULL);
|
| + FilePath dir_name_to(test_dir_);
|
| + dir_name_to = dir_name_to.AppendASCII("Copy_To_Subdir");
|
| + CreateDirectory(dir_name_to.value().c_str(), NULL);
|
| ASSERT_TRUE(file_util::PathExists(dir_name_to));
|
|
|
| - std::wstring file_name_to(dir_name_to);
|
| - file_util::AppendToPath(&file_name_to, L"File_To.txt");
|
| + FilePath file_name_to(dir_name_to);
|
| + file_name_to = file_name_to.AppendASCII("File_To.txt");
|
|
|
| // test Do()
|
| scoped_ptr<CopyTreeWorkItem> work_item(
|
| - WorkItem::CreateCopyTreeWorkItem(file_name_from, file_name_to,
|
| + WorkItem::CreateCopyTreeWorkItem(file_name_from.ToWStringHack(),
|
| + file_name_to.ToWStringHack(),
|
| temp_dir_.ToWStringHack(),
|
| WorkItem::ALWAYS));
|
|
|
| @@ -130,25 +131,26 @@
|
| // regardless since the content at destination file is different from source.
|
| TEST_F(CopyTreeWorkItemTest, CopyFileOverwrite) {
|
| // Create source file
|
| - std::wstring file_name_from(test_dir_.ToWStringHack());
|
| - file_util::AppendToPath(&file_name_from, L"File_From.txt");
|
| - CreateTextFile(file_name_from, text_content_1);
|
| + FilePath file_name_from(test_dir_);
|
| + file_name_from = file_name_from.AppendASCII("File_From.txt");
|
| + CreateTextFile(file_name_from.value(), text_content_1);
|
| ASSERT_TRUE(file_util::PathExists(file_name_from));
|
|
|
| // Create destination file
|
| - std::wstring dir_name_to(test_dir_.ToWStringHack());
|
| - file_util::AppendToPath(&dir_name_to, L"Copy_To_Subdir");
|
| - CreateDirectory(dir_name_to.c_str(), NULL);
|
| + FilePath dir_name_to(test_dir_);
|
| + dir_name_to = dir_name_to.AppendASCII("Copy_To_Subdir");
|
| + CreateDirectory(dir_name_to.value().c_str(), NULL);
|
| ASSERT_TRUE(file_util::PathExists(dir_name_to));
|
|
|
| - std::wstring file_name_to(dir_name_to);
|
| - file_util::AppendToPath(&file_name_to, L"File_To.txt");
|
| - CreateTextFile(file_name_to, text_content_2);
|
| + FilePath file_name_to(dir_name_to);
|
| + file_name_to = file_name_to.AppendASCII("File_To.txt");
|
| + CreateTextFile(file_name_to.value(), text_content_2);
|
| ASSERT_TRUE(file_util::PathExists(file_name_to));
|
|
|
| // test Do() with always_overwrite being true.
|
| scoped_ptr<CopyTreeWorkItem> work_item(
|
| - WorkItem::CreateCopyTreeWorkItem(file_name_from, file_name_to,
|
| + WorkItem::CreateCopyTreeWorkItem(file_name_from.ToWStringHack(),
|
| + file_name_to.ToWStringHack(),
|
| temp_dir_.ToWStringHack(),
|
| WorkItem::ALWAYS));
|
|
|
| @@ -156,21 +158,22 @@
|
|
|
| EXPECT_TRUE(file_util::PathExists(file_name_from));
|
| EXPECT_TRUE(file_util::PathExists(file_name_to));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_from).compare(text_content_1));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_to).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_to.value()).compare(text_content_1));
|
|
|
| // test rollback()
|
| work_item->Rollback();
|
|
|
| EXPECT_TRUE(file_util::PathExists(file_name_from));
|
| EXPECT_TRUE(file_util::PathExists(file_name_to));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_from).compare(text_content_1));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_to).compare(text_content_2));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_to.value()).compare(text_content_2));
|
|
|
| // test Do() with always_overwrite being false.
|
| // the file is still overwritten since the content is different.
|
| work_item.reset(
|
| - WorkItem::CreateCopyTreeWorkItem(file_name_from, file_name_to,
|
| + WorkItem::CreateCopyTreeWorkItem(file_name_from.ToWStringHack(),
|
| + file_name_to.ToWStringHack(),
|
| temp_dir_.ToWStringHack(),
|
| WorkItem::IF_DIFFERENT));
|
|
|
| @@ -178,16 +181,16 @@
|
|
|
| EXPECT_TRUE(file_util::PathExists(file_name_from));
|
| EXPECT_TRUE(file_util::PathExists(file_name_to));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_from).compare(text_content_1));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_to).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_to.value()).compare(text_content_1));
|
|
|
| // test rollback()
|
| work_item->Rollback();
|
|
|
| EXPECT_TRUE(file_util::PathExists(file_name_from));
|
| EXPECT_TRUE(file_util::PathExists(file_name_to));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_from).compare(text_content_1));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_to).compare(text_content_2));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_to.value()).compare(text_content_2));
|
| }
|
|
|
| // Copy one file, with the existing one in destination having the same
|
| @@ -196,29 +199,30 @@
|
| // If always_overwrite being false, the file is unchanged.
|
| TEST_F(CopyTreeWorkItemTest, CopyFileSameContent) {
|
| // Create source file
|
| - std::wstring file_name_from(test_dir_.ToWStringHack());
|
| - file_util::AppendToPath(&file_name_from, L"File_From.txt");
|
| - CreateTextFile(file_name_from, text_content_1);
|
| + FilePath file_name_from(test_dir_);
|
| + file_name_from = file_name_from.AppendASCII("File_From.txt");
|
| + CreateTextFile(file_name_from.value(), text_content_1);
|
| ASSERT_TRUE(file_util::PathExists(file_name_from));
|
|
|
| // Create destination file
|
| - std::wstring dir_name_to(test_dir_.ToWStringHack());
|
| - file_util::AppendToPath(&dir_name_to, L"Copy_To_Subdir");
|
| - CreateDirectory(dir_name_to.c_str(), NULL);
|
| + FilePath dir_name_to(test_dir_);
|
| + dir_name_to = dir_name_to.AppendASCII("Copy_To_Subdir");
|
| + CreateDirectory(dir_name_to.value().c_str(), NULL);
|
| ASSERT_TRUE(file_util::PathExists(dir_name_to));
|
|
|
| - std::wstring file_name_to(dir_name_to);
|
| - file_util::AppendToPath(&file_name_to, L"File_To.txt");
|
| - CreateTextFile(file_name_to, text_content_1);
|
| + FilePath file_name_to(dir_name_to);
|
| + file_name_to = file_name_to.AppendASCII("File_To.txt");
|
| + CreateTextFile(file_name_to.value(), text_content_1);
|
| ASSERT_TRUE(file_util::PathExists(file_name_to));
|
|
|
| // Get the path of backup file
|
| - std::wstring backup_file(temp_dir_.ToWStringHack());
|
| - file_util::AppendToPath(&backup_file, L"File_To.txt");
|
| + FilePath backup_file(temp_dir_);
|
| + backup_file = backup_file.AppendASCII("File_To.txt");
|
|
|
| // test Do() with always_overwrite being true.
|
| scoped_ptr<CopyTreeWorkItem> work_item(
|
| - WorkItem::CreateCopyTreeWorkItem(file_name_from, file_name_to,
|
| + WorkItem::CreateCopyTreeWorkItem(file_name_from.ToWStringHack(),
|
| + file_name_to.ToWStringHack(),
|
| temp_dir_.ToWStringHack(),
|
| WorkItem::ALWAYS));
|
|
|
| @@ -226,26 +230,27 @@
|
|
|
| EXPECT_TRUE(file_util::PathExists(file_name_from));
|
| EXPECT_TRUE(file_util::PathExists(file_name_to));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_from).compare(text_content_1));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_to).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_to.value()).compare(text_content_1));
|
| // we verify the file is overwritten by checking the existence of backup
|
| // file.
|
| EXPECT_TRUE(file_util::PathExists(backup_file));
|
| - EXPECT_EQ(0, ReadTextFile(backup_file).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(backup_file.value()).compare(text_content_1));
|
|
|
| // test rollback()
|
| work_item->Rollback();
|
|
|
| EXPECT_TRUE(file_util::PathExists(file_name_from));
|
| EXPECT_TRUE(file_util::PathExists(file_name_to));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_from).compare(text_content_1));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_to).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_to.value()).compare(text_content_1));
|
| // the backup file should be gone after rollback
|
| EXPECT_FALSE(file_util::PathExists(backup_file));
|
|
|
| // test Do() with always_overwrite being false. nothing should change.
|
| work_item.reset(
|
| - WorkItem::CreateCopyTreeWorkItem(file_name_from, file_name_to,
|
| + WorkItem::CreateCopyTreeWorkItem(file_name_from.ToWStringHack(),
|
| + file_name_to.ToWStringHack(),
|
| temp_dir_.ToWStringHack(),
|
| WorkItem::IF_DIFFERENT));
|
|
|
| @@ -253,8 +258,8 @@
|
|
|
| EXPECT_TRUE(file_util::PathExists(file_name_from));
|
| EXPECT_TRUE(file_util::PathExists(file_name_to));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_from).compare(text_content_1));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_to).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_to.value()).compare(text_content_1));
|
| // we verify the file is not overwritten by checking that the backup
|
| // file does not exist.
|
| EXPECT_FALSE(file_util::PathExists(backup_file));
|
| @@ -264,38 +269,39 @@
|
|
|
| EXPECT_TRUE(file_util::PathExists(file_name_from));
|
| EXPECT_TRUE(file_util::PathExists(file_name_to));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_from).compare(text_content_1));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_to).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_to.value()).compare(text_content_1));
|
| EXPECT_FALSE(file_util::PathExists(backup_file));
|
| }
|
|
|
| // Copy one file and without rollback. Verify all temporary files are deleted.
|
| TEST_F(CopyTreeWorkItemTest, CopyFileAndCleanup) {
|
| // Create source file
|
| - std::wstring file_name_from(test_dir_.ToWStringHack());
|
| - file_util::AppendToPath(&file_name_from, L"File_From.txt");
|
| - CreateTextFile(file_name_from, text_content_1);
|
| + FilePath file_name_from(test_dir_);
|
| + file_name_from = file_name_from.AppendASCII("File_From.txt");
|
| + CreateTextFile(file_name_from.value(), text_content_1);
|
| ASSERT_TRUE(file_util::PathExists(file_name_from));
|
|
|
| // Create destination file
|
| - std::wstring dir_name_to(test_dir_.ToWStringHack());
|
| - file_util::AppendToPath(&dir_name_to, L"Copy_To_Subdir");
|
| - CreateDirectory(dir_name_to.c_str(), NULL);
|
| + FilePath dir_name_to(test_dir_);
|
| + dir_name_to = dir_name_to.AppendASCII("Copy_To_Subdir");
|
| + CreateDirectory(dir_name_to.value().c_str(), NULL);
|
| ASSERT_TRUE(file_util::PathExists(dir_name_to));
|
|
|
| - std::wstring file_name_to(dir_name_to);
|
| - file_util::AppendToPath(&file_name_to, L"File_To.txt");
|
| - CreateTextFile(file_name_to, text_content_2);
|
| + FilePath file_name_to(dir_name_to);
|
| + file_name_to = file_name_to.AppendASCII("File_To.txt");
|
| + CreateTextFile(file_name_to.value(), text_content_2);
|
| ASSERT_TRUE(file_util::PathExists(file_name_to));
|
|
|
| // Get the path of backup file
|
| - std::wstring backup_file(temp_dir_.ToWStringHack());
|
| - file_util::AppendToPath(&backup_file, L"File_To.txt");
|
| + FilePath backup_file(temp_dir_);
|
| + backup_file = backup_file.AppendASCII("File_To.txt");
|
|
|
| {
|
| // test Do().
|
| scoped_ptr<CopyTreeWorkItem> work_item(
|
| - WorkItem::CreateCopyTreeWorkItem(file_name_from, file_name_to,
|
| + WorkItem::CreateCopyTreeWorkItem(file_name_from.ToWStringHack(),
|
| + file_name_to.ToWStringHack(),
|
| temp_dir_.ToWStringHack(),
|
| WorkItem::IF_DIFFERENT));
|
|
|
| @@ -303,11 +309,11 @@
|
|
|
| EXPECT_TRUE(file_util::PathExists(file_name_from));
|
| EXPECT_TRUE(file_util::PathExists(file_name_to));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_from).compare(text_content_1));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_to).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_to.value()).compare(text_content_1));
|
| // verify the file is moved to backup place.
|
| EXPECT_TRUE(file_util::PathExists(backup_file));
|
| - EXPECT_EQ(0, ReadTextFile(backup_file).compare(text_content_2));
|
| + EXPECT_EQ(0, ReadTextFile(backup_file.value()).compare(text_content_2));
|
| }
|
|
|
| // verify the backup file is cleaned up as well.
|
| @@ -319,43 +325,45 @@
|
| // be moved to backup location after Do() and moved back after Rollback().
|
| TEST_F(CopyTreeWorkItemTest, CopyFileInUse) {
|
| // Create source file
|
| - std::wstring file_name_from(test_dir_.ToWStringHack());
|
| - file_util::AppendToPath(&file_name_from, L"File_From");
|
| - CreateTextFile(file_name_from, text_content_1);
|
| + FilePath file_name_from(test_dir_);
|
| + file_name_from = file_name_from.AppendASCII("File_From");
|
| + CreateTextFile(file_name_from.value(), text_content_1);
|
| ASSERT_TRUE(file_util::PathExists(file_name_from));
|
|
|
| // Create an executable in destination path by copying ourself to it.
|
| wchar_t exe_full_path_str[MAX_PATH];
|
| ::GetModuleFileName(NULL, exe_full_path_str, MAX_PATH);
|
| - std::wstring exe_full_path(exe_full_path_str);
|
| + FilePath exe_full_path(exe_full_path_str);
|
|
|
| - std::wstring dir_name_to(test_dir_.ToWStringHack());
|
| - file_util::AppendToPath(&dir_name_to, L"Copy_To_Subdir");
|
| - CreateDirectory(dir_name_to.c_str(), NULL);
|
| + FilePath dir_name_to(test_dir_);
|
| + dir_name_to = dir_name_to.AppendASCII("Copy_To_Subdir");
|
| + CreateDirectory(dir_name_to.value().c_str(), NULL);
|
| ASSERT_TRUE(file_util::PathExists(dir_name_to));
|
|
|
| - std::wstring file_name_to(dir_name_to);
|
| - file_util::AppendToPath(&file_name_to, L"File_To");
|
| + FilePath file_name_to(dir_name_to);
|
| + file_name_to = file_name_to.AppendASCII("File_To");
|
| file_util::CopyFile(exe_full_path, file_name_to);
|
| ASSERT_TRUE(file_util::PathExists(file_name_to));
|
|
|
| - LOG(INFO) << "copy ourself from " << exe_full_path << " to " << file_name_to;
|
| + LOG(INFO) << "copy ourself from "
|
| + << exe_full_path.value() << " to " << file_name_to.value();
|
|
|
| // Run the executable in destination path
|
| STARTUPINFOW si = {sizeof(si)};
|
| PROCESS_INFORMATION pi = {0};
|
| ASSERT_TRUE(
|
| - ::CreateProcess(NULL, const_cast<wchar_t*>(file_name_to.c_str()),
|
| + ::CreateProcess(NULL, const_cast<wchar_t*>(file_name_to.value().c_str()),
|
| NULL, NULL, FALSE, CREATE_NO_WINDOW | CREATE_SUSPENDED,
|
| NULL, NULL, &si, &pi));
|
|
|
| // Get the path of backup file
|
| - std::wstring backup_file(temp_dir_.ToWStringHack());
|
| - file_util::AppendToPath(&backup_file, L"File_To");
|
| + FilePath backup_file(temp_dir_);
|
| + backup_file = backup_file.AppendASCII("File_To");
|
|
|
| // test Do().
|
| scoped_ptr<CopyTreeWorkItem> work_item(
|
| - WorkItem::CreateCopyTreeWorkItem(file_name_from, file_name_to,
|
| + WorkItem::CreateCopyTreeWorkItem(file_name_from.ToWStringHack(),
|
| + file_name_to.ToWStringHack(),
|
| temp_dir_.ToWStringHack(),
|
| WorkItem::IF_DIFFERENT));
|
|
|
| @@ -363,8 +371,8 @@
|
|
|
| EXPECT_TRUE(file_util::PathExists(file_name_from));
|
| EXPECT_TRUE(file_util::PathExists(file_name_to));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_from).compare(text_content_1));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_to).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_to.value()).compare(text_content_1));
|
| // verify the file in used is moved to backup place.
|
| EXPECT_TRUE(file_util::PathExists(backup_file));
|
| EXPECT_TRUE(file_util::ContentsEqual(exe_full_path, backup_file));
|
| @@ -374,7 +382,7 @@
|
|
|
| EXPECT_TRUE(file_util::PathExists(file_name_from));
|
| EXPECT_TRUE(file_util::PathExists(file_name_to));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_from).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
|
| EXPECT_TRUE(file_util::ContentsEqual(exe_full_path, file_name_to));
|
| // the backup file should be gone after rollback
|
| EXPECT_FALSE(file_util::PathExists(backup_file));
|
| @@ -394,53 +402,55 @@
|
| // destination folder after Do() and should be rolled back after Rollback().
|
| TEST_F(CopyTreeWorkItemTest, NewNameAndCopyTest) {
|
| // Create source file
|
| - std::wstring file_name_from(test_dir_.ToWStringHack());
|
| - file_util::AppendToPath(&file_name_from, L"File_From");
|
| - CreateTextFile(file_name_from, text_content_1);
|
| + FilePath file_name_from(test_dir_);
|
| + file_name_from = file_name_from.AppendASCII("File_From");
|
| + CreateTextFile(file_name_from.value(), text_content_1);
|
| ASSERT_TRUE(file_util::PathExists(file_name_from));
|
|
|
| // Create an executable in destination path by copying ourself to it.
|
| wchar_t exe_full_path_str[MAX_PATH];
|
| ::GetModuleFileName(NULL, exe_full_path_str, MAX_PATH);
|
| - std::wstring exe_full_path(exe_full_path_str);
|
| + FilePath exe_full_path(exe_full_path_str);
|
|
|
| - std::wstring dir_name_to(test_dir_.ToWStringHack());
|
| - file_util::AppendToPath(&dir_name_to, L"Copy_To_Subdir");
|
| - CreateDirectory(dir_name_to.c_str(), NULL);
|
| + FilePath dir_name_to(test_dir_);
|
| + dir_name_to = dir_name_to.AppendASCII("Copy_To_Subdir");
|
| + CreateDirectory(dir_name_to.value().c_str(), NULL);
|
| ASSERT_TRUE(file_util::PathExists(dir_name_to));
|
|
|
| - std::wstring file_name_to(dir_name_to), alternate_to(dir_name_to);
|
| - file_util::AppendToPath(&file_name_to, L"File_To");
|
| - file_util::AppendToPath(&alternate_to, L"Alternate_To");
|
| + FilePath file_name_to(dir_name_to), alternate_to(dir_name_to);
|
| + file_name_to = file_name_to.AppendASCII("File_To");
|
| + alternate_to = alternate_to.AppendASCII("Alternate_To");
|
| file_util::CopyFile(exe_full_path, file_name_to);
|
| ASSERT_TRUE(file_util::PathExists(file_name_to));
|
|
|
| - LOG(INFO) << "copy ourself from " << exe_full_path << " to " << file_name_to;
|
| + LOG(INFO) << "copy ourself from "
|
| + << exe_full_path.value() << " to " << file_name_to.value();
|
|
|
| // Run the executable in destination path
|
| STARTUPINFOW si = {sizeof(si)};
|
| PROCESS_INFORMATION pi = {0};
|
| ASSERT_TRUE(
|
| - ::CreateProcess(NULL, const_cast<wchar_t*>(file_name_to.c_str()),
|
| + ::CreateProcess(NULL, const_cast<wchar_t*>(file_name_to.value().c_str()),
|
| NULL, NULL, FALSE, CREATE_NO_WINDOW | CREATE_SUSPENDED,
|
| NULL, NULL, &si, &pi));
|
|
|
| // Get the path of backup file
|
| - std::wstring backup_file(temp_dir_.ToWStringHack());
|
| - file_util::AppendToPath(&backup_file, L"File_To");
|
| + FilePath backup_file(temp_dir_);
|
| + backup_file = backup_file.AppendASCII("File_To");
|
|
|
| // test Do().
|
| scoped_ptr<CopyTreeWorkItem> work_item(
|
| - WorkItem::CreateCopyTreeWorkItem(file_name_from, file_name_to,
|
| + WorkItem::CreateCopyTreeWorkItem(file_name_from.ToWStringHack(),
|
| + file_name_to.ToWStringHack(),
|
| temp_dir_.ToWStringHack(),
|
| WorkItem::NEW_NAME_IF_IN_USE,
|
| - alternate_to));
|
| + alternate_to.ToWStringHack()));
|
|
|
| EXPECT_TRUE(work_item->Do());
|
|
|
| EXPECT_TRUE(file_util::PathExists(file_name_from));
|
| EXPECT_TRUE(file_util::PathExists(file_name_to));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_from).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
|
| EXPECT_TRUE(file_util::ContentsEqual(exe_full_path, file_name_to));
|
| // verify that the backup path does not exist
|
| EXPECT_FALSE(file_util::PathExists(backup_file));
|
| @@ -451,7 +461,7 @@
|
|
|
| EXPECT_TRUE(file_util::PathExists(file_name_from));
|
| EXPECT_TRUE(file_util::PathExists(file_name_to));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_from).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
|
| EXPECT_TRUE(file_util::ContentsEqual(exe_full_path, file_name_to));
|
| EXPECT_FALSE(file_util::PathExists(backup_file));
|
| // the alternate file should be gone after rollback
|
| @@ -464,18 +474,19 @@
|
| CloseHandle(pi.hThread);
|
|
|
| // Now the process has terminated, lets try overwriting the file again
|
| - work_item.reset(WorkItem::CreateCopyTreeWorkItem(file_name_from,
|
| - file_name_to, temp_dir_.ToWStringHack(), WorkItem::NEW_NAME_IF_IN_USE,
|
| - alternate_to));
|
| - if (IsFileInUse(file_name_to))
|
| + work_item.reset(WorkItem::CreateCopyTreeWorkItem(
|
| + file_name_from.ToWStringHack(), file_name_to.ToWStringHack(),
|
| + temp_dir_.ToWStringHack(), WorkItem::NEW_NAME_IF_IN_USE,
|
| + alternate_to.ToWStringHack()));
|
| + if (IsFileInUse(file_name_to.value()))
|
| PlatformThread::Sleep(2000);
|
| // If file is still in use, the rest of the test will fail.
|
| - ASSERT_FALSE(IsFileInUse(file_name_to));
|
| + ASSERT_FALSE(IsFileInUse(file_name_to.value()));
|
| EXPECT_TRUE(work_item->Do());
|
|
|
| EXPECT_TRUE(file_util::PathExists(file_name_from));
|
| EXPECT_TRUE(file_util::PathExists(file_name_to));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_from).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
|
| EXPECT_TRUE(file_util::ContentsEqual(file_name_from, file_name_to));
|
| // verify that the backup path does exist
|
| EXPECT_TRUE(file_util::PathExists(backup_file));
|
| @@ -486,7 +497,7 @@
|
|
|
| EXPECT_TRUE(file_util::PathExists(file_name_from));
|
| EXPECT_TRUE(file_util::PathExists(file_name_to));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_from).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
|
| EXPECT_TRUE(file_util::ContentsEqual(exe_full_path, file_name_to));
|
| // the backup file should be gone after rollback
|
| EXPECT_FALSE(file_util::PathExists(backup_file));
|
| @@ -500,39 +511,41 @@
|
| // Rollback().
|
| TEST_F(CopyTreeWorkItemTest, IfNotPresentTest) {
|
| // Create source file
|
| - std::wstring file_name_from(test_dir_.ToWStringHack());
|
| - file_util::AppendToPath(&file_name_from, L"File_From");
|
| - CreateTextFile(file_name_from, text_content_1);
|
| + FilePath file_name_from(test_dir_);
|
| + file_name_from = file_name_from.AppendASCII("File_From");
|
| + CreateTextFile(file_name_from.value(), text_content_1);
|
| ASSERT_TRUE(file_util::PathExists(file_name_from));
|
|
|
| // Create an executable in destination path by copying ourself to it.
|
| wchar_t exe_full_path_str[MAX_PATH];
|
| ::GetModuleFileName(NULL, exe_full_path_str, MAX_PATH);
|
| - std::wstring exe_full_path(exe_full_path_str);
|
| - std::wstring dir_name_to(test_dir_.ToWStringHack());
|
| - file_util::AppendToPath(&dir_name_to, L"Copy_To_Subdir");
|
| - CreateDirectory(dir_name_to.c_str(), NULL);
|
| + FilePath exe_full_path(exe_full_path_str);
|
| +
|
| + FilePath dir_name_to(test_dir_);
|
| + dir_name_to = dir_name_to.AppendASCII("Copy_To_Subdir");
|
| + CreateDirectory(dir_name_to.value().c_str(), NULL);
|
| ASSERT_TRUE(file_util::PathExists(dir_name_to));
|
| - std::wstring file_name_to(dir_name_to);
|
| - file_util::AppendToPath(&file_name_to, L"File_To");
|
| + FilePath file_name_to(dir_name_to);
|
| + file_name_to = file_name_to.AppendASCII("File_To");
|
| file_util::CopyFile(exe_full_path, file_name_to);
|
| ASSERT_TRUE(file_util::PathExists(file_name_to));
|
|
|
| // Get the path of backup file
|
| - std::wstring backup_file(temp_dir_.ToWStringHack());
|
| - file_util::AppendToPath(&backup_file, L"File_To");
|
| + FilePath backup_file(temp_dir_);
|
| + backup_file = backup_file.AppendASCII("File_To");
|
|
|
| // test Do().
|
| scoped_ptr<CopyTreeWorkItem> work_item(
|
| - WorkItem::CreateCopyTreeWorkItem(file_name_from, file_name_to,
|
| - temp_dir_.ToWStringHack(), WorkItem::IF_NOT_PRESENT, L""));
|
| + WorkItem::CreateCopyTreeWorkItem(file_name_from.ToWStringHack(),
|
| + file_name_to.ToWStringHack(), temp_dir_.ToWStringHack(),
|
| + WorkItem::IF_NOT_PRESENT, L""));
|
| EXPECT_TRUE(work_item->Do());
|
|
|
| // verify that the source, destination have not changed and backup path
|
| // does not exist
|
| EXPECT_TRUE(file_util::PathExists(file_name_from));
|
| EXPECT_TRUE(file_util::PathExists(file_name_to));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_from).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
|
| EXPECT_TRUE(file_util::ContentsEqual(exe_full_path, file_name_to));
|
| EXPECT_FALSE(file_util::PathExists(backup_file));
|
|
|
| @@ -543,23 +556,23 @@
|
| // does not exist after rollback also
|
| EXPECT_TRUE(file_util::PathExists(file_name_from));
|
| EXPECT_TRUE(file_util::PathExists(file_name_to));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_from).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
|
| EXPECT_TRUE(file_util::ContentsEqual(exe_full_path, file_name_to));
|
| EXPECT_FALSE(file_util::PathExists(backup_file));
|
|
|
| // Now delete the destination and try copying the file again.
|
| file_util::Delete(file_name_to, true);
|
| work_item.reset(WorkItem::CreateCopyTreeWorkItem(
|
| - file_name_from, file_name_to, temp_dir_.ToWStringHack(),
|
| - WorkItem::IF_NOT_PRESENT, L""));
|
| + file_name_from.ToWStringHack(), file_name_to.ToWStringHack(),
|
| + temp_dir_.ToWStringHack(), WorkItem::IF_NOT_PRESENT, L""));
|
| EXPECT_TRUE(work_item->Do());
|
|
|
| // verify that the source, destination are the same and backup path
|
| // does not exist
|
| EXPECT_TRUE(file_util::PathExists(file_name_from));
|
| EXPECT_TRUE(file_util::PathExists(file_name_to));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_from).compare(text_content_1));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_to).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_to.value()).compare(text_content_1));
|
| EXPECT_FALSE(file_util::PathExists(backup_file));
|
|
|
| // test rollback()
|
| @@ -568,7 +581,7 @@
|
| // verify that the destination does not exist anymore
|
| EXPECT_TRUE(file_util::PathExists(file_name_from));
|
| EXPECT_FALSE(file_util::PathExists(file_name_to));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_from).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
|
| EXPECT_FALSE(file_util::PathExists(backup_file));
|
| }
|
|
|
| @@ -576,44 +589,46 @@
|
| // Verify it is moved to backup location and stays there.
|
| TEST_F(CopyTreeWorkItemTest, CopyFileInUseAndCleanup) {
|
| // Create source file
|
| - std::wstring file_name_from(test_dir_.ToWStringHack());
|
| - file_util::AppendToPath(&file_name_from, L"File_From");
|
| - CreateTextFile(file_name_from, text_content_1);
|
| + FilePath file_name_from(test_dir_);
|
| + file_name_from = file_name_from.AppendASCII("File_From");
|
| + CreateTextFile(file_name_from.value(), text_content_1);
|
| ASSERT_TRUE(file_util::PathExists(file_name_from));
|
|
|
| // Create an executable in destination path by copying ourself to it.
|
| wchar_t exe_full_path_str[MAX_PATH];
|
| ::GetModuleFileName(NULL, exe_full_path_str, MAX_PATH);
|
| - std::wstring exe_full_path(exe_full_path_str);
|
| + FilePath exe_full_path(exe_full_path_str);
|
|
|
| - std::wstring dir_name_to(test_dir_.ToWStringHack());
|
| - file_util::AppendToPath(&dir_name_to, L"Copy_To_Subdir");
|
| - CreateDirectory(dir_name_to.c_str(), NULL);
|
| + FilePath dir_name_to(test_dir_);
|
| + dir_name_to = dir_name_to.AppendASCII("Copy_To_Subdir");
|
| + CreateDirectory(dir_name_to.value().c_str(), NULL);
|
| ASSERT_TRUE(file_util::PathExists(dir_name_to));
|
|
|
| - std::wstring file_name_to(dir_name_to);
|
| - file_util::AppendToPath(&file_name_to, L"File_To");
|
| + FilePath file_name_to(dir_name_to);
|
| + file_name_to = file_name_to.AppendASCII("File_To");
|
| file_util::CopyFile(exe_full_path, file_name_to);
|
| ASSERT_TRUE(file_util::PathExists(file_name_to));
|
|
|
| - LOG(INFO) << "copy ourself from " << exe_full_path << " to " << file_name_to;
|
| + LOG(INFO) << "copy ourself from "
|
| + << exe_full_path.value() << " to " << file_name_to.value();
|
|
|
| // Run the executable in destination path
|
| STARTUPINFOW si = {sizeof(si)};
|
| PROCESS_INFORMATION pi = {0};
|
| ASSERT_TRUE(
|
| - ::CreateProcess(NULL, const_cast<wchar_t*>(file_name_to.c_str()),
|
| + ::CreateProcess(NULL, const_cast<wchar_t*>(file_name_to.value().c_str()),
|
| NULL, NULL, FALSE, CREATE_NO_WINDOW | CREATE_SUSPENDED,
|
| NULL, NULL, &si, &pi));
|
|
|
| // Get the path of backup file
|
| - std::wstring backup_file(temp_dir_.ToWStringHack());
|
| - file_util::AppendToPath(&backup_file, L"File_To");
|
| + FilePath backup_file(temp_dir_);
|
| + backup_file = backup_file.AppendASCII("File_To");
|
|
|
| // test Do().
|
| {
|
| scoped_ptr<CopyTreeWorkItem> work_item(
|
| - WorkItem::CreateCopyTreeWorkItem(file_name_from, file_name_to,
|
| + WorkItem::CreateCopyTreeWorkItem(file_name_from.ToWStringHack(),
|
| + file_name_to.ToWStringHack(),
|
| temp_dir_.ToWStringHack(),
|
| WorkItem::IF_DIFFERENT));
|
|
|
| @@ -621,8 +636,8 @@
|
|
|
| EXPECT_TRUE(file_util::PathExists(file_name_from));
|
| EXPECT_TRUE(file_util::PathExists(file_name_to));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_from).compare(text_content_1));
|
| - EXPECT_EQ(0, ReadTextFile(file_name_to).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_from.value()).compare(text_content_1));
|
| + EXPECT_EQ(0, ReadTextFile(file_name_to.value()).compare(text_content_1));
|
| // verify the file in used is moved to backup place.
|
| EXPECT_TRUE(file_util::PathExists(backup_file));
|
| EXPECT_TRUE(file_util::ContentsEqual(exe_full_path, backup_file));
|
| @@ -642,55 +657,58 @@
|
| // Copy a tree from source to destination.
|
| TEST_F(CopyTreeWorkItemTest, CopyTree) {
|
| // Create source tree
|
| - std::wstring dir_name_from(test_dir_.ToWStringHack());
|
| - file_util::AppendToPath(&dir_name_from, L"from");
|
| - CreateDirectory(dir_name_from.c_str(), NULL);
|
| + FilePath dir_name_from(test_dir_);
|
| + dir_name_from = dir_name_from.AppendASCII("from");
|
| + CreateDirectory(dir_name_from.value().c_str(), NULL);
|
| ASSERT_TRUE(file_util::PathExists(dir_name_from));
|
|
|
| - std::wstring dir_name_from_1(dir_name_from);
|
| - file_util::AppendToPath(&dir_name_from_1, L"1");
|
| - CreateDirectory(dir_name_from_1.c_str(), NULL);
|
| + FilePath dir_name_from_1(dir_name_from);
|
| + dir_name_from_1 = dir_name_from_1.AppendASCII("1");
|
| + CreateDirectory(dir_name_from_1.value().c_str(), NULL);
|
| ASSERT_TRUE(file_util::PathExists(dir_name_from_1));
|
|
|
| - std::wstring dir_name_from_2(dir_name_from);
|
| - file_util::AppendToPath(&dir_name_from_2, L"2");
|
| - CreateDirectory(dir_name_from_2.c_str(), NULL);
|
| + FilePath dir_name_from_2(dir_name_from);
|
| + dir_name_from_2 = dir_name_from_2.AppendASCII("2");
|
| + CreateDirectory(dir_name_from_2.value().c_str(), NULL);
|
| ASSERT_TRUE(file_util::PathExists(dir_name_from_2));
|
|
|
| - std::wstring file_name_from_1(dir_name_from_1);
|
| - file_util::AppendToPath(&file_name_from_1, L"File_1.txt");
|
| - CreateTextFile(file_name_from_1, text_content_1);
|
| + FilePath file_name_from_1(dir_name_from_1);
|
| + file_name_from_1 = file_name_from_1.AppendASCII("File_1.txt");
|
| + CreateTextFile(file_name_from_1.value(), text_content_1);
|
| ASSERT_TRUE(file_util::PathExists(file_name_from_1));
|
|
|
| - std::wstring file_name_from_2(dir_name_from_2);
|
| - file_util::AppendToPath(&file_name_from_2, L"File_2.txt");
|
| - CreateTextFile(file_name_from_2, text_content_1);
|
| + FilePath file_name_from_2(dir_name_from_2);
|
| + file_name_from_2 = file_name_from_2.AppendASCII("File_2.txt");
|
| + CreateTextFile(file_name_from_2.value(), text_content_1);
|
| ASSERT_TRUE(file_util::PathExists(file_name_from_2));
|
|
|
| - std::wstring dir_name_to(test_dir_.ToWStringHack());
|
| - file_util::AppendToPath(&dir_name_to, L"to");
|
| + FilePath dir_name_to(test_dir_);
|
| + dir_name_to = dir_name_to.AppendASCII("to");
|
|
|
| // test Do()
|
| {
|
| scoped_ptr<CopyTreeWorkItem> work_item(
|
| - WorkItem::CreateCopyTreeWorkItem(dir_name_from, dir_name_to,
|
| + WorkItem::CreateCopyTreeWorkItem(dir_name_from.ToWStringHack(),
|
| + dir_name_to.ToWStringHack(),
|
| temp_dir_.ToWStringHack(),
|
| WorkItem::ALWAYS));
|
|
|
| EXPECT_TRUE(work_item->Do());
|
| }
|
|
|
| - std::wstring file_name_to_1(dir_name_to);
|
| - file_util::AppendToPath(&file_name_to_1, L"1");
|
| - file_util::AppendToPath(&file_name_to_1, L"File_1.txt");
|
| + FilePath file_name_to_1(dir_name_to);
|
| + file_name_to_1 = file_name_to_1.AppendASCII("1");
|
| + file_name_to_1 = file_name_to_1.AppendASCII("File_1.txt");
|
| EXPECT_TRUE(file_util::PathExists(file_name_to_1));
|
| - LOG(INFO) << "compare " << file_name_from_1 << " and " << file_name_to_1;
|
| + LOG(INFO) << "compare "
|
| + << file_name_from_1.value() << " and " << file_name_to_1.value();
|
| EXPECT_TRUE(file_util::ContentsEqual(file_name_from_1, file_name_to_1));
|
|
|
| - std::wstring file_name_to_2(dir_name_to);
|
| - file_util::AppendToPath(&file_name_to_2, L"2");
|
| - file_util::AppendToPath(&file_name_to_2, L"File_2.txt");
|
| + FilePath file_name_to_2(dir_name_to);
|
| + file_name_to_2 = file_name_to_2.AppendASCII("2");
|
| + file_name_to_2 = file_name_to_2.AppendASCII("File_2.txt");
|
| EXPECT_TRUE(file_util::PathExists(file_name_to_2));
|
| - LOG(INFO) << "compare " << file_name_from_2 << " and " << file_name_to_2;
|
| + LOG(INFO) << "compare "
|
| + << file_name_from_2.value() << " and " << file_name_to_2.value();
|
| EXPECT_TRUE(file_util::ContentsEqual(file_name_from_2, file_name_to_2));
|
| }
|
|
|