MCPcopy Create free account
hub / github.com/apache/arrow / TestGetFileInfoSelector

Method TestGetFileInfoSelector

cpp/src/arrow/filesystem/test_util.cc:757–827  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

755}
756
757void GenericFileSystemTest::TestGetFileInfoSelector(FileSystem* fs) {
758 ASSERT_OK(fs->CreateDir("AB/CD"));
759 CreateFile(fs, "abc", "data");
760 CreateFile(fs, "AB/def", "some data");
761 CreateFile(fs, "AB/CD/ghi", "some other data");
762 CreateFile(fs, "AB/CD/jkl", "yet other data");
763
764 TimePoint first_dir_time, first_file_time;
765 FileSelector s;
766 s.base_dir = "";
767 std::vector<FileInfo> infos;
768 ASSERT_OK_AND_ASSIGN(infos, fs->GetFileInfo(s));
769 // Need to sort results to make testing deterministic
770 SortInfos(&infos);
771 ASSERT_EQ(infos.size(), 2);
772 AssertFileInfo(infos[0], "AB", FileType::Directory);
773 first_dir_time = infos[0].mtime();
774 if (have_directory_mtimes()) {
775 ValidateTimePoint(first_dir_time);
776 }
777 AssertFileInfo(infos[1], "abc", FileType::File, 4);
778
779 s.base_dir = "AB";
780 ASSERT_OK_AND_ASSIGN(infos, fs->GetFileInfo(s));
781 SortInfos(&infos);
782 ASSERT_EQ(infos.size(), 2);
783 AssertFileInfo(infos[0], "AB/CD", FileType::Directory);
784 AssertFileInfo(infos[1], "AB/def", FileType::File, 9);
785
786 s.base_dir = "AB/CD";
787 ASSERT_OK_AND_ASSIGN(infos, fs->GetFileInfo(s));
788 SortInfos(&infos);
789 ASSERT_EQ(infos.size(), 2);
790 AssertFileInfo(infos[0], "AB/CD/ghi", FileType::File, 15);
791 AssertFileInfo(infos[1], "AB/CD/jkl", FileType::File, 14);
792 first_file_time = infos[0].mtime();
793 if (have_directory_mtimes()) {
794 AssertDurationBetween(first_file_time - first_dir_time, 0.0, kTimeSlack);
795 }
796 AssertDurationBetween(infos[1].mtime() - first_file_time, 0.0, kTimeSlack);
797
798 // Recursive
799 s.base_dir = "AB";
800 s.recursive = true;
801 ASSERT_OK_AND_ASSIGN(infos, fs->GetFileInfo(s));
802 SortInfos(&infos);
803 ASSERT_EQ(infos.size(), 4);
804 AssertFileInfo(infos[0], "AB/CD", FileType::Directory);
805 AssertFileInfo(infos[1], "AB/CD/ghi", FileType::File, first_file_time, 15);
806 AssertFileInfo(infos[2], "AB/CD/jkl", FileType::File, 14);
807 AssertFileInfo(infos[3], "AB/def", FileType::File, 9);
808
809 // Check the mtime is the same from one call to the other
810 FileInfo info;
811 ASSERT_OK_AND_ASSIGN(info, fs->GetFileInfo("AB"));
812 AssertFileInfo(info, "AB", FileType::Directory, first_dir_time);
813 ASSERT_OK_AND_ASSIGN(info, fs->GetFileInfo("AB/CD/ghi"));
814 AssertFileInfo(info, "AB/CD/ghi", FileType::File, first_file_time, 15);

Callers

nothing calls this directly

Calls 10

CreateFileFunction · 0.85
SortInfosFunction · 0.85
AssertFileInfoFunction · 0.85
have_directory_mtimesFunction · 0.85
ValidateTimePointFunction · 0.85
AssertDurationBetweenFunction · 0.85
ASSERT_OK_AND_ASSIGNFunction · 0.70
CreateDirMethod · 0.45
GetFileInfoMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected