From 78cfa630e5d35d288e285d3a3a00a63e5bc58e7b Mon Sep 17 00:00:00 2001 From: Bartek Kryza Date: Sat, 21 Jan 2023 18:00:21 +0100 Subject: [PATCH] Fixed handling of relative paths in configuration files (#69) --- CHANGELOG.md | 2 ++ src/config/config.cc | 12 +++++---- src/config/config.h | 6 ++--- src/config/yaml_decoders.cc | 51 ++++++++++++++++++++++++++++++++++++- src/main.cc | 38 +++++++++++++++++---------- src/util/util.cc | 13 ++++++++++ src/util/util.h | 13 ++++++++++ tests/t00002/test_case.h | 3 +-- tests/t00003/test_case.h | 3 +-- tests/t00004/test_case.h | 3 +-- tests/t00005/test_case.h | 3 +-- tests/t00006/test_case.h | 3 +-- tests/t00007/test_case.h | 3 +-- tests/t00008/test_case.h | 3 +-- tests/t00009/test_case.h | 3 +-- tests/t00010/test_case.h | 3 +-- tests/t00011/test_case.h | 3 +-- tests/t00012/test_case.h | 3 +-- tests/t00013/test_case.h | 3 +-- tests/t00014/test_case.h | 3 +-- tests/t00015/test_case.h | 3 +-- tests/t00016/test_case.h | 3 +-- tests/t00017/test_case.h | 3 +-- tests/t00018/test_case.h | 3 +-- tests/t00019/test_case.h | 3 +-- tests/t00020/test_case.h | 3 +-- tests/t00021/test_case.h | 3 +-- tests/t00022/test_case.h | 3 +-- tests/t00023/test_case.h | 3 +-- tests/t00024/test_case.h | 3 +-- tests/t00025/test_case.h | 3 +-- tests/t00026/test_case.h | 3 +-- tests/t00027/test_case.h | 3 +-- tests/t00028/test_case.h | 3 +-- tests/t00029/test_case.h | 3 +-- tests/t00030/test_case.h | 3 +-- tests/t00031/test_case.h | 3 +-- tests/t00032/test_case.h | 3 +-- tests/t00033/test_case.h | 3 +-- tests/t00034/test_case.h | 3 +-- tests/t00035/test_case.h | 3 +-- tests/t00036/test_case.h | 3 +-- tests/t00037/test_case.h | 3 +-- tests/t00038/test_case.h | 3 +-- tests/t00039/test_case.h | 3 +-- tests/t00040/test_case.h | 3 +-- tests/t00041/test_case.h | 3 +-- tests/t00042/test_case.h | 3 +-- tests/t00043/test_case.h | 3 +-- tests/t00044/test_case.h | 3 +-- tests/t00045/test_case.h | 3 +-- tests/t00046/test_case.h | 4 +-- tests/t00047/test_case.h | 3 +-- tests/t00048/test_case.h | 3 +-- tests/t00049/test_case.h | 3 +-- tests/t00050/test_case.h | 3 +-- tests/t20001/test_case.h | 3 +-- tests/t20002/test_case.h | 3 +-- tests/t20003/test_case.h | 3 +-- tests/t20004/test_case.h | 3 +-- tests/t20005/test_case.h | 3 +-- tests/t20006/test_case.h | 3 +-- tests/t20007/test_case.h | 3 +-- tests/t20008/test_case.h | 3 +-- tests/t20009/test_case.h | 3 +-- tests/t20010/test_case.h | 3 +-- tests/t20011/test_case.h | 3 +-- tests/t20012/test_case.h | 3 +-- tests/t20013/test_case.h | 3 +-- tests/t20014/test_case.h | 3 +-- tests/t20015/test_case.h | 3 +-- tests/t20016/test_case.h | 3 +-- tests/t20017/test_case.h | 3 +-- tests/t20018/test_case.h | 3 +-- tests/t20019/test_case.h | 3 +-- tests/t20020/test_case.h | 3 +-- tests/t20021/test_case.h | 3 +-- tests/t20022/test_case.h | 3 +-- tests/t20023/test_case.h | 3 +-- tests/t20024/test_case.h | 3 +-- tests/t20025/test_case.h | 3 +-- tests/t20026/test_case.h | 3 +-- tests/t20027/test_case.h | 3 +-- tests/t20028/test_case.h | 3 +-- tests/t20029/test_case.h | 3 +-- tests/t30001/test_case.h | 3 +-- tests/t30002/test_case.h | 3 +-- tests/t30003/test_case.h | 3 +-- tests/t30004/test_case.h | 3 +-- tests/t30005/test_case.h | 3 +-- tests/t30006/test_case.h | 3 +-- tests/t30007/test_case.h | 3 +-- tests/t30008/test_case.h | 3 +-- tests/t40001/test_case.h | 3 +-- tests/t40002/test_case.h | 3 +-- tests/t40003/test_case.h | 3 +-- tests/t90000/test_case.h | 3 +-- tests/test_cases.cc | 10 ++++---- tests/test_util.cc | 12 +++++++++ 99 files changed, 221 insertions(+), 207 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb813fde..78ce17b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # CHANGELOG + * Fixed relative paths in config files to be relative to the parent of + the configuration file by default (#69) * Added command line option (--dump-config) to print effective config (#77) * Added support for building with Microsoft Visual Studio diff --git a/src/config/config.cc b/src/config/config.cc index 75297355..add25931 100644 --- a/src/config/config.cc +++ b/src/config/config.cc @@ -123,16 +123,18 @@ std::string inheritable_diagram_options::simplify_template_type( return full_name; } -std::vector diagram::get_translation_units( - const std::filesystem::path &root_directory) const +std::vector diagram::get_translation_units() const { std::vector translation_units{}; for (const auto &g : glob()) { - const auto matches = glob::glob(g, root_directory); + std::string glob_path = + fmt::format("{}/{}", relative_to().string(), g.c_str()); + + auto matches = glob::glob(glob_path, true, false); + for (const auto &match : matches) { - const auto path = - std::filesystem::canonical(root_directory / match); + const auto path = std::filesystem::canonical(relative_to() / match); translation_units.emplace_back(path.string()); } } diff --git a/src/config/config.h b/src/config/config.h index 9ed5c199..893f511c 100644 --- a/src/config/config.h +++ b/src/config/config.h @@ -170,8 +170,7 @@ struct diagram : public inheritable_diagram_options { virtual common::model::diagram_t type() const = 0; - std::vector get_translation_units( - const std::filesystem::path &root_directory) const; + std::vector get_translation_units() const; void initialize_type_aliases(); @@ -268,7 +267,8 @@ YAML::Emitter &operator<<(YAML::Emitter &out, const option &o) return out; } -config load(const std::string &config_file); +config load(const std::string &config_file, + std::optional paths_relative_to_pwd = {}); } // namespace config namespace common::model { diff --git a/src/config/yaml_decoders.cc b/src/config/yaml_decoders.cc index 27417b60..2abe0b3c 100644 --- a/src/config/yaml_decoders.cc +++ b/src/config/yaml_decoders.cc @@ -571,7 +571,30 @@ template <> struct convert { } // namespace YAML namespace clanguml::config { -config load(const std::string &config_file) + +namespace { +void resolve_option_path(YAML::Node &doc, const std::string &option) +{ + std::filesystem::path relative_to_path{ + doc["relative_to"].as()}; + + assert(relative_to_path.is_absolute()); + + std::filesystem::path option_path{doc[option].as()}; + + if (option_path.is_absolute()) + return; + + option_path = relative_to_path / option_path.string(); + option_path = option_path.lexically_normal(); + option_path.make_preferred(); + + doc[option] = option_path.string(); +} +} // namespace + +config load( + const std::string &config_file, std::optional paths_relative_to_pwd) { try { YAML::Node doc = YAML::LoadFile(config_file); @@ -583,6 +606,32 @@ config load(const std::string &config_file) doc.force_insert( "__parent_path", config_file_path.parent_path().string()); + // + // If no relative_to path is specified in the config, make all paths + // resolvable against the parent directory of the .clang-uml config + // file, or against the $PWD if it was specified so in the command + // line + // + if (!doc["relative_to"]) { + bool paths_relative_to_config_file = true; + if (doc["paths_relative_to_config_file"] && + !doc["paths_relative_to_config_file"].as()) + paths_relative_to_config_file = false; + if (paths_relative_to_pwd && *paths_relative_to_pwd) + paths_relative_to_config_file = false; + + if (paths_relative_to_config_file) + doc["relative_to"] = config_file_path.parent_path().string(); + else + doc["relative_to"] = std::filesystem::current_path().string(); + } + + // + // Resolve common path-like config options relative to `relative_to` + // + resolve_option_path(doc, "output_directory"); + resolve_option_path(doc, "compilation_database_dir"); + // If the current directory is also a git repository, // load some config values, which can be included in the // generated diagrams diff --git a/src/main.cc b/src/main.cc index a6fdbbdf..4fc101ce 100644 --- a/src/main.cc +++ b/src/main.cc @@ -158,9 +158,9 @@ int main(int argc, const char *argv[]) CLI::App app{"Clang-based PlantUML diagram generator for C++"}; std::string config_path{".clang-uml"}; - std::string compilation_database_dir{}; + std::optional compilation_database_dir{}; std::vector diagram_names{}; - std::optional output_directory; + std::optional output_directory{}; unsigned int thread_count{0}; bool show_version{false}; int verbose{0}; @@ -172,6 +172,7 @@ int main(int argc, const char *argv[]) std::optional add_package_diagram; std::optional add_include_diagram; bool dump_config{false}; + std::optional paths_relative_to_pwd{}; app.add_option( "-c,--config", config_path, "Location of configuration file"); @@ -200,6 +201,9 @@ int main(int argc, const char *argv[]) "Add include diagram config"); app.add_flag( "--dump-config", dump_config, "Print effective config to stdout"); + app.add_flag("--paths-relative-to-pwd", paths_relative_to_pwd, + "If true, all paths in configuration files are relative to the $PWD " + "instead of actual location of `.clang-uml` file."); CLI11_PARSE(app, argc, argv); @@ -241,7 +245,7 @@ int main(int argc, const char *argv[]) clanguml::config::config config; try { - config = clanguml::config::load(config_path); + config = clanguml::config::load(config_path, paths_relative_to_pwd); } catch (std::runtime_error &e) { LOG_ERROR(e.what()); @@ -253,15 +257,18 @@ int main(int argc, const char *argv[]) return 0; } - if (dump_config) { - print_config(config); - return 0; - } - LOG_INFO("Loaded clang-uml config from {}", config_path); - if (!compilation_database_dir.empty()) { - config.compilation_database_dir.set(compilation_database_dir); + // + // Override selected config options from command line + // + if (compilation_database_dir) { + config.compilation_database_dir.set( + util::ensure_path_is_absolute(compilation_database_dir.value())); + } + if (output_directory) { + config.output_directory.set( + util::ensure_path_is_absolute(output_directory.value())); } LOG_INFO("Loading compilation database from {} directory", @@ -271,6 +278,11 @@ int main(int argc, const char *argv[]) if (output_directory) od = output_directory.value(); + if (dump_config) { + print_config(config); + return 0; + } + if (!ensure_output_directory_exists(od)) return 1; @@ -433,8 +445,6 @@ void find_translation_units_for_diagrams( const std::vector &compilation_database_files, std::map> &translation_units_map) { - const auto current_directory = std::filesystem::current_path(); - for (const auto &[name, diagram] : config.diagrams) { // If there are any specific diagram names provided on the command line, // and this diagram is not in that list - skip it @@ -450,7 +460,7 @@ void find_translation_units_for_diagrams( // configuration else { const std::vector translation_units = - diagram->get_translation_units(current_directory); + diagram->get_translation_units(); std::vector valid_translation_units{}; std::copy_if(compilation_database_files.begin(), @@ -563,6 +573,8 @@ int create_config_file() int add_config_diagram(clanguml::common::model::diagram_t type, const std::string &config_file_path, const std::string &name) { + namespace fs = std::filesystem; + fs::path config_file{config_file_path}; if (!fs::exists(config_file)) { diff --git a/src/util/util.cc b/src/util/util.cc index ae243560..16a8b0cc 100644 --- a/src/util/util.cc +++ b/src/util/util.cc @@ -317,4 +317,17 @@ std::string path_to_url(const std::filesystem::path &p) return fmt::format("{}", fmt::join(path_tokens, "/")); } +std::filesystem::path ensure_path_is_absolute( + const std::filesystem::path &p, const std::filesystem::path &root) +{ + if (p.is_absolute()) + return p; + + auto result = root / p; + result = result.lexically_normal(); + result.make_preferred(); + + return result; +} + } // namespace clanguml::util diff --git a/src/util/util.h b/src/util/util.h index 90ca7775..96e39fbf 100644 --- a/src/util/util.h +++ b/src/util/util.h @@ -250,4 +250,17 @@ std::size_t hash_seed(std::size_t seed); */ std::string path_to_url(const std::filesystem::path &p); +/** + * @brief Ensure path is absolute. + * + * If path is absolute, return the p. If path is not absolute, make it + * absolute with respect to root directory. + * + * @param p Path to modify + * @param root Root against which the path should be made absolute + * @return Absolute path + */ +std::filesystem::path ensure_path_is_absolute(const std::filesystem::path &p, + const std::filesystem::path &root = std::filesystem::current_path()); + } // namespace clanguml::util \ No newline at end of file diff --git a/tests/t00002/test_case.h b/tests/t00002/test_case.h index 91849435..72f328cd 100644 --- a/tests/t00002/test_case.h +++ b/tests/t00002/test_case.h @@ -73,6 +73,5 @@ TEST_CASE("t00002", "[test-case][class]") clanguml::util::get_git_commit()), "This is class B")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00003/test_case.h b/tests/t00003/test_case.h index 4eb977d5..c499a033 100644 --- a/tests/t00003/test_case.h +++ b/tests/t00003/test_case.h @@ -65,6 +65,5 @@ TEST_CASE("t00003", "[test-case][class]") REQUIRE_THAT(puml, (IsField("b_", "int"))); REQUIRE_THAT(puml, (IsField("c_", "int"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00004/test_case.h b/tests/t00004/test_case.h index 5ee0019c..dedc8496 100644 --- a/tests/t00004/test_case.h +++ b/tests/t00004/test_case.h @@ -67,6 +67,5 @@ TEST_CASE("t00004", "[test-case][class]") REQUIRE_THAT(puml, IsClass(_A("detail::D::DD"))); REQUIRE_THAT(puml, IsEnum(_A("detail::D::AA"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00005/test_case.h b/tests/t00005/test_case.h index 567e18a9..101e63ed 100644 --- a/tests/t00005/test_case.h +++ b/tests/t00005/test_case.h @@ -66,6 +66,5 @@ TEST_CASE("t00005", "[test-case][class]") REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("J"), "+j")); REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("K"), "+k")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00006/test_case.h b/tests/t00006/test_case.h index 46577533..ead4a773 100644 --- a/tests/t00006/test_case.h +++ b/tests/t00006/test_case.h @@ -76,6 +76,5 @@ TEST_CASE("t00006", "[test-case][class]") REQUIRE_THAT(puml, IsAggregation(_A("R"), _A("NN"), "+ns")); REQUIRE_THAT(puml, IsAggregation(_A("R"), _A("NNN"), "+ns")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00007/test_case.h b/tests/t00007/test_case.h index 6eccc517..54a71c2a 100644 --- a/tests/t00007/test_case.h +++ b/tests/t00007/test_case.h @@ -42,6 +42,5 @@ TEST_CASE("t00007", "[test-case][class]") REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("B"), "+b")); REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("C"), "+c")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00008/test_case.h b/tests/t00008/test_case.h index ede6a434..2f216a71 100644 --- a/tests/t00008/test_case.h +++ b/tests/t00008/test_case.h @@ -48,6 +48,5 @@ TEST_CASE("t00008", "[test-case][class]") // REQUIRE_THAT(puml, IsField(Public("bool (*)(int, int) comparator"))); REQUIRE_THAT(puml, (IsField("comparator", "CMP"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00009/test_case.h b/tests/t00009/test_case.h index 5ad171c3..d522749e 100644 --- a/tests/t00009/test_case.h +++ b/tests/t00009/test_case.h @@ -51,6 +51,5 @@ TEST_CASE("t00009", "[test-case][class]") REQUIRE_THAT(puml, IsAssociation(_A("B"), _A("A>"), "+avector")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00010/test_case.h b/tests/t00010/test_case.h index 245f622c..c64778a5 100644 --- a/tests/t00010/test_case.h +++ b/tests/t00010/test_case.h @@ -46,6 +46,5 @@ TEST_CASE("t00010", "[test-case][class]") puml, IsAggregation(_A("B"), _A("A"), "+astring")); REQUIRE_THAT(puml, IsAggregation(_A("C"), _A("B"), "+aintstring")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00011/test_case.h b/tests/t00011/test_case.h index f28cde67..9a717a8e 100644 --- a/tests/t00011/test_case.h +++ b/tests/t00011/test_case.h @@ -42,6 +42,5 @@ TEST_CASE("t00011", "[test-case][class]") REQUIRE_THAT(puml, IsFriend(_A("A"), _A("B"))); // REQUIRE_THAT(puml, IsFriend(_A("A"), _A("D"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00012/test_case.h b/tests/t00012/test_case.h index aa979ee7..9b2daeeb 100644 --- a/tests/t00012/test_case.h +++ b/tests/t00012/test_case.h @@ -43,6 +43,5 @@ TEST_CASE("t00012", "[test-case][class]") _A("C>>>,3,3,3>"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00013/test_case.h b/tests/t00013/test_case.h index 84da76fa..50cedf0d 100644 --- a/tests/t00013/test_case.h +++ b/tests/t00013/test_case.h @@ -62,6 +62,5 @@ TEST_CASE("t00013", "[test-case][class]") REQUIRE_THAT(puml, IsInstantiation(_A("G"), _A("G"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00014/test_case.h b/tests/t00014/test_case.h index 54e8ef2e..c20bedb8 100644 --- a/tests/t00014/test_case.h +++ b/tests/t00014/test_case.h @@ -114,6 +114,5 @@ TEST_CASE("t00014", "[test-case][class]") REQUIRE_THAT(puml, IsDependency(_A("R"), _A("A"))); REQUIRE_THAT(puml, IsDependency(_A("R"), _A("A"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00015/test_case.h b/tests/t00015/test_case.h index fd934a22..12ed0c5e 100644 --- a/tests/t00015/test_case.h +++ b/tests/t00015/test_case.h @@ -40,6 +40,5 @@ TEST_CASE("t00015", "[test-case][class]") REQUIRE_THAT(puml, IsClass(_A("ns3::ns1::ns2::Anon"))); REQUIRE_THAT(puml, IsClass(_A("ns3::B"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00016/test_case.h b/tests/t00016/test_case.h index b3304a33..f2519687 100644 --- a/tests/t00016/test_case.h +++ b/tests/t00016/test_case.h @@ -49,6 +49,5 @@ TEST_CASE("t00016", "[test-case][class]") REQUIRE_THAT( puml, IsInstantiation(_A("is_numeric<>"), _A("is_numeric"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00017/test_case.h b/tests/t00017/test_case.h index 33f1c000..f5fae0ea 100644 --- a/tests/t00017/test_case.h +++ b/tests/t00017/test_case.h @@ -67,6 +67,5 @@ TEST_CASE("t00017", "[test-case][class]") REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("J"), "-j")); REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("K"), "-k")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00018/test_case.h b/tests/t00018/test_case.h index db47adc6..cea7544b 100644 --- a/tests/t00018/test_case.h +++ b/tests/t00018/test_case.h @@ -42,6 +42,5 @@ TEST_CASE("t00018", "[test-case][class]") REQUIRE_THAT(puml, IsDependency(_A("impl::widget"), _A("widget"))); REQUIRE_THAT(puml, !IsDependency(_A("widget"), _A("widget"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00019/test_case.h b/tests/t00019/test_case.h index db0e16a0..6165fd16 100644 --- a/tests/t00019/test_case.h +++ b/tests/t00019/test_case.h @@ -54,6 +54,5 @@ TEST_CASE("t00019", "[test-case][class]") REQUIRE_THAT(puml, !IsAggregation(_A("A"), _A("Base"), "+layers")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00020/test_case.h b/tests/t00020/test_case.h index 131c920a..17000f1e 100644 --- a/tests/t00020/test_case.h +++ b/tests/t00020/test_case.h @@ -44,6 +44,5 @@ TEST_CASE("t00020", "[test-case][class]") REQUIRE_THAT(puml, IsClass(_A("Factory1"))); REQUIRE_THAT(puml, IsClass(_A("Factory2"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00021/test_case.h b/tests/t00021/test_case.h index bfd4e6eb..87eb192a 100644 --- a/tests/t00021/test_case.h +++ b/tests/t00021/test_case.h @@ -42,6 +42,5 @@ TEST_CASE("t00021", "[test-case][class]") REQUIRE_THAT(puml, IsClass(_A("Visitor2"))); REQUIRE_THAT(puml, IsClass(_A("Visitor3"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00022/test_case.h b/tests/t00022/test_case.h index e16e979a..6078122e 100644 --- a/tests/t00022/test_case.h +++ b/tests/t00022/test_case.h @@ -38,6 +38,5 @@ TEST_CASE("t00022", "[test-case][class]") REQUIRE_THAT(puml, IsClass(_A("A1"))); REQUIRE_THAT(puml, IsClass(_A("A2"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00023/test_case.h b/tests/t00023/test_case.h index 5dd70267..ff92588a 100644 --- a/tests/t00023/test_case.h +++ b/tests/t00023/test_case.h @@ -38,6 +38,5 @@ TEST_CASE("t00023", "[test-case][class]") REQUIRE_THAT(puml, IsClass(_A("StrategyA"))); REQUIRE_THAT(puml, IsClass(_A("StrategyB"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00024/test_case.h b/tests/t00024/test_case.h index bf270004..ea7f5aa8 100644 --- a/tests/t00024/test_case.h +++ b/tests/t00024/test_case.h @@ -42,6 +42,5 @@ TEST_CASE("t00024", "[test-case][class]") REQUIRE_THAT(puml, IsBaseClass(_A("Target"), _A("Target2"))); REQUIRE_THAT(puml, IsBaseClass(_A("Target"), _A("Proxy"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00025/test_case.h b/tests/t00025/test_case.h index ac0dab92..b23ac6e2 100644 --- a/tests/t00025/test_case.h +++ b/tests/t00025/test_case.h @@ -50,6 +50,5 @@ TEST_CASE("t00025", "[test-case][class]") REQUIRE_THAT(puml, IsDependency(_A("Proxy"), _A("Target1"))); REQUIRE_THAT(puml, IsDependency(_A("Proxy"), _A("Target2"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00026/test_case.h b/tests/t00026/test_case.h index 8c92e05a..aabb247e 100644 --- a/tests/t00026/test_case.h +++ b/tests/t00026/test_case.h @@ -42,6 +42,5 @@ TEST_CASE("t00026", "[test-case][class]") REQUIRE_THAT(puml, IsInstantiation(_A("Caretaker"), _A("Caretaker"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00027/test_case.h b/tests/t00027/test_case.h index bdbb0221..ea3e5b7a 100644 --- a/tests/t00027/test_case.h +++ b/tests/t00027/test_case.h @@ -54,6 +54,5 @@ TEST_CASE("t00027", "[test-case][class]") REQUIRE_THAT( puml, IsAggregation(_A("Window"), _A("Text"), "+description")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00028/test_case.h b/tests/t00028/test_case.h index 9d09e6c5..1ec2fdcf 100644 --- a/tests/t00028/test_case.h +++ b/tests/t00028/test_case.h @@ -55,6 +55,5 @@ note.)"; REQUIRE_THAT(puml, !HasNote(_A("G"), "left", "G class note.")); REQUIRE_THAT(puml, HasNote(_A("R"), "right", "R class note.")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00029/test_case.h b/tests/t00029/test_case.h index b893e488..a44b9f09 100644 --- a/tests/t00029/test_case.h +++ b/tests/t00029/test_case.h @@ -53,6 +53,5 @@ TEST_CASE("t00029", "[test-case][class]") REQUIRE_THAT(puml, !IsAggregation(_A("R"), _A("G3"), "+g3")); REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("G4"), "+g4")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00030/test_case.h b/tests/t00030/test_case.h index 80949e45..6d79326b 100644 --- a/tests/t00030/test_case.h +++ b/tests/t00030/test_case.h @@ -46,6 +46,5 @@ TEST_CASE("t00030", "[test-case][class]") REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("D"), "+ddd", "", "1")); REQUIRE_THAT(puml, IsAggregation(_A("R"), _A("E"), "+eee", "", "1")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00031/test_case.h b/tests/t00031/test_case.h index 5c18ec98..80aae040 100644 --- a/tests/t00031/test_case.h +++ b/tests/t00031/test_case.h @@ -53,6 +53,5 @@ TEST_CASE("t00031", "[test-case][class]") IsAssociationWithStyle( _A("R"), _A("D"), "+ddd", "#blue,plain,thickness=16")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00032/test_case.h b/tests/t00032/test_case.h index b5f0994e..1707d78b 100644 --- a/tests/t00032/test_case.h +++ b/tests/t00032/test_case.h @@ -51,6 +51,5 @@ TEST_CASE("t00032", "[test-case][class]") REQUIRE_THAT(puml, IsBaseClass(_A("B"), _A("Overload"))); REQUIRE_THAT(puml, IsBaseClass(_A("C"), _A("Overload"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00033/test_case.h b/tests/t00033/test_case.h index 92ab70eb..71d55275 100644 --- a/tests/t00033/test_case.h +++ b/tests/t00033/test_case.h @@ -54,6 +54,5 @@ TEST_CASE("t00033", "[test-case][class]") REQUIRE_THAT( puml, IsInstantiation(_A("A"), _A("A>>>"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00034/test_case.h b/tests/t00034/test_case.h index 26016195..7c27c778 100644 --- a/tests/t00034/test_case.h +++ b/tests/t00034/test_case.h @@ -46,6 +46,5 @@ TEST_CASE("t00034", "[test-case][class]") REQUIRE_THAT( puml, IsInstantiation(_A("drop_void"), _A("drop_void"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00035/test_case.h b/tests/t00035/test_case.h index 3b263cc6..19a10903 100644 --- a/tests/t00035/test_case.h +++ b/tests/t00035/test_case.h @@ -46,6 +46,5 @@ TEST_CASE("t00035", "[test-case][class]") REQUIRE_THAT(puml, IsLayoutHint(_A("Center"), "right", _A("Right"))); REQUIRE_THAT(puml, IsLayoutHint(_A("Center"), "down", _A("Bottom"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00036/test_case.h b/tests/t00036/test_case.h index 0e011476..4e52ada0 100644 --- a/tests/t00036/test_case.h +++ b/tests/t00036/test_case.h @@ -45,6 +45,5 @@ TEST_CASE("t00036", "[test-case][class]") REQUIRE_THAT(puml, IsAggregation(_A("B"), _A("A"), "+a_int")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00037/test_case.h b/tests/t00037/test_case.h index 320a1bbe..786930c2 100644 --- a/tests/t00037/test_case.h +++ b/tests/t00037/test_case.h @@ -43,6 +43,5 @@ TEST_CASE("t00037", "[test-case][class]") puml, IsAggregation(_A("ST"), _A("ST::(dimensions)"), "+dimensions")); REQUIRE_THAT(puml, IsAggregation(_A("ST"), _A("ST::(units)"), "-units")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00038/test_case.h b/tests/t00038/test_case.h index 6593ea2e..6e34c61b 100644 --- a/tests/t00038/test_case.h +++ b/tests/t00038/test_case.h @@ -91,6 +91,5 @@ TEST_CASE("t00038", "[test-case][class]") _A("map>"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00039/test_case.h b/tests/t00039/test_case.h index 3431c2bf..970dc920 100644 --- a/tests/t00039/test_case.h +++ b/tests/t00039/test_case.h @@ -63,6 +63,5 @@ TEST_CASE("t00039", "[test-case][class]") REQUIRE_THAT(puml, IsClassTemplate("ns3::FE", "T,M")); REQUIRE_THAT(puml, IsClassTemplate("ns3::FFF", "T,M,N")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00040/test_case.h b/tests/t00040/test_case.h index 1b91814b..122bbfbb 100644 --- a/tests/t00040/test_case.h +++ b/tests/t00040/test_case.h @@ -45,6 +45,5 @@ TEST_CASE("t00040", "[test-case][class]") REQUIRE_THAT(puml, !IsDependency(_A("R"), _A("A"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00041/test_case.h b/tests/t00041/test_case.h index 65f56ffa..465c255b 100644 --- a/tests/t00041/test_case.h +++ b/tests/t00041/test_case.h @@ -62,6 +62,5 @@ TEST_CASE("t00041", "[test-case][class]") REQUIRE_THAT(puml, IsBaseClass(_A("ns1::N"), _A("ns1::NN"))); REQUIRE_THAT(puml, IsBaseClass(_A("ns1::N"), _A("ns1::NM"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00042/test_case.h b/tests/t00042/test_case.h index ace2c9b7..6084ec70 100644 --- a/tests/t00042/test_case.h +++ b/tests/t00042/test_case.h @@ -39,6 +39,5 @@ TEST_CASE("t00042", "[test-case][class]") REQUIRE_THAT(puml, IsClassTemplate("B", "T,K")); REQUIRE_THAT(puml, !IsClassTemplate("C", "T")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00043/test_case.h b/tests/t00043/test_case.h index 131cef08..d9618427 100644 --- a/tests/t00043/test_case.h +++ b/tests/t00043/test_case.h @@ -62,6 +62,5 @@ TEST_CASE("t00043", "[test-case][class]") REQUIRE_THAT(puml, IsDependency(_A("I"), _A("H"))); REQUIRE_THAT(puml, IsDependency(_A("J"), _A("I"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00044/test_case.h b/tests/t00044/test_case.h index 8f98b0ba..e71fc749 100644 --- a/tests/t00044/test_case.h +++ b/tests/t00044/test_case.h @@ -39,6 +39,5 @@ TEST_CASE("t00044", "[test-case][class]") // Check dependants filter // REQUIRE_THAT(puml, IsClassTemplate("signal_handler", "Ret,Args...,A")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00045/test_case.h b/tests/t00045/test_case.h index d78e1b49..1099a5b8 100644 --- a/tests/t00045/test_case.h +++ b/tests/t00045/test_case.h @@ -64,6 +64,5 @@ TEST_CASE("t00045", "[test-case][class]") // TODO: // REQUIRE_THAT(puml, IsFriend(_A("ns1::ns2::R"), _A("AAAA"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00046/test_case.h b/tests/t00046/test_case.h index b6f7912a..a5d67acf 100644 --- a/tests/t00046/test_case.h +++ b/tests/t00046/test_case.h @@ -42,6 +42,6 @@ TEST_CASE("t00046", "[test-case][class]") REQUIRE_THAT(puml, IsClass(_A("R"))); REQUIRE_THAT(puml, IsField("i", "std::vector")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t00047/test_case.h b/tests/t00047/test_case.h index 66e75d88..374243d7 100644 --- a/tests/t00047/test_case.h +++ b/tests/t00047/test_case.h @@ -42,6 +42,5 @@ TEST_CASE("t00047", "[test-case][class]") REQUIRE_THAT(puml, IsClassTemplate("conditional_t", "std::false_type,Result,Tail...")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t00048/test_case.h b/tests/t00048/test_case.h index f652bad9..9bf75981 100644 --- a/tests/t00048/test_case.h +++ b/tests/t00048/test_case.h @@ -48,6 +48,5 @@ TEST_CASE("t00048", "[test-case][class]") REQUIRE_THAT(puml, IsBaseClass(_A("Base"), _A("A"))); REQUIRE_THAT(puml, IsBaseClass(_A("Base"), _A("B"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t00049/test_case.h b/tests/t00049/test_case.h index c4cfc515..f17aa8d5 100644 --- a/tests/t00049/test_case.h +++ b/tests/t00049/test_case.h @@ -56,6 +56,5 @@ TEST_CASE("t00049", "[test-case][class]") REQUIRE_THAT(puml, IsInstantiation(_A("A"), _A("A"))); REQUIRE_THAT(puml, IsInstantiation(_A("A"), _A("A"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t00050/test_case.h b/tests/t00050/test_case.h index b7fe4109..442682e0 100644 --- a/tests/t00050/test_case.h +++ b/tests/t00050/test_case.h @@ -53,6 +53,5 @@ TEST_CASE("t00050", "[test-case][class]") REQUIRE_THAT(puml, HasNote(_A("G"), "bottom")); REQUIRE_THAT(puml, HasNote(_A("G"), "right")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t20001/test_case.h b/tests/t20001/test_case.h index 4799c97a..b14e887a 100644 --- a/tests/t20001/test_case.h +++ b/tests/t20001/test_case.h @@ -46,6 +46,5 @@ TEST_CASE("t20001", "[test-case][sequence]") REQUIRE_THAT(puml, HasComment("t20001 test diagram of type sequence")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t20002/test_case.h b/tests/t20002/test_case.h index 0967f912..39e7a1dd 100644 --- a/tests/t20002/test_case.h +++ b/tests/t20002/test_case.h @@ -38,6 +38,5 @@ TEST_CASE("t20002", "[test-case][sequence]") REQUIRE_THAT(puml, HasCall(_A("m2()"), _A("m3()"), "")); REQUIRE_THAT(puml, HasCall(_A("m3()"), _A("m4()"), "")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t20003/test_case.h b/tests/t20003/test_case.h index 0d3ebb16..46e3d2db 100644 --- a/tests/t20003/test_case.h +++ b/tests/t20003/test_case.h @@ -38,6 +38,5 @@ TEST_CASE("t20003", "[test-case][sequence]") REQUIRE_THAT(puml, HasCall(_A("m2(T)"), _A("m3(T)"), "")); REQUIRE_THAT(puml, HasCall(_A("m3(T)"), _A("m4(T)"), "")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t20004/test_case.h b/tests/t20004/test_case.h index f67bc340..de1ea0cd 100644 --- a/tests/t20004/test_case.h +++ b/tests/t20004/test_case.h @@ -56,6 +56,5 @@ TEST_CASE("t20004", "[test-case][sequence]") REQUIRE_THAT(puml, HasCall(_A("m3(int)"), _A("m4(int)"), "")); REQUIRE_THAT(puml, EndsWith("@enduml\n")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t20005/test_case.h b/tests/t20005/test_case.h index d22b0e2c..c5d65d87 100644 --- a/tests/t20005/test_case.h +++ b/tests/t20005/test_case.h @@ -39,6 +39,5 @@ TEST_CASE("t20005", "[test-case][sequence]") REQUIRE_THAT(puml, HasCall(_A("C"), _A("B"), "b(T)")); REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a(T)")); REQUIRE_THAT(puml, HasExitpoint(_A("C"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t20006/test_case.h b/tests/t20006/test_case.h index e7a25810..8280336f 100644 --- a/tests/t20006/test_case.h +++ b/tests/t20006/test_case.h @@ -69,6 +69,5 @@ TEST_CASE("t20006", "[test-case][sequence]") HasCall(_A("BB"), _A("BB"), "bb2(int,float)")); REQUIRE_THAT(puml, HasCall(_A("BB"), _A("AA"), "aa2(int)")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t20007/test_case.h b/tests/t20007/test_case.h index de94d5b6..504000cd 100644 --- a/tests/t20007/test_case.h +++ b/tests/t20007/test_case.h @@ -44,6 +44,5 @@ TEST_CASE("t20007", "[test-case][sequence]") HasCall(_A("tmain()"), _A("Adder"), "add(std::string &&,std::string &&,std::string &&)")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t20008/test_case.h b/tests/t20008/test_case.h index 9bda4062..663de6f7 100644 --- a/tests/t20008/test_case.h +++ b/tests/t20008/test_case.h @@ -51,6 +51,5 @@ TEST_CASE("t20008", "[test-case][sequence]") REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a3(std::string)")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t20009/test_case.h b/tests/t20009/test_case.h index d67cb134..97dd7f83 100644 --- a/tests/t20009/test_case.h +++ b/tests/t20009/test_case.h @@ -45,6 +45,5 @@ TEST_CASE("t20009", "[test-case][sequence]") REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b(float)")); REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a(float)")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t20010/test_case.h b/tests/t20010/test_case.h index 7b928fbd..613cfd44 100644 --- a/tests/t20010/test_case.h +++ b/tests/t20010/test_case.h @@ -47,6 +47,5 @@ TEST_CASE("t20010", "[test-case][sequence]") REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b4()")); REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a4()")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t20011/test_case.h b/tests/t20011/test_case.h index 571f207b..0fd58f8c 100644 --- a/tests/t20011/test_case.h +++ b/tests/t20011/test_case.h @@ -43,6 +43,5 @@ TEST_CASE("t20011", "[test-case][sequence]") REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "d(int)")); REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "b(int)")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t20012/test_case.h b/tests/t20012/test_case.h index 71f1a1f1..b47b0954 100644 --- a/tests/t20012/test_case.h +++ b/tests/t20012/test_case.h @@ -76,6 +76,5 @@ TEST_CASE("t20012", "[test-case][sequence]") REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("D"), "add5(int)")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t20013/test_case.h b/tests/t20013/test_case.h index ed2da262..f661971e 100644 --- a/tests/t20013/test_case.h +++ b/tests/t20013/test_case.h @@ -45,6 +45,5 @@ TEST_CASE("t20013", "[test-case][sequence]") puml, HasCall(_A("tmain(int,char **)"), _A("B"), "b(const char *)")); REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a3(const char *)")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t20014/test_case.h b/tests/t20014/test_case.h index ab49e0f6..f7d7aeb9 100644 --- a/tests/t20014/test_case.h +++ b/tests/t20014/test_case.h @@ -44,6 +44,5 @@ TEST_CASE("t20014", "[test-case][sequence]") REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("C"), "c1(int,int)")); REQUIRE_THAT(puml, HasCall(_A("C"), _A("B"), "b1(int,int)")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t20015/test_case.h b/tests/t20015/test_case.h index 4587898a..0794f8b4 100644 --- a/tests/t20015/test_case.h +++ b/tests/t20015/test_case.h @@ -46,6 +46,5 @@ TEST_CASE("t20015", "[test-case][sequence]") REQUIRE_THAT(puml, !HasCall(_A("B"), _A("B"), "set_y(int)")); REQUIRE_THAT(puml, !HasCall(_A("B"), _A("B"), "set_z(int)")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t20016/test_case.h b/tests/t20016/test_case.h index 11e020a3..a2f2c3f5 100644 --- a/tests/t20016/test_case.h +++ b/tests/t20016/test_case.h @@ -41,6 +41,5 @@ TEST_CASE("t20016", "[test-case][sequence]") REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b2(long)")); REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a2(const long &)")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t20017/test_case.h b/tests/t20017/test_case.h index dd1278d9..b48821d2 100644 --- a/tests/t20017/test_case.h +++ b/tests/t20017/test_case.h @@ -48,6 +48,5 @@ TEST_CASE("t20017", "[test-case][sequence]") HasCall(_A("t20017.cc"), _A("include/t20017_b.h"), "b2(int,int)")); REQUIRE_THAT(puml, HasExitpoint(_A("t20017.cc"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t20018/test_case.h b/tests/t20018/test_case.h index 985d4722..675441ef 100644 --- a/tests/t20018/test_case.h +++ b/tests/t20018/test_case.h @@ -51,6 +51,5 @@ TEST_CASE("t20018", "[test-case][sequence]") REQUIRE_THAT(puml, HasCall(_A("Factorial<1>"), _A("Factorial<0>"), "__print(int)__")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t20019/test_case.h b/tests/t20019/test_case.h index ebc0e759..73eb87a8 100644 --- a/tests/t20019/test_case.h +++ b/tests/t20019/test_case.h @@ -40,6 +40,5 @@ TEST_CASE("t20019", "[test-case][sequence]") REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("Base"), "name()")); REQUIRE_THAT(puml, HasCall(_A("Base"), _A("D2"), "impl()")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t20020/test_case.h b/tests/t20020/test_case.h index 2855a2e1..21beae59 100644 --- a/tests/t20020/test_case.h +++ b/tests/t20020/test_case.h @@ -50,6 +50,5 @@ TEST_CASE("t20020", "[test-case][sequence]") REQUIRE_THAT( puml, HasCallInControlCondition(_A("tmain()"), _A("C"), "c3(int)")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t20021/test_case.h b/tests/t20021/test_case.h index 24b01727..61e0c84f 100644 --- a/tests/t20021/test_case.h +++ b/tests/t20021/test_case.h @@ -57,6 +57,5 @@ TEST_CASE("t20021", "[test-case][sequence]") REQUIRE_THAT( puml, HasCallInControlCondition(_A("tmain()"), _A("C"), "contents()")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t20022/test_case.h b/tests/t20022/test_case.h index 2f68ac04..6a12c019 100644 --- a/tests/t20022/test_case.h +++ b/tests/t20022/test_case.h @@ -38,6 +38,5 @@ TEST_CASE("t20022", "[test-case][sequence]") REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "a()")); REQUIRE_THAT(puml, HasCall(_A("A"), _A("B"), "b()")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t20023/test_case.h b/tests/t20023/test_case.h index 82f50fd4..71e3b0bc 100644 --- a/tests/t20023/test_case.h +++ b/tests/t20023/test_case.h @@ -41,6 +41,5 @@ TEST_CASE("t20023", "[test-case][sequence]") REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "a3()")); REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "a4()")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t20024/test_case.h b/tests/t20024/test_case.h index acea65fc..5c432062 100644 --- a/tests/t20024/test_case.h +++ b/tests/t20024/test_case.h @@ -46,6 +46,5 @@ TEST_CASE("t20024", "[test-case][sequence]") REQUIRE_THAT(puml, HasCall(_A("B"), _A("B"), "orange()")); REQUIRE_THAT(puml, HasCall(_A("B"), _A("B"), "green()")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t20025/test_case.h b/tests/t20025/test_case.h index 1c097c82..3874cd53 100644 --- a/tests/t20025/test_case.h +++ b/tests/t20025/test_case.h @@ -41,6 +41,5 @@ TEST_CASE("t20025", "[test-case][sequence]") REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("add(int,int)"), "")); REQUIRE_THAT(puml, !HasCall(_A("tmain()"), _A("add2(int,int)"), "")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t20026/test_case.h b/tests/t20026/test_case.h index 324a348a..934d8ad2 100644 --- a/tests/t20026/test_case.h +++ b/tests/t20026/test_case.h @@ -37,6 +37,5 @@ TEST_CASE("t20026", "[test-case][sequence]") // Check if all calls exist REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "a()")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t20027/test_case.h b/tests/t20027/test_case.h index 48b359dd..c8d807a6 100644 --- a/tests/t20027/test_case.h +++ b/tests/t20027/test_case.h @@ -39,6 +39,5 @@ TEST_CASE("t20027", "[test-case][sequence]") REQUIRE_THAT(puml, !HasCall(_A("A"), _A("A"), "aa()")); REQUIRE_THAT(puml, !HasCall(_A("A"), _A("A"), "aaa()")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t20028/test_case.h b/tests/t20028/test_case.h index 44c7677d..6d97fb09 100644 --- a/tests/t20028/test_case.h +++ b/tests/t20028/test_case.h @@ -41,6 +41,5 @@ TEST_CASE("t20028", "[test-case][sequence]") REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "d()")); REQUIRE_THAT(puml, !HasCall(_A("tmain()"), _A("B"), "e()")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t20029/test_case.h b/tests/t20029/test_case.h index bf0b820f..cc63df20 100644 --- a/tests/t20029/test_case.h +++ b/tests/t20029/test_case.h @@ -56,6 +56,5 @@ TEST_CASE("t20029", "[test-case][sequence]") REQUIRE_THAT(puml, !HasCall(_A("ConnectionPool"), _A("ConnectionPool"), "connect_impl()")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } \ No newline at end of file diff --git a/tests/t30001/test_case.h b/tests/t30001/test_case.h index 553b0666..9fc5ca7d 100644 --- a/tests/t30001/test_case.h +++ b/tests/t30001/test_case.h @@ -64,6 +64,5 @@ TEST_CASE("t30001", "[test-case][package]") REQUIRE_THAT(puml, HasComment("t30001 test diagram of type package")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t30002/test_case.h b/tests/t30002/test_case.h index 9a58f79d..e4ef8c77 100644 --- a/tests/t30002/test_case.h +++ b/tests/t30002/test_case.h @@ -69,6 +69,5 @@ TEST_CASE("t30002", "[test-case][package]") REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A16"))); REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A17"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t30003/test_case.h b/tests/t30003/test_case.h index 5ea54ed4..c9026838 100644 --- a/tests/t30003/test_case.h +++ b/tests/t30003/test_case.h @@ -43,6 +43,5 @@ TEST_CASE("t30003", "[test-case][package]") REQUIRE_THAT(puml, IsDeprecated(_A("ns2_v0_9_0"))); REQUIRE_THAT(puml, IsDeprecated(_A("ns3"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t30004/test_case.h b/tests/t30004/test_case.h index 4dcd529e..6c471d87 100644 --- a/tests/t30004/test_case.h +++ b/tests/t30004/test_case.h @@ -40,6 +40,5 @@ TEST_CASE("t30004", "[test-case][package]") REQUIRE_THAT(puml, !IsPackage("DDD")); REQUIRE_THAT(puml, IsPackage("EEE")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t30005/test_case.h b/tests/t30005/test_case.h index 2d3fc166..3afa00ee 100644 --- a/tests/t30005/test_case.h +++ b/tests/t30005/test_case.h @@ -41,6 +41,5 @@ TEST_CASE("t30005", "[test-case][package]") REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("AAA"))); REQUIRE_THAT(puml, IsDependency(_A("CCC"), _A("AAA"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t30006/test_case.h b/tests/t30006/test_case.h index 7b711888..9d7808ef 100644 --- a/tests/t30006/test_case.h +++ b/tests/t30006/test_case.h @@ -41,6 +41,5 @@ TEST_CASE("t30006", "[test-case][package]") REQUIRE_THAT(puml, IsDependency(_A("A"), _A("B"))); REQUIRE_THAT(puml, IsDependency(_A("A"), _A("C"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t30007/test_case.h b/tests/t30007/test_case.h index 9d1dbbbd..1fbb7399 100644 --- a/tests/t30007/test_case.h +++ b/tests/t30007/test_case.h @@ -44,6 +44,5 @@ TEST_CASE("t30007", "[test-case][package]") REQUIRE_THAT(puml, IsLayoutHint(_A("C"), "up", _A("AA"))); REQUIRE_THAT(puml, IsLayoutHint(_A("C"), "left", _A("B"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t30008/test_case.h b/tests/t30008/test_case.h index 70bae7b8..c14d183f 100644 --- a/tests/t30008/test_case.h +++ b/tests/t30008/test_case.h @@ -50,6 +50,5 @@ TEST_CASE("t30008", "[test-case][package]") REQUIRE_THAT(puml, IsDependency(_A("E"), _A("D"))); REQUIRE_THAT(puml, IsDependency(_A("F"), _A("E"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t40001/test_case.h b/tests/t40001/test_case.h index a9c9352d..2ed7621f 100644 --- a/tests/t40001/test_case.h +++ b/tests/t40001/test_case.h @@ -50,6 +50,5 @@ TEST_CASE("t40001", "[test-case][include]") REQUIRE_THAT(puml, HasComment("t40001 test diagram of type include")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t40002/test_case.h b/tests/t40002/test_case.h index fa5357fc..0f6451b4 100644 --- a/tests/t40002/test_case.h +++ b/tests/t40002/test_case.h @@ -79,6 +79,5 @@ TEST_CASE("t40002", "[test-case][include]") clanguml::util::get_git_commit()), "lib2.h")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t40003/test_case.h b/tests/t40003/test_case.h index 8c240777..e45cbea9 100644 --- a/tests/t40003/test_case.h +++ b/tests/t40003/test_case.h @@ -46,6 +46,5 @@ TEST_CASE("t40003", "[test-case][include]") REQUIRE_THAT(puml, IsFile("t5.h")); REQUIRE_THAT(puml, !IsFile("t6.h")); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/t90000/test_case.h b/tests/t90000/test_case.h index 3f40682f..5074f76e 100644 --- a/tests/t90000/test_case.h +++ b/tests/t90000/test_case.h @@ -35,6 +35,5 @@ TEST_CASE("t90000", "[test-case][config]") REQUIRE_THAT(puml, IsClass(_A("Foo"))); REQUIRE_THAT(puml, IsClass(_A("Boo"))); - save_puml( - "./" + config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); } diff --git a/tests/test_cases.cc b/tests/test_cases.cc index 927ac6d2..c267fdbd 100644 --- a/tests/test_cases.cc +++ b/tests/test_cases.cc @@ -35,7 +35,7 @@ std::pair> load_config(const std::string &test_name) { - auto config = clanguml::config::load(test_name + "/.clang-uml"); + auto config = clanguml::config::load(test_name + "/.clang-uml", true); std::string err{}; auto compilation_database = @@ -62,7 +62,7 @@ generate_sequence_diagram(clang::tooling::CompilationDatabase &db, auto model = clanguml::common::generators::plantuml::generate(db, diagram->name, dynamic_cast(*diagram), - diagram->get_translation_units(std::filesystem::current_path())); + diagram->get_translation_units()); return model; } @@ -81,7 +81,7 @@ std::unique_ptr generate_class_diagram( auto model = clanguml::common::generators::plantuml::generate(db, diagram->name, dynamic_cast(*diagram), - diagram->get_translation_units(std::filesystem::current_path())); + diagram->get_translation_units()); return model; } @@ -100,7 +100,7 @@ generate_package_diagram(clang::tooling::CompilationDatabase &db, return clanguml::common::generators::plantuml::generate(db, diagram->name, dynamic_cast(*diagram), - diagram->get_translation_units(std::filesystem::current_path())); + diagram->get_translation_units()); } std::unique_ptr @@ -117,7 +117,7 @@ generate_include_diagram(clang::tooling::CompilationDatabase &db, return clanguml::common::generators::plantuml::generate(db, diagram->name, dynamic_cast(*diagram), - diagram->get_translation_units(std::filesystem::current_path())); + diagram->get_translation_units()); } std::string generate_sequence_puml( diff --git a/tests/test_util.cc b/tests/test_util.cc index 9c067fff..be4bb2cd 100644 --- a/tests/test_util.cc +++ b/tests/test_util.cc @@ -228,6 +228,18 @@ TEST_CASE("Test path_to_url", "[unit-test]") #endif } +TEST_CASE("Test ensure_path_is_absolute", "[unit-test]") +{ + using namespace clanguml::util; + + CHECK(ensure_path_is_absolute("a/b/c", "/tmp").string() == "/tmp/a/b/c"); + CHECK(ensure_path_is_absolute("/a/b/c", "/tmp").string() == "/a/b/c"); + CHECK(ensure_path_is_absolute("", "/tmp").string() == "/tmp/"); + CHECK(ensure_path_is_absolute(".", "/tmp").string() == "/tmp/"); + CHECK(ensure_path_is_absolute("..", "/tmp").string() == "/"); + CHECK(ensure_path_is_absolute("/", "/tmp").string() == "/"); +} + TEST_CASE("Test hash_seed", "[unit-test]") { using namespace clanguml::util;