From 7f587c4840106662471e961db6c601a44c026c08 Mon Sep 17 00:00:00 2001 From: Michael Tautschnig Date: Mon, 6 Aug 2018 17:37:46 +0000 Subject: [PATCH] Fix concat_dir_file for Windows and unit-test it --- src/util/file_util.cpp | 6 ++---- unit/util/file_util.cpp | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+), 4 deletions(-) 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");