diff --git a/src/util/file_util.cpp b/src/util/file_util.cpp index 0e8cfc80ddf..e4a96bcf0ca 100644 --- a/src/util/file_util.cpp +++ b/src/util/file_util.cpp @@ -136,10 +136,8 @@ std::string concat_dir_file( const std::string &file_name) { #ifdef _WIN32 - return (file_name.size()>1 && - file_name[0]!='/' && - file_name[1]!=':') ? - file_name : directory+"\\"+file_name; + return (file_name.size() > 1 && file_name[0] != '/' && file_name[1] == ':') ? + file_name : directory + "\\" + file_name; #else return (!file_name.empty() && file_name[0]=='/') ? file_name : directory+"/"+file_name; diff --git a/unit/util/file_util.cpp b/unit/util/file_util.cpp index 8cf4c5bd6f1..2b4bc2055c4 100644 --- a/unit/util/file_util.cpp +++ b/unit/util/file_util.cpp @@ -14,6 +14,27 @@ Author: Daniel Kroening #include +TEST_CASE("concat_dir_file functionality", "[core][util][file_util]") +{ + temp_dirt temp_dir("testXXXXXX"); + const std::string path = concat_dir_file(temp_dir.path, "bla.txt"); + + REQUIRE(path.size() > temp_dir.path.size() + std::string("bla.txt").size()); + #ifdef _WIN32 + REQUIRE(path.find('\\') != std::string::npos); + #else + REQUIRE(path.find('/') != std::string::npos); + #endif + + #ifdef _WIN32 + const std::string qualified_path = "z:\some\path\foo.txt"; + #else + const std::string qualified_path = "/some/path/foo.txt"; + #endif + const std::string path2 = concat_dir_file(temp_dir.path, qualified_path); + REQUIRE(path2 == qualified_path); +} + TEST_CASE("is_directory functionality", "[core][util][file_util]") { temp_dirt temp_dir("testXXXXXX");