7171namespace paimon ::test {
7272class GmockFileSystem : public LocalFileSystem {
7373 public:
74- GmockFileSystem () {
75- ON_CALL (*this , ListDir (testing::_, testing::_))
76- .WillByDefault (testing::Invoke (
77- [&](const std::string& directory,
78- std::vector<std::unique_ptr<BasicFileStatus>>* file_status_list) {
79- return this ->LocalFileSystem ::ListDir (directory, file_status_list);
80- }));
81- ON_CALL (*this , ReadFile (testing::_, testing::_))
82- .WillByDefault (testing::Invoke ([&](const std::string& path, std::string* content) {
83- return this ->FileSystem ::ReadFile (path, content);
84- }));
85- ON_CALL (*this , AtomicStore (::testing::_, ::testing::_))
86- .WillByDefault (
87- testing::Invoke ([&](const std::string& path, const std::string& content) {
88- return this ->FileSystem ::AtomicStore (path, content);
89- }));
90- }
91-
9274 MOCK_METHOD (Status, ReadFile, (const std::string& path, std::string* content), (override ));
9375 MOCK_METHOD (Status, ListDir,
9476 (const std::string& directory,
@@ -106,7 +88,29 @@ class GmockFileSystemFactory : public LocalFileSystemFactory {
10688
10789 Result<std::unique_ptr<FileSystem>> Create (
10890 const std::string& path, const std::map<std::string, std::string>& options) const override {
109- return std::make_unique<GmockFileSystem>();
91+ auto fs = std::make_unique<GmockFileSystem>();
92+ using ::testing::A;
93+ using ::testing::Invoke;
94+
95+ ON_CALL (*fs, ListDir (A<const std::string&>(),
96+ A<std::vector<std::unique_ptr<BasicFileStatus>>*>()))
97+ .WillByDefault (
98+ Invoke ([&](const std::string& directory,
99+ std::vector<std::unique_ptr<BasicFileStatus>>* file_status_list) {
100+ return fs->LocalFileSystem ::ListDir (directory, file_status_list);
101+ }));
102+
103+ ON_CALL (*fs, ReadFile (A<const std::string&>(), A<std::string*>()))
104+ .WillByDefault (Invoke ([&](const std::string& path, std::string* content) {
105+ return fs->FileSystem ::ReadFile (path, content);
106+ }));
107+
108+ ON_CALL (*fs, AtomicStore (A<const std::string&>(), A<const std::string&>()))
109+ .WillByDefault (Invoke ([&](const std::string& path, const std::string& content) {
110+ return fs->FileSystem ::AtomicStore (path, content);
111+ }));
112+
113+ return fs;
110114 }
111115};
112116
0 commit comments