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

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

Issue 6793008: Replacing base::DIR_TEMP with ScopedTempDir when appropriate. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Paweł's comments on Round 2. Created 9 years, 8 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) 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 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"
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/scoped_ptr.h"
13 #include "base/memory/scoped_temp_dir.h" 13 #include "base/memory/scoped_temp_dir.h"
14 #include "base/path_service.h" 14 #include "base/path_service.h"
15 #include "base/process_util.h" 15 #include "base/process_util.h"
16 #include "base/string_util.h" 16 #include "base/string_util.h"
17 #include "chrome/installer/util/delete_tree_work_item.h" 17 #include "chrome/installer/util/delete_tree_work_item.h"
18 #include "chrome/installer/util/work_item.h" 18 #include "chrome/installer/util/work_item.h"
19 #include "testing/gtest/include/gtest/gtest.h" 19 #include "testing/gtest/include/gtest/gtest.h"
20 20
21 namespace { 21 namespace {
22 class DeleteTreeWorkItemTest : public testing::Test { 22 class DeleteTreeWorkItemTest : public testing::Test {
23 protected: 23 protected:
24 virtual void SetUp() { 24 virtual void SetUp() {
25 // Name a subdirectory of the user temp directory. 25 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
26 ASSERT_TRUE(PathService::Get(base::DIR_TEMP, &test_dir_));
27 test_dir_ = test_dir_.AppendASCII("DeleteTreeWorkItemTest");
28
29 // Create a fresh, empty copy of this test directory.
30 file_util::Delete(test_dir_, true);
31 file_util::CreateDirectoryW(test_dir_);
32
33 ASSERT_TRUE(file_util::PathExists(test_dir_));
34 } 26 }
35 27
36 virtual void TearDown() { 28 // The temporary directory used to contain the test operations.
37 // Clean up test directory 29 ScopedTempDir temp_dir_;
38 ASSERT_TRUE(file_util::Delete(test_dir_, true));
39 ASSERT_FALSE(file_util::PathExists(test_dir_));
40 }
41
42 // the path to temporary directory used to contain the test operations
43 FilePath test_dir_;
44 }; 30 };
45 31
46 // Simple function to dump some text into a new file. 32 // Simple function to dump some text into a new file.
47 void CreateTextFile(const std::wstring& filename, 33 void CreateTextFile(const std::wstring& filename,
48 const std::wstring& contents) { 34 const std::wstring& contents) {
49 std::ofstream file; 35 std::ofstream file;
50 file.open(filename.c_str()); 36 file.open(filename.c_str());
51 ASSERT_TRUE(file.is_open()); 37 ASSERT_TRUE(file.is_open());
52 file << contents; 38 file << contents;
53 file.close(); 39 file.close();
54 } 40 }
55 41
56 wchar_t text_content_1[] = L"delete me"; 42 wchar_t text_content_1[] = L"delete me";
57 wchar_t text_content_2[] = L"delete me as well"; 43 wchar_t text_content_2[] = L"delete me as well";
58 }; 44 };
59 45
60 // Delete a tree without key path. Everything should be deleted. 46 // Delete a tree without key path. Everything should be deleted.
61 TEST_F(DeleteTreeWorkItemTest, DeleteTreeNoKeyPath) { 47 TEST_F(DeleteTreeWorkItemTest, DeleteTreeNoKeyPath) {
62 // Create tree to be deleted 48 // Create tree to be deleted.
63 FilePath dir_name_delete(test_dir_); 49 FilePath dir_name_delete(temp_dir_.path());
64 dir_name_delete = dir_name_delete.AppendASCII("to_be_delete"); 50 dir_name_delete = dir_name_delete.AppendASCII("to_be_delete");
65 file_util::CreateDirectory(dir_name_delete); 51 file_util::CreateDirectory(dir_name_delete);
66 ASSERT_TRUE(file_util::PathExists(dir_name_delete)); 52 ASSERT_TRUE(file_util::PathExists(dir_name_delete));
67 53
68 FilePath dir_name_delete_1(dir_name_delete); 54 FilePath dir_name_delete_1(dir_name_delete);
69 dir_name_delete_1 = dir_name_delete_1.AppendASCII("1"); 55 dir_name_delete_1 = dir_name_delete_1.AppendASCII("1");
70 file_util::CreateDirectory(dir_name_delete_1); 56 file_util::CreateDirectory(dir_name_delete_1);
71 ASSERT_TRUE(file_util::PathExists(dir_name_delete_1)); 57 ASSERT_TRUE(file_util::PathExists(dir_name_delete_1));
72 58
73 FilePath dir_name_delete_2(dir_name_delete); 59 FilePath dir_name_delete_2(dir_name_delete);
74 dir_name_delete_2 = dir_name_delete_2.AppendASCII("2"); 60 dir_name_delete_2 = dir_name_delete_2.AppendASCII("2");
75 file_util::CreateDirectory(dir_name_delete_2); 61 file_util::CreateDirectory(dir_name_delete_2);
76 ASSERT_TRUE(file_util::PathExists(dir_name_delete_2)); 62 ASSERT_TRUE(file_util::PathExists(dir_name_delete_2));
77 63
78 FilePath file_name_delete_1(dir_name_delete_1); 64 FilePath file_name_delete_1(dir_name_delete_1);
79 file_name_delete_1 = file_name_delete_1.AppendASCII("File_1.txt"); 65 file_name_delete_1 = file_name_delete_1.AppendASCII("File_1.txt");
80 CreateTextFile(file_name_delete_1.value(), text_content_1); 66 CreateTextFile(file_name_delete_1.value(), text_content_1);
81 ASSERT_TRUE(file_util::PathExists(file_name_delete_1)); 67 ASSERT_TRUE(file_util::PathExists(file_name_delete_1));
82 68
83 FilePath file_name_delete_2(dir_name_delete_2); 69 FilePath file_name_delete_2(dir_name_delete_2);
84 file_name_delete_2 = file_name_delete_2.AppendASCII("File_2.txt"); 70 file_name_delete_2 = file_name_delete_2.AppendASCII("File_2.txt");
85 CreateTextFile(file_name_delete_2.value(), text_content_1); 71 CreateTextFile(file_name_delete_2.value(), text_content_1);
86 ASSERT_TRUE(file_util::PathExists(file_name_delete_2)); 72 ASSERT_TRUE(file_util::PathExists(file_name_delete_2));
87 73
88 // test Do() 74 // Test Do().
89 ScopedTempDir temp_dir; 75 ScopedTempDir temp_dir;
90 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); 76 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
91 77
92 std::vector<FilePath> key_files; 78 std::vector<FilePath> key_files;
93 scoped_ptr<DeleteTreeWorkItem> work_item( 79 scoped_ptr<DeleteTreeWorkItem> work_item(
94 WorkItem::CreateDeleteTreeWorkItem(dir_name_delete, temp_dir.path(), 80 WorkItem::CreateDeleteTreeWorkItem(dir_name_delete, temp_dir.path(),
95 key_files)); 81 key_files));
96 EXPECT_TRUE(work_item->Do()); 82 EXPECT_TRUE(work_item->Do());
97 83
98 // everything should be gone 84 // everything should be gone
99 EXPECT_FALSE(file_util::PathExists(file_name_delete_1)); 85 EXPECT_FALSE(file_util::PathExists(file_name_delete_1));
100 EXPECT_FALSE(file_util::PathExists(file_name_delete_2)); 86 EXPECT_FALSE(file_util::PathExists(file_name_delete_2));
101 EXPECT_FALSE(file_util::PathExists(dir_name_delete)); 87 EXPECT_FALSE(file_util::PathExists(dir_name_delete));
102 88
103 work_item->Rollback(); 89 work_item->Rollback();
104 // everything should come back 90 // everything should come back
105 EXPECT_TRUE(file_util::PathExists(file_name_delete_1)); 91 EXPECT_TRUE(file_util::PathExists(file_name_delete_1));
106 EXPECT_TRUE(file_util::PathExists(file_name_delete_2)); 92 EXPECT_TRUE(file_util::PathExists(file_name_delete_2));
107 EXPECT_TRUE(file_util::PathExists(dir_name_delete)); 93 EXPECT_TRUE(file_util::PathExists(dir_name_delete));
108 } 94 }
109 95
110 96
111 // Delete a tree with keypath but not in use. Everything should be gone. 97 // Delete a tree with keypath but not in use. Everything should be gone.
112 // Rollback should bring back everything 98 // Rollback should bring back everything
113 TEST_F(DeleteTreeWorkItemTest, DeleteTree) { 99 TEST_F(DeleteTreeWorkItemTest, DeleteTree) {
114 // Create tree to be deleted 100 // Create tree to be deleted
115 FilePath dir_name_delete(test_dir_); 101 FilePath dir_name_delete(temp_dir_.path());
116 dir_name_delete = dir_name_delete.AppendASCII("to_be_delete"); 102 dir_name_delete = dir_name_delete.AppendASCII("to_be_delete");
117 file_util::CreateDirectory(dir_name_delete); 103 file_util::CreateDirectory(dir_name_delete);
118 ASSERT_TRUE(file_util::PathExists(dir_name_delete)); 104 ASSERT_TRUE(file_util::PathExists(dir_name_delete));
119 105
120 FilePath dir_name_delete_1(dir_name_delete); 106 FilePath dir_name_delete_1(dir_name_delete);
121 dir_name_delete_1 = dir_name_delete_1.AppendASCII("1"); 107 dir_name_delete_1 = dir_name_delete_1.AppendASCII("1");
122 file_util::CreateDirectory(dir_name_delete_1); 108 file_util::CreateDirectory(dir_name_delete_1);
123 ASSERT_TRUE(file_util::PathExists(dir_name_delete_1)); 109 ASSERT_TRUE(file_util::PathExists(dir_name_delete_1));
124 110
125 FilePath dir_name_delete_2(dir_name_delete); 111 FilePath dir_name_delete_2(dir_name_delete);
(...skipping 29 matching lines...) Expand all
155 work_item->Rollback(); 141 work_item->Rollback();
156 // everything should come back 142 // everything should come back
157 EXPECT_TRUE(file_util::PathExists(file_name_delete_1)); 143 EXPECT_TRUE(file_util::PathExists(file_name_delete_1));
158 EXPECT_TRUE(file_util::PathExists(file_name_delete_2)); 144 EXPECT_TRUE(file_util::PathExists(file_name_delete_2));
159 EXPECT_TRUE(file_util::PathExists(dir_name_delete)); 145 EXPECT_TRUE(file_util::PathExists(dir_name_delete));
160 } 146 }
161 147
162 // Delete a tree with key_path in use. Everything should still be there. 148 // Delete a tree with key_path in use. Everything should still be there.
163 TEST_F(DeleteTreeWorkItemTest, DeleteTreeInUse) { 149 TEST_F(DeleteTreeWorkItemTest, DeleteTreeInUse) {
164 // Create tree to be deleted 150 // Create tree to be deleted
165 FilePath dir_name_delete(test_dir_); 151 FilePath dir_name_delete(temp_dir_.path());
166 dir_name_delete = dir_name_delete.AppendASCII("to_be_delete"); 152 dir_name_delete = dir_name_delete.AppendASCII("to_be_delete");
167 file_util::CreateDirectory(dir_name_delete); 153 file_util::CreateDirectory(dir_name_delete);
168 ASSERT_TRUE(file_util::PathExists(dir_name_delete)); 154 ASSERT_TRUE(file_util::PathExists(dir_name_delete));
169 155
170 FilePath dir_name_delete_1(dir_name_delete); 156 FilePath dir_name_delete_1(dir_name_delete);
171 dir_name_delete_1 = dir_name_delete_1.AppendASCII("1"); 157 dir_name_delete_1 = dir_name_delete_1.AppendASCII("1");
172 file_util::CreateDirectory(dir_name_delete_1); 158 file_util::CreateDirectory(dir_name_delete_1);
173 ASSERT_TRUE(file_util::PathExists(dir_name_delete_1)); 159 ASSERT_TRUE(file_util::PathExists(dir_name_delete_1));
174 160
175 FilePath dir_name_delete_2(dir_name_delete); 161 FilePath dir_name_delete_2(dir_name_delete);
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 211
226 // verify everything is still there. 212 // verify everything is still there.
227 EXPECT_TRUE(file_util::PathExists(key_path)); 213 EXPECT_TRUE(file_util::PathExists(key_path));
228 EXPECT_TRUE(file_util::PathExists(file_name_delete_1)); 214 EXPECT_TRUE(file_util::PathExists(file_name_delete_1));
229 EXPECT_TRUE(file_util::PathExists(file_name_delete_2)); 215 EXPECT_TRUE(file_util::PathExists(file_name_delete_2));
230 216
231 TerminateProcess(pi.hProcess, 0); 217 TerminateProcess(pi.hProcess, 0);
232 // make sure the handle is closed. 218 // make sure the handle is closed.
233 WaitForSingleObject(pi.hProcess, INFINITE); 219 WaitForSingleObject(pi.hProcess, INFINITE);
234 } 220 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698