From 640830142100ea828ba54b42c68ccc4b3dd1d8ea Mon Sep 17 00:00:00 2001 From: Manuel Klimek Date: Thu, 7 Nov 2013 23:18:05 +0000 Subject: Adds the ability to inject a DiagnosticConsumer into ClangTools. llvm-svn: 194226 --- clang/unittests/Tooling/ToolingTest.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'clang/unittests/Tooling/ToolingTest.cpp') diff --git a/clang/unittests/Tooling/ToolingTest.cpp b/clang/unittests/Tooling/ToolingTest.cpp index 25df601df82..40360fb45e1 100644 --- a/clang/unittests/Tooling/ToolingTest.cpp +++ b/clang/unittests/Tooling/ToolingTest.cpp @@ -302,5 +302,24 @@ TEST(ClangToolTest, BuildASTs) { } #endif +struct TestDiagnosticConsumer : public DiagnosticConsumer { + TestDiagnosticConsumer() : NumDiagnosticsSeen(0) {} + virtual void HandleDiagnostic(DiagnosticsEngine::Level DiagLevel, + const Diagnostic &Info) { + ++NumDiagnosticsSeen; + } + unsigned NumDiagnosticsSeen; +}; + +TEST(ClangToolTest, InjectDiagnosticConsumer) { + FixedCompilationDatabase Compilations("/", std::vector()); + ClangTool Tool(Compilations, std::vector(1, "/a.cc")); + Tool.mapVirtualFile("/a.cc", "int x = undeclared;"); + TestDiagnosticConsumer Consumer; + Tool.setDiagnosticConsumer(&Consumer); + Tool.run(newFrontendActionFactory()); + EXPECT_EQ(1u, Consumer.NumDiagnosticsSeen); +} + } // end namespace tooling } // end namespace clang -- cgit v1.2.3