summaryrefslogtreecommitdiff
path: root/netfs/unittests/mockMount.h
diff options
context:
space:
mode:
Diffstat (limited to 'netfs/unittests/mockMount.h')
-rw-r--r--netfs/unittests/mockMount.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/netfs/unittests/mockMount.h b/netfs/unittests/mockMount.h
new file mode 100644
index 0000000..2fec87a
--- /dev/null
+++ b/netfs/unittests/mockMount.h
@@ -0,0 +1,45 @@
+#pragma once
+
+#include "mockDaemon.h"
+#include <definedDirs.h>
+#include <fuseApp.h>
+#include <memory>
+#include <thread>
+#include <visibility.h>
+
+inline const std::filesystem::path mntpnt {binDir / "mnt"};
+
+class DLL_PUBLIC MockFuseApp : public NetFS::FuseApp {
+public:
+ MockFuseApp();
+ ~MockFuseApp() override;
+ SPECIAL_MEMBERS_DELETE(MockFuseApp);
+
+ struct fuse_context * fuseGetContext() override;
+
+ void vlogf(int, const char * fmt, va_list args) const noexcept override;
+
+ const auto &
+ getStatCache() const
+ {
+ return statCache;
+ }
+
+private:
+ friend class FuseMountPoint;
+ static char * vstrdupf(const char * fmt, va_list args);
+ struct fuse * fs;
+ struct fuse_args fargs;
+};
+
+class DLL_PUBLIC FuseMountPoint : public MockDaemonHost {
+public:
+ FuseMountPoint();
+ ~FuseMountPoint();
+ SPECIAL_MEMBERS_DELETE(FuseMountPoint);
+
+ MockFuseApp fuseApp;
+
+private:
+ std::optional<std::thread> th;
+};