-
Notifications
You must be signed in to change notification settings - Fork 4k
Closed
Description
Describe the enhancement requested
arrow/cpp/src/arrow/filesystem/test_util.h
Lines 120 to 245 in f7947cc
| // Generic tests for FileSystem implementations. | |
| // To use this class, subclass both from it and ::testing::Test, | |
| // implement GetEmptyFileSystem(), and use GENERIC_FS_TEST_FUNCTIONS() | |
| // to define the various tests. | |
| class ARROW_TESTING_EXPORT GenericFileSystemTest { | |
| public: | |
| virtual ~GenericFileSystemTest(); | |
| void TestEmpty(); | |
| void TestNormalizePath(); | |
| void TestCreateDir(); | |
| void TestDeleteDir(); | |
| void TestDeleteDirContents(); | |
| void TestDeleteRootDirContents(); | |
| void TestDeleteFile(); | |
| void TestDeleteFiles(); | |
| void TestMoveFile(); | |
| void TestMoveDir(); | |
| void TestCopyFile(); | |
| void TestGetFileInfo(); | |
| void TestGetFileInfoVector(); | |
| void TestGetFileInfoSelector(); | |
| void TestGetFileInfoSelectorWithRecursion(); | |
| void TestGetFileInfoAsync(); | |
| void TestGetFileInfoGenerator(); | |
| void TestOpenOutputStream(); | |
| void TestOpenAppendStream(); | |
| void TestOpenInputStream(); | |
| void TestOpenInputStreamWithFileInfo(); | |
| void TestOpenInputStreamAsync(); | |
| void TestOpenInputFile(); | |
| void TestOpenInputFileWithFileInfo(); | |
| void TestOpenInputFileAsync(); | |
| void TestSpecialChars(); | |
| protected: | |
| // This function should return the filesystem under test. | |
| virtual std::shared_ptr<FileSystem> GetEmptyFileSystem() = 0; | |
| // Override the following functions to specify deviations from expected | |
| // filesystem semantics. | |
| // - Whether the filesystem may "implicitly" create intermediate directories | |
| virtual bool have_implicit_directories() const { return false; } | |
| // - Whether the filesystem may allow writing a file "over" a directory | |
| virtual bool allow_write_file_over_dir() const { return false; } | |
| // - Whether the filesystem allows reading a directory | |
| virtual bool allow_read_dir_as_file() const { return false; } | |
| // - Whether the filesystem allows moving a directory | |
| virtual bool allow_move_dir() const { return true; } | |
| // - Whether the filesystem allows moving a directory "over" a non-empty destination | |
| virtual bool allow_move_dir_over_non_empty_dir() const { return false; } | |
| // - Whether the filesystem allows appending to a file | |
| virtual bool allow_append_to_file() const { return true; } | |
| // - Whether the filesystem allows appending to a new (not existent yet) file | |
| virtual bool allow_append_to_new_file() const { return true; } | |
| // - Whether the filesystem supports directory modification times | |
| virtual bool have_directory_mtimes() const { return true; } | |
| // - Whether some directory tree deletion tests may fail randomly | |
| virtual bool have_flaky_directory_tree_deletion() const { return false; } | |
| // - Whether the filesystem stores some metadata alongside files | |
| virtual bool have_file_metadata() const { return false; } | |
| void TestEmpty(FileSystem* fs); | |
| void TestNormalizePath(FileSystem* fs); | |
| void TestCreateDir(FileSystem* fs); | |
| void TestDeleteDir(FileSystem* fs); | |
| void TestDeleteDirContents(FileSystem* fs); | |
| void TestDeleteRootDirContents(FileSystem* fs); | |
| void TestDeleteFile(FileSystem* fs); | |
| void TestDeleteFiles(FileSystem* fs); | |
| void TestMoveFile(FileSystem* fs); | |
| void TestMoveDir(FileSystem* fs); | |
| void TestCopyFile(FileSystem* fs); | |
| void TestGetFileInfo(FileSystem* fs); | |
| void TestGetFileInfoVector(FileSystem* fs); | |
| void TestGetFileInfoSelector(FileSystem* fs); | |
| void TestGetFileInfoSelectorWithRecursion(FileSystem* fs); | |
| void TestGetFileInfoAsync(FileSystem* fs); | |
| void TestGetFileInfoGenerator(FileSystem* fs); | |
| void TestOpenOutputStream(FileSystem* fs); | |
| void TestOpenAppendStream(FileSystem* fs); | |
| void TestOpenInputStream(FileSystem* fs); | |
| void TestOpenInputStreamWithFileInfo(FileSystem* fs); | |
| void TestOpenInputStreamAsync(FileSystem* fs); | |
| void TestOpenInputFile(FileSystem* fs); | |
| void TestOpenInputFileWithFileInfo(FileSystem* fs); | |
| void TestOpenInputFileAsync(FileSystem* fs); | |
| void TestSpecialChars(FileSystem* fs); | |
| }; | |
| #define GENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, NAME) \ | |
| TEST_MACRO(TEST_CLASS, NAME) { this->Test##NAME(); } | |
| #define GENERIC_FS_TEST_FUNCTIONS_MACROS(TEST_MACRO, TEST_CLASS) \ | |
| GENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, Empty) \ | |
| GENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, NormalizePath) \ | |
| GENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, CreateDir) \ | |
| GENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, DeleteDir) \ | |
| GENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, DeleteDirContents) \ | |
| GENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, DeleteRootDirContents) \ | |
| GENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, DeleteFile) \ | |
| GENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, DeleteFiles) \ | |
| GENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, MoveFile) \ | |
| GENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, MoveDir) \ | |
| GENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, CopyFile) \ | |
| GENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, GetFileInfo) \ | |
| GENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, GetFileInfoVector) \ | |
| GENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, GetFileInfoSelector) \ | |
| GENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, GetFileInfoSelectorWithRecursion) \ | |
| GENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, GetFileInfoAsync) \ | |
| GENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, GetFileInfoGenerator) \ | |
| GENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, OpenOutputStream) \ | |
| GENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, OpenAppendStream) \ | |
| GENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, OpenInputStream) \ | |
| GENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, OpenInputStreamWithFileInfo) \ | |
| GENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, OpenInputStreamAsync) \ | |
| GENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, OpenInputFile) \ | |
| GENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, OpenInputFileWithFileInfo) \ | |
| GENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, OpenInputFileAsync) \ | |
| GENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, SpecialChars) | |
| #define GENERIC_FS_TEST_FUNCTIONS(TEST_CLASS) \ | |
| GENERIC_FS_TEST_FUNCTIONS_MACROS(TEST_F, TEST_CLASS) | |
| #define GENERIC_FS_TYPED_TEST_FUNCTIONS(TEST_CLASS) \ | |
| GENERIC_FS_TEST_FUNCTIONS_MACROS(TYPED_TEST, TEST_CLASS) |
This is a child of #18014.
Component(s)
C++