Skip to content

Commit db40a30

Browse files
committed
Add some Unit Test coverage
1 parent 6263a3b commit db40a30

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

clang-tools-extra/unittests/clang-tidy/OptionsProviderTest.cpp

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,51 @@ TEST(ClangTidyOptionsProvider, InMemoryFileSystems) {
6262
EXPECT_EQ(File2Options->Checks, File3Options->Checks);
6363
}
6464

65+
TEST(ClangTidyOptionsProvider, InvalidConfigurationFiles) {
66+
llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem> FileSystem(
67+
new llvm::vfs::InMemoryFileSystem);
68+
69+
StringRef BaseClangTidy = R"(
70+
Checks: -*,clang-diagnostic-*
71+
Unexpected
72+
)";
73+
StringRef Sub1ClangTidy = R"(
74+
Checks: readability-*
75+
InheritParentConfig: true
76+
)";
77+
StringRef Sub2ClangTidy = R"(
78+
Checks: bugprone-*,misc-*,clang-diagnostic-*
79+
InheritParentConfig: false
80+
)";
81+
FileSystem->addFile("ProjectRoot/.clang-tidy", 0,
82+
llvm::MemoryBuffer::getMemBuffer(BaseClangTidy));
83+
FileSystem->addFile("ProjectRoot/File.cpp", 0,
84+
llvm::MemoryBuffer::getMemBuffer(""));
85+
FileSystem->addFile("ProjectRoot/SubDir1/.clang-tidy", 0,
86+
llvm::MemoryBuffer::getMemBuffer(Sub1ClangTidy));
87+
FileSystem->addFile("ProjectRoot/SubDir1/File.cpp", 0,
88+
llvm::MemoryBuffer::getMemBuffer(""));
89+
FileSystem->addFile("ProjectRoot/SubDir1/SubDir2/.clang-tidy", 0,
90+
llvm::MemoryBuffer::getMemBuffer(Sub2ClangTidy));
91+
FileSystem->addFile("ProjectRoot/SubDir1/SubDir2/File.cpp", 0,
92+
llvm::MemoryBuffer::getMemBuffer(""));
93+
94+
FileOptionsProvider FileOpt({}, {}, {}, FileSystem);
95+
96+
llvm::ErrorOr<ClangTidyOptions> File1Options =
97+
FileOpt.getOptions("ProjectRoot/File.cpp");
98+
llvm::ErrorOr<ClangTidyOptions> File2Options =
99+
FileOpt.getOptions("ProjectRoot/SubDir1/File.cpp");
100+
llvm::ErrorOr<ClangTidyOptions> File3Options =
101+
FileOpt.getOptions("ProjectRoot/SubDir1/SubDir2/File.cpp");
102+
103+
ASSERT_TRUE(!File1Options);
104+
ASSERT_TRUE(!File2Options);
105+
ASSERT_TRUE(!!File3Options);
106+
ASSERT_TRUE(File3Options->Checks.has_value());
107+
EXPECT_EQ(*File3Options->Checks, "bugprone-*,misc-*,clang-diagnostic-*");
108+
}
109+
65110
} // namespace test
66111
} // namespace tidy
67112
} // namespace clang

0 commit comments

Comments
 (0)