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)
// "abc///" => "abc//"
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);
return pos != filename_t::npos ? path.substr(0, pos) : filename_t{};
}
......
......@@ -6,12 +6,11 @@
using spdlog::details::os::create_dir;
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);
REQUIRE(rv == true);
REQUIRE(file_exists(normalized_path));
return file_exists(normalized_path);
}
#include "spdlog/sinks/stdout_color_sinks.h"
......@@ -19,23 +18,21 @@ void test_create_dir(const char *path, const char *normalized_path)
TEST_CASE("create_dir", "[create_dir]")
{
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
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_create_dir("test_logs\\dir1\\dir222", "test_logs\\dir1\\dir222");
test_create_dir("test_logs\\dir1\\dir223\\", "test_logs\\dir1\\dir223\\");
test_create_dir(".\\test_logs\\dir1\\dir2\\dir99\\..\\dir23", "test_logs\\dir1\\dir2\\dir23");
#else
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");
REQUIRE(try_create_dir("test_logs\\dir1\\dir222", "test_logs\\dir1\\dir222"));
REQUIRE(try_create_dir("test_logs\\dir1\\dir223\\", "test_logs\\dir1\\dir223\\"));
REQUIRE(try_create_dir(".\\test_logs\\dir1\\dir2\\dir99\\..\\dir23", "test_logs\\dir1\\dir2\\dir23"));
REQUIRE(try_create_dir("test_logs\\..\\test_logs\\dir1\\dir5", "test_logs\\dir1\\dir5"));
#endif
}
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