| // 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. |
| classARROW_TESTING_EXPORT GenericFileSystemTest { |
| public: |
| virtual~GenericFileSystemTest(); |
| |
| voidTestEmpty(); |
| voidTestNormalizePath(); |
| voidTestCreateDir(); |
| voidTestDeleteDir(); |
| voidTestDeleteDirContents(); |
| voidTestDeleteRootDirContents(); |
| voidTestDeleteFile(); |
| voidTestDeleteFiles(); |
| voidTestMoveFile(); |
| voidTestMoveDir(); |
| voidTestCopyFile(); |
| voidTestGetFileInfo(); |
| voidTestGetFileInfoVector(); |
| voidTestGetFileInfoSelector(); |
| voidTestGetFileInfoSelectorWithRecursion(); |
| voidTestGetFileInfoAsync(); |
| voidTestGetFileInfoGenerator(); |
| voidTestOpenOutputStream(); |
| voidTestOpenAppendStream(); |
| voidTestOpenInputStream(); |
| voidTestOpenInputStreamWithFileInfo(); |
| voidTestOpenInputStreamAsync(); |
| voidTestOpenInputFile(); |
| voidTestOpenInputFileWithFileInfo(); |
| voidTestOpenInputFileAsync(); |
| voidTestSpecialChars(); |
| |
| 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 |
| virtualboolhave_implicit_directories() const { returnfalse; } |
| // - Whether the filesystem may allow writing a file "over" a directory |
| virtualboolallow_write_file_over_dir() const { returnfalse; } |
| // - Whether the filesystem allows reading a directory |
| virtualboolallow_read_dir_as_file() const { returnfalse; } |
| // - Whether the filesystem allows moving a directory |
| virtualboolallow_move_dir() const { returntrue; } |
| // - Whether the filesystem allows moving a directory "over" a non-empty destination |
| virtualboolallow_move_dir_over_non_empty_dir() const { returnfalse; } |
| // - Whether the filesystem allows appending to a file |
| virtualboolallow_append_to_file() const { returntrue; } |
| // - Whether the filesystem allows appending to a new (not existent yet) file |
| virtualboolallow_append_to_new_file() const { returntrue; } |
| // - Whether the filesystem supports directory modification times |
| virtualboolhave_directory_mtimes() const { returntrue; } |
| // - Whether some directory tree deletion tests may fail randomly |
| virtualboolhave_flaky_directory_tree_deletion() const { returnfalse; } |
| // - Whether the filesystem stores some metadata alongside files |
| virtualboolhave_file_metadata() const { returnfalse; } |
| |
| voidTestEmpty(FileSystem* fs); |
| voidTestNormalizePath(FileSystem* fs); |
| voidTestCreateDir(FileSystem* fs); |
| voidTestDeleteDir(FileSystem* fs); |
| voidTestDeleteDirContents(FileSystem* fs); |
| voidTestDeleteRootDirContents(FileSystem* fs); |
| voidTestDeleteFile(FileSystem* fs); |
| voidTestDeleteFiles(FileSystem* fs); |
| voidTestMoveFile(FileSystem* fs); |
| voidTestMoveDir(FileSystem* fs); |
| voidTestCopyFile(FileSystem* fs); |
| voidTestGetFileInfo(FileSystem* fs); |
| voidTestGetFileInfoVector(FileSystem* fs); |
| voidTestGetFileInfoSelector(FileSystem* fs); |
| voidTestGetFileInfoSelectorWithRecursion(FileSystem* fs); |
| voidTestGetFileInfoAsync(FileSystem* fs); |
| voidTestGetFileInfoGenerator(FileSystem* fs); |
| voidTestOpenOutputStream(FileSystem* fs); |
| voidTestOpenAppendStream(FileSystem* fs); |
| voidTestOpenInputStream(FileSystem* fs); |
| voidTestOpenInputStreamWithFileInfo(FileSystem* fs); |
| voidTestOpenInputStreamAsync(FileSystem* fs); |
| voidTestOpenInputFile(FileSystem* fs); |
| voidTestOpenInputFileWithFileInfo(FileSystem* fs); |
| voidTestOpenInputFileAsync(FileSystem* fs); |
| voidTestSpecialChars(FileSystem* fs); |
| }; |
| |
| #defineGENERIC_FS_TEST_FUNCTION(TEST_MACRO, TEST_CLASS, NAME) \ |
| TEST_MACRO(TEST_CLASS, NAME) { this->Test##NAME(); } |
| |
| #defineGENERIC_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) |
| |
| #defineGENERIC_FS_TEST_FUNCTIONS(TEST_CLASS) \ |
| GENERIC_FS_TEST_FUNCTIONS_MACROS(TEST_F, TEST_CLASS) |
| |
| #defineGENERIC_FS_TYPED_TEST_FUNCTIONS(TEST_CLASS) \ |
| GENERIC_FS_TEST_FUNCTIONS_MACROS(TYPED_TEST, TEST_CLASS) |
Describe the enhancement requested
arrow/cpp/src/arrow/filesystem/test_util.h
Lines 120 to 245 in f7947cc
This is a child of #18014.
Component(s)
C++