aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Ridgers <[email protected]>2021-09-15 16:32:59 +0200
committerMartin Ridgers <[email protected]>2021-09-16 10:07:22 +0200
commit75a1cb75d080bdc56c351c359acdef19a9865608 (patch)
tree0a0ef19934f74bb2280c6f6cb684d98a442d9acd
parentImplemented GetRunningExecutablePath() for Linux (diff)
downloadzen-75a1cb75d080bdc56c351c359acdef19a9865608.tar.xz
zen-75a1cb75d080bdc56c351c359acdef19a9865608.zip
Added a simple filesystem test case
-rw-r--r--zencore/filesystem.cpp42
-rw-r--r--zencore/include/zencore/filesystem.h4
-rw-r--r--zencore/zencore.cpp2
3 files changed, 48 insertions, 0 deletions
diff --git a/zencore/filesystem.cpp b/zencore/filesystem.cpp
index 4f3ee44b0..14eef812f 100644
--- a/zencore/filesystem.cpp
+++ b/zencore/filesystem.cpp
@@ -15,6 +15,7 @@
#include <winnt.h>
#include <filesystem>
+#include <doctest/doctest.h>
#include <gsl/gsl-lite.hpp>
namespace zen {
@@ -655,4 +656,45 @@ GetRunningExecutablePath()
#endif // ZEN_PLATFORM_WINDOWS
}
+
+
+//////////////////////////////////////////////////////////////////////////
+//
+// Testing related code follows...
+//
+
+void
+filesystem_forcelink()
+{
+}
+
+TEST_CASE("filesystem")
+{
+ using namespace std::filesystem;
+
+ path BinPath = GetRunningExecutablePath();
+ CHECK(BinPath.stem() == "zencore-test");
+ CHECK(is_regular_file(BinPath));
+
+ void* Handle;
+#if ZEN_PLATFORM_WINDOWS
+ Handle = CreateFileW(BinPath.c_str(), GENERIC_READ, FILE_SHARE_READ, nullptr,
+ OPEN_EXISTING, 0, nullptr);
+ CHECK(Handle != INVALID_HANDLE_VALUE);
+#else
+ int Fd = open(BinPath.c_str(), O_RDONLY);
+ CHECK(Fd >= 0);
+ Handle = (void*)uintptr_t(Fd);
+#endif
+
+ auto FromHandle = PathFromHandle((void*)uintptr_t(Handle));
+ CHECK(equivalent(FromHandle, BinPath));
+
+#if ZEN_PLATFORM_WINDOWS
+ CloseHandle(Handle);
+#else
+ close(int(uintptr_t(Handle)));
+#endif
+}
+
} // namespace zen
diff --git a/zencore/include/zencore/filesystem.h b/zencore/include/zencore/filesystem.h
index a2d368d6f..a5e4dcf80 100644
--- a/zencore/include/zencore/filesystem.h
+++ b/zencore/include/zencore/filesystem.h
@@ -78,4 +78,8 @@ public:
void TraverseFileSystem(const std::filesystem::path& RootDir, TreeVisitor& Visitor);
};
+//////////////////////////////////////////////////////////////////////////
+
+void filesystem_forcelink(); // internal
+
} // namespace zen
diff --git a/zencore/zencore.cpp b/zencore/zencore.cpp
index c53fd218f..20a9e7338 100644
--- a/zencore/zencore.cpp
+++ b/zencore/zencore.cpp
@@ -16,6 +16,7 @@
#include <zencore/compactbinarypackage.h>
#include <zencore/compositebuffer.h>
#include <zencore/compress.h>
+#include <zencore/filesystem.h>
#include <zencore/iobuffer.h>
#include <zencore/memory.h>
#include <zencore/refcount.h>
@@ -85,6 +86,7 @@ zencore_forcelinktests()
zen::blake3_forcelink();
zen::compositebuffer_forcelink();
zen::compress_forcelink();
+ zen::filesystem_forcelink();
zen::intmath_forcelink();
zen::iobuffer_forcelink();
zen::memory_forcelink();