OLD | NEW |
---|---|
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 "base/file_util.h" | 5 #include "base/file_util.h" |
6 #include "base/files/scoped_temp_dir.h" | 6 #include "base/files/scoped_temp_dir.h" |
7 #include "base/platform_file.h" | 7 #include "base/platform_file.h" |
8 #include "base/time.h" | 8 #include "base/time.h" |
9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
10 | 10 |
(...skipping 17 matching lines...) Expand all Loading... | |
28 } // namespace | 28 } // namespace |
29 | 29 |
30 TEST(PlatformFile, CreatePlatformFile) { | 30 TEST(PlatformFile, CreatePlatformFile) { |
31 base::ScopedTempDir temp_dir; | 31 base::ScopedTempDir temp_dir; |
32 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 32 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
33 FilePath file_path = temp_dir.path().AppendASCII("create_file_1"); | 33 FilePath file_path = temp_dir.path().AppendASCII("create_file_1"); |
34 | 34 |
35 // Open a file that doesn't exist. | 35 // Open a file that doesn't exist. |
36 base::PlatformFileError error_code = base::PLATFORM_FILE_OK; | 36 base::PlatformFileError error_code = base::PLATFORM_FILE_OK; |
37 base::PlatformFile file = base::CreatePlatformFile( | 37 base::PlatformFile file = base::CreatePlatformFile( |
38 file_path, base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_READ, | 38 file_path, |
39 NULL, &error_code); | 39 base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_READ, |
40 NULL, | |
41 &error_code); | |
40 EXPECT_EQ(base::kInvalidPlatformFileValue, file); | 42 EXPECT_EQ(base::kInvalidPlatformFileValue, file); |
41 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, error_code); | 43 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, error_code); |
42 | 44 |
43 // Open or create a file. | 45 // Open or create a file. |
44 bool created = false; | 46 bool created = false; |
45 error_code = base::PLATFORM_FILE_OK; | 47 error_code = base::PLATFORM_FILE_OK; |
46 file = base::CreatePlatformFile( | 48 file = base::CreatePlatformFile( |
47 file_path, base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_READ, | 49 file_path, |
48 &created, &error_code); | 50 base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_READ, |
51 &created, | |
52 &error_code); | |
49 EXPECT_NE(base::kInvalidPlatformFileValue, file); | 53 EXPECT_NE(base::kInvalidPlatformFileValue, file); |
50 EXPECT_TRUE(created); | 54 EXPECT_TRUE(created); |
51 EXPECT_EQ(base::PLATFORM_FILE_OK, error_code); | 55 EXPECT_EQ(base::PLATFORM_FILE_OK, error_code); |
52 base::ClosePlatformFile(file); | 56 base::ClosePlatformFile(file); |
53 | 57 |
54 // Open an existing file. | 58 // Open an existing file. |
55 created = false; | 59 created = false; |
56 file = base::CreatePlatformFile( | 60 file = base::CreatePlatformFile( |
57 file_path, base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_READ, | 61 file_path, |
58 &created, &error_code); | 62 base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_READ, |
63 &created, | |
64 &error_code); | |
59 EXPECT_NE(base::kInvalidPlatformFileValue, file); | 65 EXPECT_NE(base::kInvalidPlatformFileValue, file); |
60 EXPECT_FALSE(created); | 66 EXPECT_FALSE(created); |
61 EXPECT_EQ(base::PLATFORM_FILE_OK, error_code); | 67 EXPECT_EQ(base::PLATFORM_FILE_OK, error_code); |
62 base::ClosePlatformFile(file); | 68 base::ClosePlatformFile(file); |
63 | 69 |
64 // Create a file that exists. | 70 // Create a file that exists. |
65 file = base::CreatePlatformFile( | 71 file = base::CreatePlatformFile( |
66 file_path, base::PLATFORM_FILE_CREATE | base::PLATFORM_FILE_READ, | 72 file_path, |
67 &created, &error_code); | 73 base::PLATFORM_FILE_CREATE | base::PLATFORM_FILE_READ, |
74 &created, | |
75 &error_code); | |
68 EXPECT_EQ(base::kInvalidPlatformFileValue, file); | 76 EXPECT_EQ(base::kInvalidPlatformFileValue, file); |
69 EXPECT_FALSE(created); | 77 EXPECT_FALSE(created); |
70 EXPECT_EQ(base::PLATFORM_FILE_ERROR_EXISTS, error_code); | 78 EXPECT_EQ(base::PLATFORM_FILE_ERROR_EXISTS, error_code); |
71 | 79 |
72 // Create or overwrite a file. | 80 // Create or overwrite a file. |
73 error_code = base::PLATFORM_FILE_OK; | 81 error_code = base::PLATFORM_FILE_OK; |
74 file = base::CreatePlatformFile( | 82 file = base::CreatePlatformFile( |
75 file_path, base::PLATFORM_FILE_CREATE_ALWAYS | base::PLATFORM_FILE_READ, | 83 file_path, |
76 &created, &error_code); | 84 base::PLATFORM_FILE_CREATE_ALWAYS | base::PLATFORM_FILE_READ, |
85 &created, | |
86 &error_code); | |
77 EXPECT_NE(base::kInvalidPlatformFileValue, file); | 87 EXPECT_NE(base::kInvalidPlatformFileValue, file); |
78 EXPECT_TRUE(created); | 88 EXPECT_TRUE(created); |
79 EXPECT_EQ(base::PLATFORM_FILE_OK, error_code); | 89 EXPECT_EQ(base::PLATFORM_FILE_OK, error_code); |
80 base::ClosePlatformFile(file); | 90 base::ClosePlatformFile(file); |
81 | 91 |
82 // Create a delete-on-close file. | 92 // Create a delete-on-close file. |
83 created = false; | 93 created = false; |
84 file_path = temp_dir.path().AppendASCII("create_file_2"); | 94 file_path = temp_dir.path().AppendASCII("create_file_2"); |
85 file = base::CreatePlatformFile( | 95 file = base::CreatePlatformFile( |
86 file_path, | 96 file_path, |
87 base::PLATFORM_FILE_OPEN_ALWAYS | | 97 base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_DELETE_ON_CLOSE | |
88 base::PLATFORM_FILE_DELETE_ON_CLOSE | | 98 base::PLATFORM_FILE_READ, |
89 base::PLATFORM_FILE_READ, | |
90 &created, &error_code); | 99 &created, &error_code); |
jar (doing other things)
2013/06/06 15:46:45
nit: separate lines
| |
91 EXPECT_NE(base::kInvalidPlatformFileValue, file); | 100 EXPECT_NE(base::kInvalidPlatformFileValue, file); |
92 EXPECT_TRUE(created); | 101 EXPECT_TRUE(created); |
93 EXPECT_EQ(base::PLATFORM_FILE_OK, error_code); | 102 EXPECT_EQ(base::PLATFORM_FILE_OK, error_code); |
94 | 103 |
95 EXPECT_TRUE(base::ClosePlatformFile(file)); | 104 EXPECT_TRUE(base::ClosePlatformFile(file)); |
96 EXPECT_FALSE(file_util::PathExists(file_path)); | 105 EXPECT_FALSE(file_util::PathExists(file_path)); |
97 } | 106 } |
98 | 107 |
99 TEST(PlatformFile, DeleteOpenFile) { | 108 TEST(PlatformFile, DeleteOpenFile) { |
100 base::ScopedTempDir temp_dir; | 109 base::ScopedTempDir temp_dir; |
101 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 110 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
102 FilePath file_path = temp_dir.path().AppendASCII("create_file_1"); | 111 FilePath file_path = temp_dir.path().AppendASCII("create_file_1"); |
103 | 112 |
104 // Create a file. | 113 // Create a file. |
105 bool created = false; | 114 bool created = false; |
106 base::PlatformFileError error_code = base::PLATFORM_FILE_OK; | 115 base::PlatformFileError error_code = base::PLATFORM_FILE_OK; |
107 base::PlatformFile file = base::CreatePlatformFile( | 116 base::PlatformFile file = base::CreatePlatformFile( |
108 file_path, | 117 file_path, |
109 base::PLATFORM_FILE_OPEN_ALWAYS | | 118 base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_READ | |
110 base::PLATFORM_FILE_READ | | 119 base::PLATFORM_FILE_SHARE_DELETE, |
111 base::PLATFORM_FILE_SHARE_DELETE, | 120 &created, |
112 &created, &error_code); | 121 &error_code); |
113 EXPECT_NE(base::kInvalidPlatformFileValue, file); | 122 EXPECT_NE(base::kInvalidPlatformFileValue, file); |
114 EXPECT_TRUE(created); | 123 EXPECT_TRUE(created); |
115 EXPECT_EQ(base::PLATFORM_FILE_OK, error_code); | 124 EXPECT_EQ(base::PLATFORM_FILE_OK, error_code); |
116 | 125 |
117 // Open an existing file and mark it as delete on close. | 126 // Open an existing file and mark it as delete on close. |
118 created = false; | 127 created = false; |
119 base::PlatformFile same_file = base::CreatePlatformFile( | 128 base::PlatformFile same_file = base::CreatePlatformFile( |
120 file_path, | 129 file_path, |
121 base::PLATFORM_FILE_OPEN | | 130 base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_DELETE_ON_CLOSE | |
122 base::PLATFORM_FILE_DELETE_ON_CLOSE | | 131 base::PLATFORM_FILE_READ, |
123 base::PLATFORM_FILE_READ, | 132 &created, |
124 &created, &error_code); | 133 &error_code); |
125 EXPECT_NE(base::kInvalidPlatformFileValue, file); | 134 EXPECT_NE(base::kInvalidPlatformFileValue, file); |
126 EXPECT_FALSE(created); | 135 EXPECT_FALSE(created); |
127 EXPECT_EQ(base::PLATFORM_FILE_OK, error_code); | 136 EXPECT_EQ(base::PLATFORM_FILE_OK, error_code); |
128 | 137 |
129 // Close both handles and check that the file is gone. | 138 // Close both handles and check that the file is gone. |
130 base::ClosePlatformFile(file); | 139 base::ClosePlatformFile(file); |
131 base::ClosePlatformFile(same_file); | 140 base::ClosePlatformFile(same_file); |
132 EXPECT_FALSE(file_util::PathExists(file_path)); | 141 EXPECT_FALSE(file_util::PathExists(file_path)); |
133 } | 142 } |
134 | 143 |
135 TEST(PlatformFile, ReadWritePlatformFile) { | 144 TEST(PlatformFile, ReadWritePlatformFile) { |
136 base::ScopedTempDir temp_dir; | 145 base::ScopedTempDir temp_dir; |
137 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 146 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
138 FilePath file_path = temp_dir.path().AppendASCII("read_write_file"); | 147 FilePath file_path = temp_dir.path().AppendASCII("read_write_file"); |
139 base::PlatformFile file = base::CreatePlatformFile( | 148 base::PlatformFile file = base::CreatePlatformFile( |
140 file_path, | 149 file_path, |
141 base::PLATFORM_FILE_CREATE | | 150 base::PLATFORM_FILE_CREATE | base::PLATFORM_FILE_READ | |
142 base::PLATFORM_FILE_READ | | 151 base::PLATFORM_FILE_WRITE, |
143 base::PLATFORM_FILE_WRITE, | 152 NULL, |
144 NULL, NULL); | 153 NULL); |
145 EXPECT_NE(base::kInvalidPlatformFileValue, file); | 154 EXPECT_NE(base::kInvalidPlatformFileValue, file); |
146 | 155 |
147 char data_to_write[] = "test"; | 156 char data_to_write[] = "test"; |
148 const int kTestDataSize = 4; | 157 const int kTestDataSize = 4; |
149 | 158 |
150 // Write 0 bytes to the file. | 159 // Write 0 bytes to the file. |
151 int bytes_written = WriteFully(file, 0, data_to_write, 0); | 160 int bytes_written = WriteFully(file, 0, data_to_write, 0); |
152 EXPECT_EQ(0, bytes_written); | 161 EXPECT_EQ(0, bytes_written); |
153 | 162 |
154 // Write "test" to the file. | 163 // Write "test" to the file. |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
204 EXPECT_EQ(data_to_write[i], data_read_2[i]); | 213 EXPECT_EQ(data_to_write[i], data_read_2[i]); |
205 for (int i = kTestDataSize; i < kOffsetBeyondEndOfFile; i++) | 214 for (int i = kTestDataSize; i < kOffsetBeyondEndOfFile; i++) |
206 EXPECT_EQ(0, data_read_2[i]); | 215 EXPECT_EQ(0, data_read_2[i]); |
207 for (int i = kOffsetBeyondEndOfFile; i < file_size; i++) | 216 for (int i = kOffsetBeyondEndOfFile; i < file_size; i++) |
208 EXPECT_EQ(data_to_write[i - kOffsetBeyondEndOfFile], data_read_2[i]); | 217 EXPECT_EQ(data_to_write[i - kOffsetBeyondEndOfFile], data_read_2[i]); |
209 | 218 |
210 // Close the file handle to allow the temp directory to be deleted. | 219 // Close the file handle to allow the temp directory to be deleted. |
211 base::ClosePlatformFile(file); | 220 base::ClosePlatformFile(file); |
212 } | 221 } |
213 | 222 |
223 TEST(PlatformFile, AppendPlatformFile) { | |
224 base::ScopedTempDir temp_dir; | |
225 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | |
226 FilePath file_path = temp_dir.path().AppendASCII("append_file"); | |
227 base::PlatformFile file = base::CreatePlatformFile( | |
228 file_path, | |
229 base::PLATFORM_FILE_CREATE | base::PLATFORM_FILE_APPEND, | |
230 NULL, | |
231 NULL); | |
232 EXPECT_NE(base::kInvalidPlatformFileValue, file); | |
233 | |
234 char data_to_write[] = "test"; | |
235 const int kTestDataSize = 4; | |
236 | |
237 // Write 0 bytes to the file. | |
238 int bytes_written = WriteFully(file, 0, data_to_write, 0); | |
239 EXPECT_EQ(0, bytes_written); | |
240 | |
241 // Write "test" to the file. | |
242 bytes_written = WriteFully(file, 0, data_to_write, kTestDataSize); | |
243 EXPECT_EQ(kTestDataSize, bytes_written); | |
244 | |
245 base::ClosePlatformFile(file); | |
246 file = base::CreatePlatformFile( | |
247 file_path, | |
248 base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_READ | | |
249 base::PLATFORM_FILE_APPEND, | |
250 NULL, | |
251 NULL); | |
252 EXPECT_NE(base::kInvalidPlatformFileValue, file); | |
253 if (file == base::kInvalidPlatformFileValue) { | |
254 printf("errno: %d\n", errno); | |
255 } | |
256 | |
257 char append_data_to_write[] = "78"; | |
258 const int kAppendDataSize = 2; | |
259 | |
260 // Append "test" to the file. | |
261 bytes_written = WriteFully(file, 0, append_data_to_write, kAppendDataSize); | |
262 EXPECT_EQ(2, bytes_written); | |
263 | |
264 // Read the entire file. | |
265 char data_read_1[32]; | |
266 int bytes_read = ReadFully(file, 0, data_read_1, | |
267 kTestDataSize + kAppendDataSize); | |
268 EXPECT_EQ(6, bytes_read); | |
269 | |
270 // Close the file handle to allow the temp directory to be deleted. | |
271 base::ClosePlatformFile(file); | |
272 } | |
273 | |
274 | |
214 TEST(PlatformFile, TruncatePlatformFile) { | 275 TEST(PlatformFile, TruncatePlatformFile) { |
215 base::ScopedTempDir temp_dir; | 276 base::ScopedTempDir temp_dir; |
216 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 277 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
217 FilePath file_path = temp_dir.path().AppendASCII("truncate_file"); | 278 FilePath file_path = temp_dir.path().AppendASCII("truncate_file"); |
218 base::PlatformFile file = base::CreatePlatformFile( | 279 base::PlatformFile file = base::CreatePlatformFile( |
219 file_path, | 280 file_path, |
220 base::PLATFORM_FILE_CREATE | | 281 base::PLATFORM_FILE_CREATE | base::PLATFORM_FILE_READ | |
221 base::PLATFORM_FILE_READ | | 282 base::PLATFORM_FILE_WRITE, |
222 base::PLATFORM_FILE_WRITE, | 283 NULL, |
223 NULL, NULL); | 284 NULL); |
224 EXPECT_NE(base::kInvalidPlatformFileValue, file); | 285 EXPECT_NE(base::kInvalidPlatformFileValue, file); |
225 | 286 |
226 // Write "test" to the file. | 287 // Write "test" to the file. |
227 char data_to_write[] = "test"; | 288 char data_to_write[] = "test"; |
228 int kTestDataSize = 4; | 289 int kTestDataSize = 4; |
229 int bytes_written = WriteFully(file, 0, data_to_write, kTestDataSize); | 290 int bytes_written = WriteFully(file, 0, data_to_write, kTestDataSize); |
230 EXPECT_EQ(kTestDataSize, bytes_written); | 291 EXPECT_EQ(kTestDataSize, bytes_written); |
231 | 292 |
232 // Extend the file. | 293 // Extend the file. |
233 const int kExtendedFileLength = 10; | 294 const int kExtendedFileLength = 10; |
(...skipping 30 matching lines...) Expand all Loading... | |
264 // Flakily fails: http://crbug.com/86494 | 325 // Flakily fails: http://crbug.com/86494 |
265 #if defined(OS_ANDROID) | 326 #if defined(OS_ANDROID) |
266 TEST(PlatformFile, TouchGetInfoPlatformFile) { | 327 TEST(PlatformFile, TouchGetInfoPlatformFile) { |
267 #else | 328 #else |
268 TEST(PlatformFile, DISABLED_TouchGetInfoPlatformFile) { | 329 TEST(PlatformFile, DISABLED_TouchGetInfoPlatformFile) { |
269 #endif | 330 #endif |
270 base::ScopedTempDir temp_dir; | 331 base::ScopedTempDir temp_dir; |
271 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 332 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
272 base::PlatformFile file = base::CreatePlatformFile( | 333 base::PlatformFile file = base::CreatePlatformFile( |
273 temp_dir.path().AppendASCII("touch_get_info_file"), | 334 temp_dir.path().AppendASCII("touch_get_info_file"), |
274 base::PLATFORM_FILE_CREATE | | 335 base::PLATFORM_FILE_CREATE | base::PLATFORM_FILE_WRITE | |
275 base::PLATFORM_FILE_WRITE | | 336 base::PLATFORM_FILE_WRITE_ATTRIBUTES, |
276 base::PLATFORM_FILE_WRITE_ATTRIBUTES, | 337 NULL, |
277 NULL, NULL); | 338 NULL); |
278 EXPECT_NE(base::kInvalidPlatformFileValue, file); | 339 EXPECT_NE(base::kInvalidPlatformFileValue, file); |
279 | 340 |
280 // Get info for a newly created file. | 341 // Get info for a newly created file. |
281 base::PlatformFileInfo info; | 342 base::PlatformFileInfo info; |
282 EXPECT_TRUE(base::GetPlatformFileInfo(file, &info)); | 343 EXPECT_TRUE(base::GetPlatformFileInfo(file, &info)); |
283 | 344 |
284 // Add 2 seconds to account for possible rounding errors on | 345 // Add 2 seconds to account for possible rounding errors on |
285 // filesystems that use a 1s or 2s timestamp granularity. | 346 // filesystems that use a 1s or 2s timestamp granularity. |
286 base::Time now = base::Time::Now() + base::TimeDelta::FromSeconds(2); | 347 base::Time now = base::Time::Now() + base::TimeDelta::FromSeconds(2); |
287 EXPECT_EQ(0, info.size); | 348 EXPECT_EQ(0, info.size); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
328 EXPECT_EQ(info.last_modified.ToInternalValue(), | 389 EXPECT_EQ(info.last_modified.ToInternalValue(), |
329 new_last_modified.ToInternalValue()); | 390 new_last_modified.ToInternalValue()); |
330 #endif | 391 #endif |
331 | 392 |
332 EXPECT_EQ(info.creation_time.ToInternalValue(), | 393 EXPECT_EQ(info.creation_time.ToInternalValue(), |
333 creation_time.ToInternalValue()); | 394 creation_time.ToInternalValue()); |
334 | 395 |
335 // Close the file handle to allow the temp directory to be deleted. | 396 // Close the file handle to allow the temp directory to be deleted. |
336 base::ClosePlatformFile(file); | 397 base::ClosePlatformFile(file); |
337 } | 398 } |
OLD | NEW |