Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gabime/spdlog.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorgabime <gmelman1@gmail.com>2019-10-25 16:56:26 +0300
committergabime <gmelman1@gmail.com>2019-10-25 16:56:26 +0300
commit4a620a2c5e09646cf79cfd9000517ff0d2bb9edd (patch)
tree11e6a87c03ba4d074b76cb56a9f4f46007dca257 /tests
parentd1dadc98144629dcf5dfa4905018f52632a50763 (diff)
parent05105155f8839a02879932aebcff2c7a48d9c346 (diff)
Merge branch 'Issue-1248' into v1.x
Diffstat (limited to 'tests')
-rw-r--r--tests/CMakeLists.txt4
-rw-r--r--tests/meson.build3
-rw-r--r--tests/test_async.cpp4
-rw-r--r--tests/test_create_dir.cpp80
-rw-r--r--tests/test_daily_logger.cpp8
-rw-r--r--tests/test_errors.cpp19
-rw-r--r--tests/test_file_helper.cpp11
-rw-r--r--tests/test_file_logging.cpp8
-rw-r--r--tests/test_macros.cpp2
-rw-r--r--tests/utils.cpp12
10 files changed, 107 insertions, 44 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 55175bc1..5fd9900c 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -25,7 +25,8 @@ set(SPDLOG_UTESTS_SOURCES
test_fmt_helper.cpp
test_stdout_api.cpp
test_dup_filter.cpp
- test_backtrace.cpp)
+ test_backtrace.cpp
+ test_create_dir.cpp)
if(NOT SPDLOG_NO_EXCEPTIONS)
list(APPEND SPDLOG_UTESTS_SOURCES test_errors.cpp)
@@ -35,7 +36,6 @@ if(systemd_FOUND)
list(APPEND SPDLOG_UTESTS_SOURCES test_systemd.cpp)
endif()
-file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/logs")
enable_testing()
function(spdlog_prepare_test test_target spdlog_lib)
diff --git a/tests/meson.build b/tests/meson.build
index 73d7b8f8..98b40797 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -35,7 +35,6 @@ if systemd_dep.found()
global_test_deps += systemd_dep
endif
-run_command('mkdir', 'logs')
# --------------------------------------
# --- Build the test executables ---
# --------------------------------------
@@ -49,5 +48,3 @@ foreach i : test_matrix
test_exe = executable(i[0], test_sources, dependencies: global_test_deps + [i[1]])
test('test_' + i[0], test_exe)
endforeach
-
-run_command(find_program('mkdir'), meson.current_build_dir() + '/logs') \ No newline at end of file
diff --git a/tests/test_async.cpp b/tests/test_async.cpp
index 6f86cf6c..166ac21e 100644
--- a/tests/test_async.cpp
+++ b/tests/test_async.cpp
@@ -157,7 +157,7 @@ TEST_CASE("to_file", "[async]")
prepare_logdir();
size_t messages = 1024;
size_t tp_threads = 1;
- std::string filename = "logs/async_test.log";
+ std::string filename = "test_logs/async_test.log";
{
auto file_sink = std::make_shared<spdlog::sinks::basic_file_sink_mt>(filename, true);
auto tp = std::make_shared<spdlog::details::thread_pool>(messages, tp_threads);
@@ -179,7 +179,7 @@ TEST_CASE("to_file multi-workers", "[async]")
prepare_logdir();
size_t messages = 1024 * 10;
size_t tp_threads = 10;
- std::string filename = "logs/async_test.log";
+ std::string filename = "test_logs/async_test.log";
{
auto file_sink = std::make_shared<spdlog::sinks::basic_file_sink_mt>(filename, true);
auto tp = std::make_shared<spdlog::details::thread_pool>(messages, tp_threads);
diff --git a/tests/test_create_dir.cpp b/tests/test_create_dir.cpp
new file mode 100644
index 00000000..b538e80e
--- /dev/null
+++ b/tests/test_create_dir.cpp
@@ -0,0 +1,80 @@
+/*
+ * This content is released under the MIT License as specified in https://raw.githubusercontent.com/gabime/spdlog/master/LICENSE
+ */
+#include "includes.h"
+
+using spdlog::details::os::create_dir;
+using spdlog::details::os::path_exists;
+
+bool try_create_dir(const char *path, const char *normalized_path)
+{
+ auto rv = create_dir(path);
+ REQUIRE(rv == true);
+ return path_exists(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 backslash folder separator
+ 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("create_invalid_dir", "[create_dir]")
+{
+ REQUIRE(create_dir("") == false);
+ REQUIRE(create_dir(spdlog::filename_t{}) == false);
+#ifdef __linux__
+ REQUIRE(create_dir("/proc/spdlog-utest") == false);
+#endif
+}
+
+TEST_CASE("dir_name", "[create_dir]")
+{
+ using spdlog::details::os::dir_name;
+ REQUIRE(dir_name("").empty());
+ REQUIRE(dir_name("dir").empty());
+
+#ifdef WIN32
+ REQUIRE(dir_name(R"(dir\)") == "dir");
+ REQUIRE(dir_name(R"(dir\\\)") == R"(dir\\)");
+ REQUIRE(dir_name(R"(dir\file)") == "dir");
+ REQUIRE(dir_name(R"(dir/file)") == "dir");
+ REQUIRE(dir_name(R"(dir\file.txt)") == "dir");
+ REQUIRE(dir_name(R"(dir/file)") == "dir");
+ REQUIRE(dir_name(R"(dir\file.txt\)") == R"(dir\file.txt)");
+ REQUIRE(dir_name(R"(dir/file.txt/)") == R"(dir\file.txt)");
+ REQUIRE(dir_name(R"(\dir\file.txt)") == R"(\dir)");
+ REQUIRE(dir_name(R"(/dir/file.txt)") == R"(\dir)");
+ REQUIRE(dir_name(R"(\\dir\file.txt)") == R"(\\dir)");
+ REQUIRE(dir_name(R"(//dir/file.txt)") == R"(\\dir)");
+ REQUIRE(dir_name(R"(..\file.txt)") == "..");
+ REQUIRE(dir_name(R"(../file.txt)") == "..");
+ REQUIRE(dir_name(R"(.\file.txt)") == ".");
+ REQUIRE(dir_name(R"(./file.txt)") == ".");
+ REQUIRE(dir_name(R"(c:\\a\b\c\d\file.txt)") == R"(c:\\a\b\c\d)");
+ REQUIRE(dir_name(R"(c://a/b/c/d/file.txt)") == R"(c:\\a\b\c\d)");
+#else
+ REQUIRE(dir_name("dir/") == "dir");
+ REQUIRE(dir_name("dir///") == "dir//");
+ REQUIRE(dir_name("dir/file") == "dir");
+ REQUIRE(dir_name("dir/file.txt") == "dir");
+ REQUIRE(dir_name("dir/file.txt/") == "dir/file.txt");
+ REQUIRE(dir_name("/dir/file.txt") == "/dir");
+ REQUIRE(dir_name("//dir/file.txt") == "//dir");
+ REQUIRE(dir_name("../file.txt") == "..");
+ REQUIRE(dir_name("./file.txt") == ".");
+#endif
+}
diff --git a/tests/test_daily_logger.cpp b/tests/test_daily_logger.cpp
index c89ef171..cf2002a3 100644
--- a/tests/test_daily_logger.cpp
+++ b/tests/test_daily_logger.cpp
@@ -10,7 +10,7 @@ TEST_CASE("daily_logger with dateonly calculator", "[daily_logger]")
prepare_logdir();
// calculate filename (time based)
- std::string basename = "logs/daily_dateonly";
+ std::string basename = "test_logs/daily_dateonly";
std::tm tm = spdlog::details::os::localtime();
spdlog::memory_buf_t w;
fmt::format_to(w, "{}_{:04d}-{:02d}-{:02d}", basename, tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday);
@@ -44,7 +44,7 @@ TEST_CASE("daily_logger with custom calculator", "[daily_logger]")
prepare_logdir();
// calculate filename (time based)
- std::string basename = "logs/daily_dateonly";
+ std::string basename = "test_logs/daily_dateonly";
std::tm tm = spdlog::details::os::localtime();
spdlog::memory_buf_t w;
fmt::format_to(w, "{}{:04d}{:02d}{:02d}", basename, tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday);
@@ -119,7 +119,7 @@ static void test_rotate(int days_to_run, uint16_t max_days, uint16_t expected_n_
prepare_logdir();
- std::string basename = "logs/daily_rotate.txt";
+ std::string basename = "test_logs/daily_rotate.txt";
daily_file_sink_st sink{basename, 2, 30, true, max_days};
// simulate messages with 24 intervals
@@ -130,7 +130,7 @@ static void test_rotate(int days_to_run, uint16_t max_days, uint16_t expected_n_
sink.log(create_msg(offset));
}
- REQUIRE(count_files("logs") == static_cast<size_t>(expected_n_files));
+ REQUIRE(count_files("test_logs") == static_cast<size_t>(expected_n_files));
}
TEST_CASE("daily_logger rotate", "[daily_file_sink]")
diff --git a/tests/test_errors.cpp b/tests/test_errors.cpp
index 65185d3c..4fc40594 100644
--- a/tests/test_errors.cpp
+++ b/tests/test_errors.cpp
@@ -26,7 +26,7 @@ protected:
TEST_CASE("default_error_handler", "[errors]]")
{
prepare_logdir();
- std::string filename = "logs/simple_log.txt";
+ std::string filename = "test_logs/simple_log.txt";
auto logger = spdlog::create<spdlog::sinks::basic_file_sink_mt>("test-error", filename, true);
logger->set_pattern("%v");
@@ -43,7 +43,7 @@ struct custom_ex
TEST_CASE("custom_error_handler", "[errors]]")
{
prepare_logdir();
- std::string filename = "logs/simple_log.txt";
+ std::string filename = "test_logs/simple_log.txt";
auto logger = spdlog::create<spdlog::sinks::basic_file_sink_mt>("logger", filename, true);
logger->flush_on(spdlog::level::info);
logger->set_error_handler([=](const std::string &) { throw custom_ex(); });
@@ -75,15 +75,15 @@ TEST_CASE("async_error_handler", "[errors]]")
prepare_logdir();
std::string err_msg("log failed with some msg");
- std::string filename = "logs/simple_async_log.txt";
+ std::string filename = "test_logs/simple_async_log.txt";
{
spdlog::init_thread_pool(128, 1);
auto logger = spdlog::create_async<spdlog::sinks::basic_file_sink_mt>("logger", filename, true);
logger->set_error_handler([=](const std::string &) {
- std::ofstream ofs("logs/custom_err.txt");
+ std::ofstream ofs("test_logs/custom_err.txt");
if (!ofs)
{
- throw std::runtime_error("Failed open logs/custom_err.txt");
+ throw std::runtime_error("Failed open test_logs/custom_err.txt");
}
ofs << err_msg;
});
@@ -94,7 +94,7 @@ TEST_CASE("async_error_handler", "[errors]]")
}
spdlog::init_thread_pool(128, 1);
REQUIRE(count_lines(filename) == 2);
- REQUIRE(file_contents("logs/custom_err.txt") == err_msg);
+ REQUIRE(file_contents("test_logs/custom_err.txt") == err_msg);
}
// Make sure async error handler is executed
@@ -103,12 +103,13 @@ TEST_CASE("async_error_handler2", "[errors]]")
prepare_logdir();
std::string err_msg("This is async handler error message");
{
+ spdlog::details::os::create_dir("test_logs");
spdlog::init_thread_pool(128, 1);
auto logger = spdlog::create_async<failing_sink>("failed_logger");
logger->set_error_handler([=](const std::string &) {
- std::ofstream ofs("logs/custom_err2.txt");
+ std::ofstream ofs("test_logs/custom_err2.txt");
if (!ofs)
- throw std::runtime_error("Failed open logs/custom_err2.txt");
+ throw std::runtime_error("Failed open test_logs/custom_err2.txt");
ofs << err_msg;
});
logger->info("Hello failure");
@@ -116,5 +117,5 @@ TEST_CASE("async_error_handler2", "[errors]]")
}
spdlog::init_thread_pool(128, 1);
- REQUIRE(file_contents("logs/custom_err2.txt") == err_msg);
+ REQUIRE(file_contents("test_logs/custom_err2.txt") == err_msg);
}
diff --git a/tests/test_file_helper.cpp b/tests/test_file_helper.cpp
index 74e3744e..3a3545fe 100644
--- a/tests/test_file_helper.cpp
+++ b/tests/test_file_helper.cpp
@@ -6,7 +6,7 @@
using spdlog::details::file_helper;
using spdlog::details::log_msg;
-static const std::string target_filename = "logs/file_helper_test.txt";
+static const std::string target_filename = "test_logs/file_helper_test.txt";
static void write_with_helper(file_helper &helper, size_t howmany)
{
@@ -38,15 +38,6 @@ TEST_CASE("file_helper_size", "[file_helper::size()]]")
REQUIRE(get_filesize(target_filename) == expected_size);
}
-TEST_CASE("file_helper_exists", "[file_helper::file_exists()]]")
-{
- prepare_logdir();
- REQUIRE(!file_helper::file_exists(target_filename));
- file_helper helper;
- helper.open(target_filename);
- REQUIRE(file_helper::file_exists(target_filename));
-}
-
TEST_CASE("file_helper_reopen", "[file_helper::reopen()]]")
{
prepare_logdir();
diff --git a/tests/test_file_logging.cpp b/tests/test_file_logging.cpp
index 7563cf65..a8f9b2bb 100644
--- a/tests/test_file_logging.cpp
+++ b/tests/test_file_logging.cpp
@@ -6,7 +6,7 @@
TEST_CASE("simple_file_logger", "[simple_logger]]")
{
prepare_logdir();
- std::string filename = "logs/simple_log";
+ std::string filename = "test_logs/simple_log";
auto logger = spdlog::create<spdlog::sinks::basic_file_sink_mt>("logger", filename);
logger->set_pattern("%v");
@@ -22,7 +22,7 @@ TEST_CASE("simple_file_logger", "[simple_logger]]")
TEST_CASE("flush_on", "[flush_on]]")
{
prepare_logdir();
- std::string filename = "logs/simple_log";
+ std::string filename = "test_logs/simple_log";
auto logger = spdlog::create<spdlog::sinks::basic_file_sink_mt>("logger", filename);
logger->set_pattern("%v");
@@ -42,7 +42,7 @@ TEST_CASE("rotating_file_logger1", "[rotating_logger]]")
{
prepare_logdir();
size_t max_size = 1024 * 10;
- std::string basename = "logs/rotating_log";
+ std::string basename = "test_logs/rotating_log";
auto logger = spdlog::rotating_logger_mt("logger", basename, max_size, 0);
for (int i = 0; i < 10; ++i)
@@ -59,7 +59,7 @@ TEST_CASE("rotating_file_logger2", "[rotating_logger]]")
{
prepare_logdir();
size_t max_size = 1024 * 10;
- std::string basename = "logs/rotating_log";
+ std::string basename = "test_logs/rotating_log";
{
// make an initial logger to create the first output file
diff --git a/tests/test_macros.cpp b/tests/test_macros.cpp
index 26b03cdf..75f53ab2 100644
--- a/tests/test_macros.cpp
+++ b/tests/test_macros.cpp
@@ -12,7 +12,7 @@ TEST_CASE("debug and trace w/o format string", "[macros]]")
{
prepare_logdir();
- std::string filename = "logs/simple_log";
+ std::string filename = "test_logs/simple_log";
auto logger = spdlog::create<spdlog::sinks::basic_file_sink_mt>("logger", filename);
logger->set_pattern("%v");
diff --git a/tests/utils.cpp b/tests/utils.cpp
index 6c7f3662..255a4fec 100644
--- a/tests/utils.cpp
+++ b/tests/utils.cpp
@@ -9,18 +9,12 @@ void prepare_logdir()
{
spdlog::drop_all();
#ifdef _WIN32
- system("if not exist logs mkdir logs");
- system("del /F /Q logs\\*");
+ system("rmdir /S /Q test_logs");
#else
- auto rv = system("mkdir -p logs");
+ auto rv = system("rm -rf test_logs");
if (rv != 0)
{
- throw std::runtime_error("Failed to mkdir -p logs");
- }
- rv = system("rm -f logs/*");
- if (rv != 0)
- {
- throw std::runtime_error("Failed to rm -f logs/*");
+ throw std::runtime_error("Failed to rm -rf test_logs");
}
#endif
}