Index: include-fixer/find-all-symbols/PathConfig.cpp =================================================================== --- include-fixer/find-all-symbols/PathConfig.cpp +++ include-fixer/find-all-symbols/PathConfig.cpp @@ -33,7 +33,7 @@ if (Collector) FilePath = Collector->getMappedHeader(FilePath); SmallString<256> CleanedFilePath = FilePath; - llvm::sys::path::remove_dots(CleanedFilePath, /*remove_dot_dot=*/true); + llvm::sys::path::remove_dots(CleanedFilePath, /*remove_dot_dot=*/false); return CleanedFilePath.str(); } Index: include-fixer/find-all-symbols/tool/FindAllSymbolsMain.cpp =================================================================== --- include-fixer/find-all-symbols/tool/FindAllSymbolsMain.cpp +++ include-fixer/find-all-symbols/tool/FindAllSymbolsMain.cpp @@ -158,6 +158,5 @@ auto Factory = llvm::make_unique( &Reporter, clang::find_all_symbols::getSTLPostfixHeaderMap()); - Tool.run(Factory.get()); - return 0; + return Tool.run(Factory.get()); } Index: test/include-fixer/include_path.cpp =================================================================== --- test/include-fixer/include_path.cpp +++ test/include-fixer/include_path.cpp @@ -1,14 +1,20 @@ // REQUIRES: shell // RUN: mkdir -p %T/include-fixer/include +// RUN: mkdir -p %T/include-fixer/symbols // RUN: mkdir -p %T/include-fixer/build // RUN: mkdir -p %T/include-fixer/src // RUN: sed 's|test_dir|%T/include-fixer|g' %S/Inputs/database_template.json > %T/include-fixer/build/compile_commands.json -// RUN: cp %S/Inputs/fake_yaml_db.yaml %T/include-fixer/build/fake_yaml_db.yaml -// RUN: echo 'b::a::bar f;' > %T/include-fixer/src/bar.cpp -// RUN: touch %T/include-fixer/include/bar.h +// RUN: echo -e '#include "bar.h"\nb::a::bar f;' > %T/include-fixer/src/bar.cpp +// RUN: echo 'namespace b { namespace a { class bar {}; } }' > %T/include-fixer/include/bar.h // RUN: cd %T/include-fixer/build -// RUN: clang-include-fixer -db=yaml -input=fake_yaml_db.yaml -p=. %T/include-fixer/src/bar.cpp +// RUN: find-all-symbols -output-dir=%T/include-fixer/symbols -p=. %T/include-fixer/src/bar.cpp +// RUN: find-all-symbols -merge-dir=%T/include-fixer/symbols %T/include-fixer/build/find_all_symbols.yaml +// RUN: FileCheck -input-file=%T/include-fixer/build/find_all_symbols.yaml -check-prefix=CHECK-YAML %s +// +// RUN: echo 'b::a::bar f;' > %T/include-fixer/src/bar.cpp +// RUN: clang-include-fixer -db=yaml -input=%T/include-fixer/build/find_all_symbols.yaml -p=. %T/include-fixer/src/bar.cpp // RUN: FileCheck -input-file=%T/include-fixer/src/bar.cpp %s +// CHECK-YAML: ../include/bar.h // CHECK: #include "bar.h" // CHECK: b::a::bar f; Index: unittests/include-fixer/find-all-symbols/FindAllSymbolsTests.cpp =================================================================== --- unittests/include-fixer/find-all-symbols/FindAllSymbolsTests.cpp +++ unittests/include-fixer/find-all-symbols/FindAllSymbolsTests.cpp @@ -105,7 +105,7 @@ "#include \"internal/internal.h\""; #if !defined(_MSC_VER) && !defined(__MINGW32__) // Test path cleaning for both decls and macros. - const std::string DirtyHeader = "./internal/../internal/./a/b.h"; + const std::string DirtyHeader = "./internal/./a/b.h"; Content += "\n#include \"" + DirtyHeader + "\""; const std::string CleanHeader = "internal/a/b.h"; const std::string DirtyHeaderContent =