summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h44
-rw-r--r--clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp2
2 files changed, 27 insertions, 19 deletions
diff --git a/clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h b/clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h
index 181e6c209e8..c1149c8ea46 100644
--- a/clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h
+++ b/clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h
@@ -22,21 +22,23 @@ namespace clang {
namespace tidy {
namespace test {
-class TestPPAction : public PreprocessOnlyAction {
+class TestClangTidyAction : public ASTFrontendAction {
public:
- TestPPAction(ClangTidyCheck &Check, ClangTidyContext *Context)
- : Check(Check), Context(Context) {}
+ TestClangTidyAction(ClangTidyCheck &Check, ast_matchers::MatchFinder &Finder,
+ ClangTidyContext &Context)
+ : Check(Check), Finder(Finder), Context(Context) {}
private:
- bool BeginSourceFileAction(CompilerInstance &Compiler,
- llvm::StringRef file_name) override {
- Context->setSourceManager(&Compiler.getSourceManager());
+ std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &Compiler,
+ StringRef File) override {
+ Context.setSourceManager(&Compiler.getSourceManager());
Check.registerPPCallbacks(Compiler);
- return true;
+ return Finder.newASTConsumer();
}
ClangTidyCheck &Check;
- ClangTidyContext *Context;
+ ast_matchers::MatchFinder &Finder;
+ ClangTidyContext &Context;
};
template <typename T>
@@ -50,19 +52,25 @@ std::string runCheckOnCode(StringRef Code,
ClangTidyGlobalOptions(), Options));
ClangTidyDiagnosticConsumer DiagConsumer(Context);
T Check("test-check", &Context);
- std::vector<std::string> ArgCXX11(1, "-std=c++11");
- ArgCXX11.insert(ArgCXX11.end(), ExtraArgs.begin(), ExtraArgs.end());
-
- if (!tooling::runToolOnCodeWithArgs(new TestPPAction(Check, &Context), Code,
- ArgCXX11, Filename))
- return "";
ast_matchers::MatchFinder Finder;
Check.registerMatchers(&Finder);
- std::unique_ptr<tooling::FrontendActionFactory> Factory(
- tooling::newFrontendActionFactory(&Finder));
- if (!tooling::runToolOnCodeWithArgs(Factory->create(), Code, ArgCXX11,
- Filename))
+
+ std::vector<std::string> ArgCXX11(1, "clang-tidy");
+ ArgCXX11.push_back("-fsyntax-only");
+ ArgCXX11.push_back("-std=c++11");
+ ArgCXX11.insert(ArgCXX11.end(), ExtraArgs.begin(), ExtraArgs.end());
+ ArgCXX11.push_back(Filename.str());
+ llvm::IntrusiveRefCntPtr<FileManager> files(
+ new FileManager(FileSystemOptions()));
+ tooling::ToolInvocation Invocation(
+ ArgCXX11, new TestClangTidyAction(Check, Finder, Context), files.get());
+ SmallString<16> FileNameStorage;
+ StringRef FileNameRef = Filename.toNullTerminatedStringRef(FileNameStorage);
+ Invocation.mapVirtualFile(FileNameRef, Code);
+ Invocation.setDiagnosticConsumer(&DiagConsumer);
+ if (!Invocation.run())
return "";
+
DiagConsumer.finish();
tooling::Replacements Fixes;
for (const ClangTidyError &Error : Context.getErrors())
diff --git a/clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp b/clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp
index a9afb820271..00e9034456b 100644
--- a/clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp
+++ b/clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp
@@ -114,7 +114,7 @@ TEST(LLVMHeaderGuardCheckTest, FixHeaderGuards) {
"LLVM_ADT_FOO_H\n#endif \\ \n// "
"LLVM_ADT_FOO_H\n",
"include/llvm/ADT/foo.h",
- /*ExpectedWarnings=*/0));
+ /*ExpectedWarnings=*/1));
EXPECT_EQ("#ifndef LLVM_ADT_FOO_H\n#define LLVM_ADT_FOO_H\n#endif /* "
"LLVM_ADT_FOO_H\\ \n FOO */",
OpenPOWER on IntegriCloud