| 650 | } |
| 651 | |
| 652 | void GenericFileSystemTest::TestGetFileInfo(FileSystem* fs) { |
| 653 | ASSERT_OK(fs->CreateDir("AB/CD/EF")); |
| 654 | CreateFile(fs, "AB/CD/ghi", "some data"); |
| 655 | CreateFile(fs, "AB/CD/jkl", "some other data"); |
| 656 | |
| 657 | FileInfo info; |
| 658 | TimePoint first_dir_time, first_file_time; |
| 659 | |
| 660 | ASSERT_OK_AND_ASSIGN(info, fs->GetFileInfo("AB")); |
| 661 | AssertFileInfo(info, "AB", FileType::Directory); |
| 662 | ASSERT_EQ(info.base_name(), "AB"); |
| 663 | ASSERT_EQ(info.size(), kNoSize); |
| 664 | first_dir_time = info.mtime(); |
| 665 | if (have_directory_mtimes()) { |
| 666 | ValidateTimePoint(first_dir_time); |
| 667 | } |
| 668 | |
| 669 | ASSERT_OK_AND_ASSIGN(info, fs->GetFileInfo("AB/CD/EF")); |
| 670 | AssertFileInfo(info, "AB/CD/EF", FileType::Directory); |
| 671 | ASSERT_EQ(info.base_name(), "EF"); |
| 672 | ASSERT_EQ(info.size(), kNoSize); |
| 673 | // AB/CD's creation can impact AB's modification time, however, AB/CD/EF's |
| 674 | // creation doesn't, so AB/CD/EF's mtime should be after AB's. |
| 675 | if (have_directory_mtimes()) { |
| 676 | AssertDurationBetween(info.mtime() - first_dir_time, 0.0, kTimeSlack); |
| 677 | } |
| 678 | |
| 679 | ASSERT_OK_AND_ASSIGN(info, fs->GetFileInfo("AB/CD/ghi")); |
| 680 | AssertFileInfo(info, "AB/CD/ghi", FileType::File, 9); |
| 681 | ASSERT_EQ(info.base_name(), "ghi"); |
| 682 | first_file_time = info.mtime(); |
| 683 | // AB/CD/ghi's creation doesn't impact AB's modification time, |
| 684 | // so AB/CD/ghi's mtime should be after AB's. |
| 685 | if (have_directory_mtimes()) { |
| 686 | AssertDurationBetween(first_file_time - first_dir_time, 0.0, kTimeSlack); |
| 687 | } |
| 688 | ASSERT_OK_AND_ASSIGN(info, fs->GetFileInfo("AB/CD/jkl")); |
| 689 | AssertFileInfo(info, "AB/CD/jkl", FileType::File, 15); |
| 690 | // This file was created after the one above |
| 691 | AssertDurationBetween(info.mtime() - first_file_time, 0.0, kTimeSlack); |
| 692 | |
| 693 | ASSERT_OK_AND_ASSIGN(info, fs->GetFileInfo("zz")); |
| 694 | AssertFileInfo(info, "zz", FileType::NotFound); |
| 695 | ASSERT_EQ(info.base_name(), "zz"); |
| 696 | ASSERT_EQ(info.size(), kNoSize); |
| 697 | ASSERT_EQ(info.mtime(), kNoTime); |
| 698 | } |
| 699 | |
| 700 | void GenericFileSystemTest::TestGetFileInfoAsync(FileSystem* fs) { |
| 701 | ASSERT_OK(fs->CreateDir("AB/CD")); |
nothing calls this directly
no test coverage detected