std::vector<Inclusion> MainFileIncludes;
+ std::string dump() {
+ return "RealPathNames: " +
+ llvm::join(RealPathNames.begin(), RealPathNames.end(), ", ") +
+ "\nFileEntryIDs: " +
+ llvm::join(FileEntryIDs.begin(), FileEntryIDs.end(), ", ") + '\n';
+ }
+
private:
std::vector<std::string> RealPathNames; // In HeaderID order.
+ std::vector<unsigned> FileEntryIDs; // In HeaderID order.
// HeaderID maps the FileEntry::Name to the internal representation.
// Identifying files in a way that persists from preamble build to subsequent
// builds is surprisingly hard. FileID is unavailable in
AllOf(Written("\"sub/bar.h\""), Resolved(BarHeader))));
EXPECT_THAT(Includes.includeDepth(getID(MainFile, Includes)),
UnorderedElementsAre(Distance(getID(MainFile, Includes), 0u),
- Distance(getID(BarHeader, Includes), 1u)));
+ Distance(getID(BarHeader, Includes), 1u)))
+ << Includes.dump();
}
TEST_F(HeadersTest, OnlyCollectInclusionsInMain) {
#include "bar.h"
)cpp";
auto Includes = collectIncludes();
- EXPECT_THAT(Includes.MainFileIncludes,
- UnorderedElementsAre(
- AllOf(Written("\"bar.h\""), Resolved(BarHeader))));
+ EXPECT_THAT(
+ Includes.MainFileIncludes,
+ UnorderedElementsAre(AllOf(Written("\"bar.h\""), Resolved(BarHeader))));
EXPECT_THAT(Includes.includeDepth(getID(MainFile, Includes)),
UnorderedElementsAre(Distance(getID(MainFile, Includes), 0u),
Distance(getID(BarHeader, Includes), 1u),
- Distance(getID(BazHeader, Includes), 2u)));
+ Distance(getID(BazHeader, Includes), 2u)))
+ << Includes.dump();
// includeDepth() also works for non-main files.
EXPECT_THAT(Includes.includeDepth(getID(BarHeader, Includes)),
UnorderedElementsAre(Distance(getID(BarHeader, Includes), 0u),
- Distance(getID(BazHeader, Includes), 1u)));
+ Distance(getID(BazHeader, Includes), 1u)))
+ << Includes.dump();
}
TEST_F(HeadersTest, PreambleIncludesPresentOnce) {
{getID(BarHeader, Includes), getID(FooHeader, Includes)}},
{getID(FooHeader, Includes),
{getID(BarHeader, Includes), getID(BazHeader, Includes)}}};
- EXPECT_EQ(Includes.IncludeChildren, Expected);
+ EXPECT_EQ(Includes.IncludeChildren, Expected) << Includes.dump();
}
TEST_F(HeadersTest, IncludeDirective) {