Commit a1f28394 authored by gabime's avatar gabime

updated os::dir_name and tests

parent 066087b3
This is async handler error message
\ No newline at end of file
...@@ -520,6 +520,10 @@ SPDLOG_INLINE bool create_dir(filename_t path) ...@@ -520,6 +520,10 @@ SPDLOG_INLINE bool create_dir(filename_t path)
// "abc///" => "abc//" // "abc///" => "abc//"
SPDLOG_INLINE filename_t dir_name(filename_t path) SPDLOG_INLINE filename_t dir_name(filename_t path)
{ {
#ifdef _WIN32
// support forward slash in windows
std::replace(path.begin(), path.end(), '/', folder_sep);
#endif
auto pos = path.find_last_of(folder_sep); auto pos = path.find_last_of(folder_sep);
return pos != filename_t::npos ? path.substr(0, pos) : filename_t{}; return pos != filename_t::npos ? path.substr(0, pos) : filename_t{};
} }
......
...@@ -6,12 +6,11 @@ ...@@ -6,12 +6,11 @@
using spdlog::details::os::create_dir; using spdlog::details::os::create_dir;
using spdlog::details::os::file_exists; using spdlog::details::os::file_exists;
void test_create_dir(const char *path, const char *normalized_path) bool try_create_dir(const char *path, const char *normalized_path)
{ {
printf("Test Create dir %s\n", path);
auto rv = create_dir(path); auto rv = create_dir(path);
REQUIRE(rv == true); REQUIRE(rv == true);
REQUIRE(file_exists(normalized_path)); return file_exists(normalized_path);
} }
#include "spdlog/sinks/stdout_color_sinks.h" #include "spdlog/sinks/stdout_color_sinks.h"
...@@ -19,23 +18,21 @@ void test_create_dir(const char *path, const char *normalized_path) ...@@ -19,23 +18,21 @@ void test_create_dir(const char *path, const char *normalized_path)
TEST_CASE("create_dir", "[create_dir]") TEST_CASE("create_dir", "[create_dir]")
{ {
prepare_logdir(); prepare_logdir();
REQUIRE(try_create_dir("test_logs/dir1/dir1", "test_logs/dir1/dir1"));
REQUIRE(try_create_dir("test_logs/dir1/dir1", "test_logs/dir1/dir1")); //test existing
REQUIRE(try_create_dir("test_logs/dir1///dir2//", "test_logs/dir1/dir2"));
REQUIRE(try_create_dir("./test_logs/dir1/dir3", "test_logs/dir1/dir3"));
REQUIRE(try_create_dir("test_logs/../test_logs/dir1/dir4", "test_logs/dir1/dir4"));
#ifdef WIN32 #ifdef WIN32
test_create_dir("test_logs/dir1/dir1", "test_logs\\dir1\\dir1");
test_create_dir("test_logs/dir1/dir1", "test_logs\\dir1\\dir1"); //test existing
test_create_dir("test_logs/dir1///dir2//", "test_logs\\dir1\\dir2");
test_create_dir("./test_logs/dir1/dir3", "test_logs\\dir1\\dir3");
test_create_dir("test_logs/../test_logs/dir1/dir4", "test_logs\\dir1\\dir4");
// test backslash // test backslash
test_create_dir("test_logs\\dir1\\dir222", "test_logs\\dir1\\dir222"); REQUIRE(try_create_dir("test_logs\\dir1\\dir222", "test_logs\\dir1\\dir222"));
test_create_dir("test_logs\\dir1\\dir223\\", "test_logs\\dir1\\dir223\\"); REQUIRE(try_create_dir("test_logs\\dir1\\dir223\\", "test_logs\\dir1\\dir223\\"));
test_create_dir(".\\test_logs\\dir1\\dir2\\dir99\\..\\dir23", "test_logs\\dir1\\dir2\\dir23"); REQUIRE(try_create_dir(".\\test_logs\\dir1\\dir2\\dir99\\..\\dir23", "test_logs\\dir1\\dir2\\dir23"));
#else REQUIRE(try_create_dir("test_logs\\..\\test_logs\\dir1\\dir5", "test_logs\\dir1\\dir5"));
test_create_dir("test_logs/dir1/dir1", "test_logs/dir1/dir1");
test_create_dir("test_logs/dir1/dir1", "test_logs/dir1/dir1"); // test existing
test_create_dir("test_logs/dir1///dir2", "test_logs/dir1/dir2");
test_create_dir("./test_logs/dir1/dir3", "test_logs/dir1/dir3");
test_create_dir("test_logs/../test_logs/dir1/dir4", "test_logs/dir1/dir4");
#endif #endif
} }
TEST_CASE("dir_name", "[create_dir]") TEST_CASE("dir_name", "[create_dir]")
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment