From 43328e3e2d859074895f46228edb31df1041c872 Mon Sep 17 00:00:00 2001 From: Bartek Kryza Date: Tue, 7 Feb 2023 22:18:57 +0100 Subject: [PATCH] Fixed unit tests on MSVC --- build.ps1 | 10 ++++++++-- src/class_diagram/visitor/translation_unit_visitor.cc | 5 +++++ tests/test_cases.cc | 8 +++++++- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/build.ps1 b/build.ps1 index 671b0584..f43bc470 100644 --- a/build.ps1 +++ b/build.ps1 @@ -1,4 +1,10 @@ param ($Prefix="C:\clang-uml", $BuildType="Release") -cmake -S . -B .\_build\$BuildType -DCMAKE_PREFIX_PATH="$Prefix" -Thost=x64 -cmake --build .\_build\$BuildType --config $BuildType \ No newline at end of file +cmake -S . -B $BuildType -DCMAKE_PREFIX_PATH="$Prefix" -Thost=x64 +cmake --build $BuildType --config $BuildType + +# Create compile commands in Visual Studio +# before running these tests +cd $BuildType +ctest -C $BuildType --output-on-failure +cd .. \ No newline at end of file diff --git a/src/class_diagram/visitor/translation_unit_visitor.cc b/src/class_diagram/visitor/translation_unit_visitor.cc index 2f84b579..8c1f9112 100644 --- a/src/class_diagram/visitor/translation_unit_visitor.cc +++ b/src/class_diagram/visitor/translation_unit_visitor.cc @@ -1135,9 +1135,14 @@ void translation_unit_visitor::ensure_lambda_type_is_relative( #ifdef _MSC_VER auto root_name = fmt::format( "{}\\", std::filesystem::current_path().root_name().string()); + if(root_name.back() == '\\') { + root_name.pop_back(); + root_name.push_back('/'); + } #else auto root_name = std::string{"/"}; #endif + std::string lambda_prefix{fmt::format("(lambda at {}", root_name)}; while (parameter_type.find(lambda_prefix) != std::string::npos) { diff --git a/tests/test_cases.cc b/tests/test_cases.cc index 42448016..c8e8ef3b 100644 --- a/tests/test_cases.cc +++ b/tests/test_cases.cc @@ -37,13 +37,19 @@ load_config(const std::string &test_name) { auto config = clanguml::config::load(test_name + "/.clang-uml", true); + LOG_DBG("Loading compilation database from {}", + config.compilation_database_dir()); + std::string err{}; auto compilation_database = clang::tooling::CompilationDatabase::autoDetectFromDirectory( config.compilation_database_dir(), err); - if (!err.empty()) + if (!err.empty()) { + LOG_ERROR("Failed to load compilation database from {}", + config.compilation_database_dir()); throw std::runtime_error{err}; + } return std::make_pair(std::move(config), std::move(compilation_database)); }