From 6055c5684e8dab4fb7cf5360541c97453e90c1bd Mon Sep 17 00:00:00 2001 From: Bartek Kryza Date: Sat, 9 Dec 2023 19:52:49 +0100 Subject: [PATCH] Fixed handling of relative paths on MSVC --- src/config/config.cc | 2 +- .../visitor/translation_unit_visitor.cc | 11 ++++------- tests/test_cases.cc | 4 ++-- tests/test_config.cc | 6 +++++- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/config/config.cc b/src/config/config.cc index 00297ee9..ecfd9722 100644 --- a/src/config/config.cc +++ b/src/config/config.cc @@ -255,7 +255,7 @@ std::vector diagram::get_translation_units() const std::filesystem::path diagram::root_directory() const { - return canonical(absolute(base_directory() / relative_to())); + return weakly_canonical(absolute(base_directory() / relative_to())); } std::filesystem::path diagram::make_path_relative( diff --git a/src/sequence_diagram/visitor/translation_unit_visitor.cc b/src/sequence_diagram/visitor/translation_unit_visitor.cc index 74ea432a..c8c320a2 100644 --- a/src/sequence_diagram/visitor/translation_unit_visitor.cc +++ b/src/sequence_diagram/visitor/translation_unit_visitor.cc @@ -2311,13 +2311,10 @@ std::string translation_unit_visitor::make_lambda_name( const auto location = cls->getLocation(); const auto file_line = source_manager().getSpellingLineNumber(location); const auto file_column = source_manager().getSpellingColumnNumber(location); - const std::string file_name = config().make_path_relative( - source_manager().getFilename(location).str()); - // - // util::path_to_url(std::filesystem::relative( - // source_manager().getFilename(location).str(), - // config().relative_to()) - // .string()); + const std::string file_name = + config() + .make_path_relative(source_manager().getFilename(location).str()) + .string(); if (context().caller_id() != 0 && get_participant(context().caller_id()).has_value()) { diff --git a/tests/test_cases.cc b/tests/test_cases.cc index 9d62a5de..6a2a672b 100644 --- a/tests/test_cases.cc +++ b/tests/test_cases.cc @@ -51,8 +51,8 @@ load_config(const std::string &test_name) const auto compilation_database_dir = canonical( std::filesystem::current_path() / std::filesystem::path{".."}); - const auto output_directory = - std::filesystem::current_path() / std::filesystem::path{"diagrams"}; + const auto output_directory = weakly_canonical( + std::filesystem::current_path() / std::filesystem::path{"diagrams"}); res.first = clanguml::config::load(test_config_path, true, false, true); diff --git a/tests/test_config.cc b/tests/test_config.cc index a17c0aef..a9e01b45 100644 --- a/tests/test_config.cc +++ b/tests/test_config.cc @@ -350,7 +350,11 @@ TEST_CASE("Test config relative paths handling", "[unit-test]") CHECK(cfg.diagrams.size() == 2); auto &def = *cfg.diagrams["class1"]; CHECK(def.get_relative_to()() == "/tmp"); - CHECK(def.root_directory() == "/tmp"); +#ifdef _MSC_VER + CHECK(def.root_directory().string() == "C:\\tmp"); +#else + CHECK(def.root_directory().string() == "/tmp"); +#endif def = *cfg.diagrams["class2"]; CHECK(def.get_relative_to()() == ".");