diff options
| author | Martin Ridgers <[email protected]> | 2021-09-15 16:32:59 +0200 |
|---|---|---|
| committer | Martin Ridgers <[email protected]> | 2021-09-16 10:07:22 +0200 |
| commit | 75a1cb75d080bdc56c351c359acdef19a9865608 (patch) | |
| tree | 0a0ef19934f74bb2280c6f6cb684d98a442d9acd | |
| parent | Implemented GetRunningExecutablePath() for Linux (diff) | |
| download | zen-75a1cb75d080bdc56c351c359acdef19a9865608.tar.xz zen-75a1cb75d080bdc56c351c359acdef19a9865608.zip | |
Added a simple filesystem test case
| -rw-r--r-- | zencore/filesystem.cpp | 42 | ||||
| -rw-r--r-- | zencore/include/zencore/filesystem.h | 4 | ||||
| -rw-r--r-- | zencore/zencore.cpp | 2 |
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(); |