@@ -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