From 1821c751aa076f2a51ad3a6bfdfc18a096da271b Mon Sep 17 00:00:00 2001 From: Christophe Bedard Date: Mon, 21 Sep 2020 14:58:45 -0400 Subject: [PATCH] Make sure that an existing path is a directory for create_directories Signed-off-by: Christophe Bedard --- include/rcpputils/filesystem_helper.hpp | 2 ++ test/test_filesystem_helper.cpp | 1 + 2 files changed, 3 insertions(+) diff --git a/include/rcpputils/filesystem_helper.hpp b/include/rcpputils/filesystem_helper.hpp index 507fdba..a3c7467 100644 --- a/include/rcpputils/filesystem_helper.hpp +++ b/include/rcpputils/filesystem_helper.hpp @@ -509,6 +509,8 @@ inline bool create_directories(const path & p) #else status = mkdir(p_built.string().c_str(), S_IRWXU | S_IRWXG | S_IRWXO); #endif + } else if (!p_built.is_directory()) { + status = 1; } } return status == 0; diff --git a/test/test_filesystem_helper.cpp b/test/test_filesystem_helper.cpp index 11952d6..dc697b6 100644 --- a/test/test_filesystem_helper.cpp +++ b/test/test_filesystem_helper.cpp @@ -286,6 +286,7 @@ TEST(TestFilesystemHelper, filesystem_manipulation) EXPECT_TRUE(rcpputils::fs::exists(file)); EXPECT_TRUE(rcpputils::fs::is_regular_file(file)); EXPECT_FALSE(rcpputils::fs::is_directory(file)); + EXPECT_FALSE(rcpputils::fs::create_directories(file)); EXPECT_GE(rcpputils::fs::file_size(file), expected_file_size); EXPECT_THROW(rcpputils::fs::file_size(dir), std::system_error) << "file_size is only applicable for files!";