Lines Matching full:file
3 // found in the LICENSE file.
10 #include "base/files/file.h"
46 // Don't create a File at all. in TEST()
47 File file; in TEST() local
48 EXPECT_FALSE(file.IsValid()); in TEST()
49 EXPECT_EQ(File::FILE_ERROR_FAILED, file.error_details()); in TEST()
51 File file2(File::FILE_ERROR_TOO_MANY_OPENED); in TEST()
53 EXPECT_EQ(File::FILE_ERROR_TOO_MANY_OPENED, file2.error_details()); in TEST()
57 // Open a file that doesn't exist. in TEST()
58 File file(file_path, File::FLAG_OPEN | File::FLAG_READ); in TEST() local
59 EXPECT_FALSE(file.IsValid()); in TEST()
60 EXPECT_EQ(File::FILE_ERROR_NOT_FOUND, file.error_details()); in TEST()
61 EXPECT_EQ(File::FILE_ERROR_NOT_FOUND, File::GetLastFileError()); in TEST()
65 // Open or create a file. in TEST()
66 File file(file_path, File::FLAG_OPEN_ALWAYS | File::FLAG_READ); in TEST() local
67 EXPECT_TRUE(file.IsValid()); in TEST()
68 EXPECT_TRUE(file.created()); in TEST()
69 EXPECT_EQ(File::FILE_OK, file.error_details()); in TEST()
73 // Open an existing file. in TEST()
74 File file(file_path, File::FLAG_OPEN | File::FLAG_READ); in TEST() local
75 EXPECT_TRUE(file.IsValid()); in TEST()
76 EXPECT_FALSE(file.created()); in TEST()
77 EXPECT_EQ(File::FILE_OK, file.error_details()); in TEST()
79 // This time verify closing the file. in TEST()
80 file.Close(); in TEST()
81 EXPECT_FALSE(file.IsValid()); in TEST()
85 // Open an existing file through Initialize in TEST()
86 File file; in TEST() local
87 file.Initialize(file_path, File::FLAG_OPEN | File::FLAG_READ); in TEST()
88 EXPECT_TRUE(file.IsValid()); in TEST()
89 EXPECT_FALSE(file.created()); in TEST()
90 EXPECT_EQ(File::FILE_OK, file.error_details()); in TEST()
92 // This time verify closing the file. in TEST()
93 file.Close(); in TEST()
94 EXPECT_FALSE(file.IsValid()); in TEST()
98 // Create a file that exists. in TEST()
99 File file(file_path, File::FLAG_CREATE | File::FLAG_READ); in TEST() local
100 EXPECT_FALSE(file.IsValid()); in TEST()
101 EXPECT_FALSE(file.created()); in TEST()
102 EXPECT_EQ(File::FILE_ERROR_EXISTS, file.error_details()); in TEST()
103 EXPECT_EQ(File::FILE_ERROR_EXISTS, File::GetLastFileError()); in TEST()
107 // Create or overwrite a file. in TEST()
108 File file(file_path, File::FLAG_CREATE_ALWAYS | File::FLAG_WRITE); in TEST() local
109 EXPECT_TRUE(file.IsValid()); in TEST()
110 EXPECT_TRUE(file.created()); in TEST()
111 EXPECT_EQ(File::FILE_OK, file.error_details()); in TEST()
115 // Create a delete-on-close file. in TEST()
117 File file(file_path, File::FLAG_OPEN_ALWAYS | File::FLAG_READ | in TEST() local
118 File::FLAG_DELETE_ON_CLOSE); in TEST()
119 EXPECT_TRUE(file.IsValid()); in TEST()
120 EXPECT_TRUE(file.created()); in TEST()
121 EXPECT_EQ(File::FILE_OK, file.error_details()); in TEST()
131 File file(file_path, File::FLAG_OPEN_ALWAYS | File::FLAG_DELETE_ON_CLOSE); in TEST() local
132 std::swap(file, file); in TEST()
133 EXPECT_TRUE(file.IsValid()); in TEST()
142 File file(file_path, File::FLAG_OPEN_ALWAYS | File::FLAG_ASYNC); in TEST() local
143 EXPECT_TRUE(file.IsValid()); in TEST()
144 EXPECT_TRUE(file.async()); in TEST()
148 File file(file_path, File::FLAG_OPEN_ALWAYS); in TEST() local
149 EXPECT_TRUE(file.IsValid()); in TEST()
150 EXPECT_FALSE(file.async()); in TEST()
159 // Create a file. in TEST()
160 File file(file_path, File::FLAG_OPEN_ALWAYS | File::FLAG_READ | in TEST() local
161 File::FLAG_WIN_SHARE_DELETE); in TEST()
162 EXPECT_TRUE(file.IsValid()); in TEST()
163 EXPECT_TRUE(file.created()); in TEST()
164 EXPECT_EQ(File::FILE_OK, file.error_details()); in TEST()
166 // Open an existing file and mark it as delete on close. in TEST()
167 File same_file(file_path, File::FLAG_OPEN | File::FLAG_DELETE_ON_CLOSE | in TEST()
168 File::FLAG_READ); in TEST()
169 EXPECT_TRUE(file.IsValid()); in TEST()
171 EXPECT_EQ(File::FILE_OK, same_file.error_details()); in TEST()
173 // Close both handles and check that the file is gone. in TEST()
174 file.Close(); in TEST()
183 File file(file_path, File::FLAG_CREATE | File::FLAG_READ | File::FLAG_WRITE); in TEST() local
184 ASSERT_TRUE(file.IsValid()); in TEST()
189 // Write 0 bytes to the file. in TEST()
190 int bytes_written = file.Write(0, data_to_write, 0); in TEST()
194 bytes_written = file.Write(0, nullptr, 0); in TEST()
197 // Write "test" to the file. in TEST()
198 bytes_written = file.Write(0, data_to_write, kTestDataSize); in TEST()
203 int bytes_read = file.Read(kTestDataSize, data_read_1, kTestDataSize); in TEST()
206 // Read from somewhere in the middle of the file. in TEST()
208 bytes_read = file.Read(kPartialReadOffset, data_read_1, kTestDataSize); in TEST()
215 bytes_read = file.Read(0, data_read_1, 0); in TEST()
218 // Read the entire file. in TEST()
219 bytes_read = file.Read(0, data_read_1, kTestDataSize); in TEST()
227 file.ReadNoBestEffort(0, as_writable_byte_span(data_read_1) in TEST()
235 // Write past the end of the file. in TEST()
239 file.Write(kOffsetBeyondEndOfFile, data_to_write, kPartialWriteLength); in TEST()
242 // Make sure the file was extended. in TEST()
247 // Make sure the file was zero-padded. in TEST()
249 bytes_read = file.Read(0, data_read_2, static_cast<int>(file_size.value())); in TEST()
266 File file(file_path, File::FLAG_CREATE | File::FLAG_READ | File::FLAG_WRITE); in TEST() local
267 ASSERT_TRUE(file.IsValid()); in TEST()
269 // Write 0 bytes to the file. in TEST()
270 std::optional<size_t> bytes_written = file.Write(0, span<uint8_t>()); in TEST()
274 // Write "test" to the file. in TEST()
276 bytes_written = file.Write(0, as_byte_span(data_to_write)); in TEST()
283 file.Read(bytes_written.value(), data_read_1); in TEST()
287 // Read from somewhere in the middle of the file. in TEST()
289 bytes_read = file.Read(kPartialReadOffset, data_read_1); in TEST()
297 bytes_read = file.Read(0, span<uint8_t>()); in TEST()
301 // Read the entire file. in TEST()
302 bytes_read = file.Read(0, data_read_1); in TEST()
309 // Write past the end of the file. in TEST()
313 file.Write(kOffsetBeyondEndOfFile, in TEST()
318 // Make sure the file was extended. in TEST()
324 // Make sure the file was zero-padded. in TEST()
326 bytes_read = file.Read(0, data_read_2); in TEST()
346 EXPECT_EQ(File::FILE_ERROR_ACCESS_DENIED, File::GetLastFileError()); in TEST()
352 File file(nonexistent_path, File::FLAG_OPEN | File::FLAG_READ); in TEST() local
353 File::Error last_error = File::GetLastFileError(); in TEST()
354 EXPECT_FALSE(file.IsValid()); in TEST()
355 EXPECT_EQ(File::FILE_ERROR_NOT_FOUND, file.error_details()); in TEST()
356 EXPECT_EQ(File::FILE_ERROR_NOT_FOUND, last_error); in TEST()
363 File file(file_path, File::FLAG_CREATE | File::FLAG_APPEND); in TEST() local
364 ASSERT_TRUE(file.IsValid()); in TEST()
369 // Write 0 bytes to the file. in TEST()
370 int bytes_written = file.Write(0, data_to_write, 0); in TEST()
374 bytes_written = file.Write(0, nullptr, 0); in TEST()
377 // Write "test" to the file. in TEST()
378 bytes_written = file.Write(0, data_to_write, kTestDataSize); in TEST()
381 file.Close(); in TEST()
382 File file2(file_path, File::FLAG_OPEN | File::FLAG_READ | File::FLAG_APPEND); in TEST()
385 // Test passing the file around. in TEST()
386 file = std::move(file2); in TEST()
388 ASSERT_TRUE(file.IsValid()); in TEST()
393 // Append "78" to the file. in TEST()
394 bytes_written = file.Write(0, append_data_to_write, kAppendDataSize); in TEST()
397 // Read the entire file. in TEST()
399 int bytes_read = file.Read(0, data_read_1, kTestDataSize + kAppendDataSize); in TEST()
413 File file(file_path, File::FLAG_CREATE | File::FLAG_READ | File::FLAG_WRITE); in TEST() local
414 ASSERT_TRUE(file.IsValid()); in TEST()
415 EXPECT_EQ(0, file.GetLength()); in TEST()
417 // Write "test" to the file. in TEST()
420 int bytes_written = file.Write(0, data_to_write, kTestDataSize); in TEST()
423 // Extend the file. in TEST()
425 EXPECT_TRUE(file.SetLength(kExtendedFileLength)); in TEST()
426 EXPECT_EQ(kExtendedFileLength, file.GetLength()); in TEST()
431 // Make sure the file was zero-padded. in TEST()
433 int bytes_read = file.Read(0, data_read, static_cast<int>(file_size.value())); in TEST()
442 // Truncate the file. in TEST()
444 EXPECT_TRUE(file.SetLength(kTruncatedFileLength)); in TEST()
445 EXPECT_EQ(kTruncatedFileLength, file.GetLength()); in TEST()
451 // Make sure the file was truncated. in TEST()
452 bytes_read = file.Read(0, data_read, kTestDataSize); in TEST()
459 // Expand the file past the 4 GB limit. in TEST()
461 EXPECT_TRUE(file.SetLength(kBigFileLength)); in TEST()
462 EXPECT_EQ(kBigFileLength, file.GetLength()); in TEST()
468 // Close the file and reopen with File::FLAG_CREATE_ALWAYS, and make in TEST()
469 // sure the file is empty (old file was overridden). in TEST()
470 file.Close(); in TEST()
471 file.Initialize(file_path, File::FLAG_CREATE_ALWAYS | File::FLAG_WRITE); in TEST()
472 EXPECT_EQ(0, file.GetLength()); in TEST()
483 File file(temp_dir.GetPath().AppendASCII("touch_get_info_file"), in TEST() local
484 File::FLAG_CREATE | File::FLAG_WRITE | File::FLAG_WRITE_ATTRIBUTES); in TEST()
485 ASSERT_TRUE(file.IsValid()); in TEST()
487 // Get info for a newly created file. in TEST()
488 File::Info info; in TEST()
489 EXPECT_TRUE(file.GetInfo(&info)); in TEST()
502 // Write "test" to the file. in TEST()
505 int bytes_written = file.Write(0, data, kTestDataSize); in TEST()
515 EXPECT_TRUE(file.SetTimes(new_last_accessed, new_last_modified)); in TEST()
517 // Make sure the file info was updated accordingly. in TEST()
518 EXPECT_TRUE(file.GetInfo(&info)); in TEST()
540 // Test we can retrieve the file's creation time through File::GetInfo(). in TEST()
548 File file(file_path, File::FLAG_CREATE | File::FLAG_READ | File::FLAG_WRITE); in TEST() local
549 EXPECT_TRUE(file.IsValid()); in TEST()
554 File::Info info; in TEST()
555 EXPECT_TRUE(file.GetInfo(&info)); in TEST()
567 File file(file_path, File::FLAG_CREATE | File::FLAG_READ | File::FLAG_WRITE); in TEST() local
568 EXPECT_TRUE(file.IsValid()); in TEST()
572 EXPECT_EQ(kDataSize, file.Write(0, kData, kDataSize)); in TEST()
574 EXPECT_EQ(0, file.Seek(File::FROM_BEGIN, 0)); in TEST()
578 EXPECT_EQ(first_chunk_size, file.ReadAtCurrentPos(buffer, first_chunk_size)); in TEST()
580 file.ReadAtCurrentPos(buffer + first_chunk_size, in TEST()
590 File file(file_path, File::FLAG_CREATE | File::FLAG_READ | File::FLAG_WRITE); in TEST() local
591 EXPECT_TRUE(file.IsValid()); in TEST()
594 std::optional<size_t> result = file.Write(0, as_byte_span(data)); in TEST()
598 EXPECT_EQ(0, file.Seek(File::FROM_BEGIN, 0)); in TEST()
603 EXPECT_EQ(chunk1.size(), file.ReadAtCurrentPos(chunk1)); in TEST()
604 EXPECT_EQ(chunk2.size(), file.ReadAtCurrentPos(chunk2)); in TEST()
615 File file(file_path, File::FLAG_CREATE | File::FLAG_READ | File::FLAG_WRITE); in TEST() local
616 EXPECT_TRUE(file.IsValid()); in TEST()
622 EXPECT_EQ(first_chunk_size, file.WriteAtCurrentPos(kData, first_chunk_size)); in TEST()
624 file.WriteAtCurrentPos(kData + first_chunk_size, in TEST()
628 EXPECT_EQ(kDataSize, file.Read(0, buffer, kDataSize)); in TEST()
637 File file(file_path, File::FLAG_CREATE | File::FLAG_READ | File::FLAG_WRITE); in TEST() local
638 EXPECT_TRUE(file.IsValid()); in TEST()
643 file.WriteAtCurrentPos(as_byte_span(data).first(first_chunk_size)); in TEST()
647 result = file.WriteAtCurrentPos(as_byte_span(data).subspan(first_chunk_size)); in TEST()
653 EXPECT_EQ(kDataSize, file.Read(0, buffer, kDataSize)); in TEST()
661 File file(file_path, File::FLAG_CREATE | File::FLAG_READ | File::FLAG_WRITE); in TEST() local
662 ASSERT_TRUE(file.IsValid()); in TEST()
665 EXPECT_EQ(kOffset, file.Seek(File::FROM_BEGIN, kOffset)); in TEST()
666 EXPECT_EQ(2 * kOffset, file.Seek(File::FROM_CURRENT, kOffset)); in TEST()
667 EXPECT_EQ(kOffset, file.Seek(File::FROM_CURRENT, -kOffset)); in TEST()
668 EXPECT_TRUE(file.SetLength(kOffset * 2)); in TEST()
669 EXPECT_EQ(kOffset, file.Seek(File::FROM_END, -kOffset)); in TEST()
675 FilePath file_path = temp_dir.GetPath().AppendASCII("file"); in TEST()
676 File file(file_path, in TEST() local
677 (File::FLAG_CREATE | File::FLAG_READ | File::FLAG_WRITE)); in TEST()
678 ASSERT_TRUE(file.IsValid()); in TEST()
680 File file2(file.Duplicate()); in TEST()
687 ASSERT_EQ(0, file.Seek(File::FROM_CURRENT, 0)); in TEST()
688 ASSERT_EQ(0, file2.Seek(File::FROM_CURRENT, 0)); in TEST()
689 ASSERT_EQ(kDataLen, file.WriteAtCurrentPos(kData, kDataLen)); in TEST()
690 ASSERT_EQ(kDataLen, file.Seek(File::FROM_CURRENT, 0)); in TEST()
691 ASSERT_EQ(kDataLen, file2.Seek(File::FROM_CURRENT, 0)); in TEST()
692 file.Close(); in TEST()
701 FilePath file_path = temp_dir.GetPath().AppendASCII("file"); in TEST()
702 File file(file_path, (File::FLAG_CREATE | File::FLAG_READ | File::FLAG_WRITE | in TEST() local
703 File::FLAG_DELETE_ON_CLOSE)); in TEST()
704 ASSERT_TRUE(file.IsValid()); in TEST()
705 File file2(file.Duplicate()); in TEST()
707 file.Close(); in TEST()
716 FilePath file_path = temp_dir.GetPath().AppendASCII("file"); in TEST()
718 File file(file_path, (File::FLAG_CREATE | File::FLAG_READ | File::FLAG_WRITE | in TEST() local
719 File::FLAG_DELETE_ON_CLOSE)); in TEST()
720 ASSERT_TRUE(file.IsValid()); in TEST()
722 EXPECT_EQ(perfetto::TracedValueToString(file), in TEST()
736 FilePath file_path = temp_dir.GetPath().AppendASCII("file"); in TEST()
737 File file(file_path, (File::FLAG_CREATE | File::FLAG_READ | File::FLAG_WRITE | in TEST() local
738 File::FLAG_DELETE_ON_CLOSE)); in TEST()
739 ASSERT_TRUE(file.IsValid()); in TEST()
741 const char kData[] = "this file is sparse."; in TEST()
745 // If the file fails to write, it is probably we are running out of disk space in TEST()
746 // and the file system doesn't support sparse file. in TEST()
747 if (file.Write(kLargeFileOffset - kDataLen - 1, kData, kDataLen) < 0) { in TEST()
751 ASSERT_EQ(kDataLen, file.Write(kLargeFileOffset + 1, kData, kDataLen)); in TEST()
756 uint32_t flags = File::FLAG_OPEN | File::FLAG_READ; in TEST()
757 flags = File::AddFlagsForPassingToUntrustedProcess(flags); in TEST()
758 EXPECT_EQ(flags, File::FLAG_OPEN | File::FLAG_READ); in TEST()
761 uint32_t flags = File::FLAG_OPEN | File::FLAG_WRITE; in TEST()
762 flags = File::AddFlagsForPassingToUntrustedProcess(flags); in TEST()
764 File::FLAG_OPEN | File::FLAG_WRITE | File::FLAG_WIN_NO_EXECUTE); in TEST()
776 File dir( in TEST()
784 File::Info info; in TEST()
794 FilePath file_path = temp_dir.GetPath().AppendASCII("file"); in TEST()
796 // Creating and closing a file with DELETE perms should do nothing special. in TEST()
797 File file(file_path, (File::FLAG_CREATE | File::FLAG_READ | File::FLAG_WRITE | in TEST() local
798 File::FLAG_CAN_DELETE_ON_CLOSE)); in TEST()
799 ASSERT_TRUE(file.IsValid()); in TEST()
800 file.Close(); in TEST()
807 FilePath file_path = temp_dir.GetPath().AppendASCII("file"); in TEST()
809 // Creating a file with DELETE and then marking for delete on close should in TEST()
811 File file(file_path, (File::FLAG_CREATE | File::FLAG_READ | File::FLAG_WRITE | in TEST() local
812 File::FLAG_CAN_DELETE_ON_CLOSE)); in TEST()
813 ASSERT_TRUE(file.IsValid()); in TEST()
814 ASSERT_TRUE(file.DeleteOnClose(true)); in TEST()
815 file.Close(); in TEST()
822 FilePath file_path = temp_dir.GetPath().AppendASCII("file"); in TEST()
824 // Creating a file with DELETE, marking it for delete, then clearing delete on in TEST()
826 File file(file_path, (File::FLAG_CREATE | File::FLAG_READ | File::FLAG_WRITE | in TEST() local
827 File::FLAG_CAN_DELETE_ON_CLOSE)); in TEST()
828 ASSERT_TRUE(file.IsValid()); in TEST()
829 ASSERT_TRUE(file.DeleteOnClose(true)); in TEST()
830 ASSERT_TRUE(file.DeleteOnClose(false)); in TEST()
831 file.Close(); in TEST()
838 FilePath file_path = temp_dir.GetPath().AppendASCII("file"); in TEST()
841 File file(file_path, in TEST() local
842 (File::FLAG_CREATE | File::FLAG_READ | File::FLAG_WRITE | in TEST()
843 File::FLAG_DELETE_ON_CLOSE | File::FLAG_WIN_SHARE_DELETE | in TEST()
844 File::FLAG_CAN_DELETE_ON_CLOSE)); in TEST()
845 ASSERT_TRUE(file.IsValid()); in TEST()
851 file.DeleteOnClose(false); in TEST()
852 file.Close(); in TEST()
859 FilePath file_path = temp_dir.GetPath().AppendASCII("file"); in TEST()
862 File file(file_path, in TEST() local
863 (File::FLAG_CREATE | File::FLAG_READ | File::FLAG_WRITE | in TEST()
864 File::FLAG_DELETE_ON_CLOSE | File::FLAG_WIN_SHARE_DELETE | in TEST()
865 File::FLAG_CAN_DELETE_ON_CLOSE)); in TEST()
866 ASSERT_TRUE(file.IsValid()); in TEST()
868 File file2(file_path, in TEST()
869 (File::FLAG_OPEN | File::FLAG_READ | File::FLAG_WRITE | in TEST()
870 File::FLAG_WIN_SHARE_DELETE | File::FLAG_CAN_DELETE_ON_CLOSE)); in TEST()
876 file.Close(); in TEST()
883 FilePath file_path = temp_dir.GetPath().AppendASCII("file"); in TEST()
885 // It should not be possible to mark a file for deletion when it was not in TEST()
887 File file(file_path, in TEST() local
888 (File::FLAG_CREATE | File::FLAG_READ | File::FLAG_WRITE)); in TEST()
889 ASSERT_TRUE(file.IsValid()); in TEST()
890 ASSERT_FALSE(file.DeleteOnClose(true)); in TEST()
891 file.Close(); in TEST()
898 FilePath file_path = temp_dir.GetPath().AppendASCII("file"); in TEST()
902 File file(file_path, in TEST() local
903 (File::FLAG_CREATE | File::FLAG_READ | File::FLAG_WRITE)); in TEST()
904 ASSERT_TRUE(file.IsValid()); in TEST()
905 File file2(file_path, in TEST()
906 (File::FLAG_OPEN | File::FLAG_READ | File::FLAG_WRITE | in TEST()
907 File::FLAG_DELETE_ON_CLOSE | File::FLAG_WIN_SHARE_DELETE)); in TEST()
910 file.Close(); in TEST()
917 FilePath file_path = temp_dir.GetPath().AppendASCII("file"); in TEST()
919 // Mapping a file into memory blocks DeleteOnClose. in TEST()
920 File file(file_path, (File::FLAG_CREATE | File::FLAG_READ | File::FLAG_WRITE | in TEST() local
921 File::FLAG_CAN_DELETE_ON_CLOSE)); in TEST()
922 ASSERT_TRUE(file.IsValid()); in TEST()
923 ASSERT_EQ(5, file.WriteAtCurrentPos("12345", 5)); in TEST()
927 ASSERT_TRUE(mapping.Initialize(file.Duplicate())); in TEST()
930 EXPECT_FALSE(file.DeleteOnClose(true)); in TEST()
933 file.Close(); in TEST()
941 FilePath file_path = temp_dir.GetPath().AppendASCII("file"); in TEST()
943 File file(file_path, File::FLAG_CREATE | File::FLAG_WRITE | File::FLAG_ASYNC); in TEST() local
944 File lying_file(file.TakePlatformFile(), false /* async */); in TEST()
968 FilePath file_path = temp_dir.GetPath().AppendASCII("file"); in TEST()
970 File file(file_path, File::FLAG_CREATE | File::FLAG_WIN_EXECUTE | in TEST()
971 File::FLAG_READ | File::FLAG_WIN_NO_EXECUTE); in TEST()