summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Kornienko <alexfh@google.com>2014-02-27 14:28:02 +0000
committerAlexander Kornienko <alexfh@google.com>2014-02-27 14:28:02 +0000
commit098871609f7a15b4992bd3ae5552b9d144ff38a1 (patch)
treefd48e9729d896778eeba61b08140bc1b9e4030ff
parent527aa5052d2816f13368a5c0b1465b7e413a8d0c (diff)
downloadbcm5719-llvm-098871609f7a15b4992bd3ae5552b9d144ff38a1.tar.gz
bcm5719-llvm-098871609f7a15b4992bd3ae5552b9d144ff38a1.zip
Made the ClangTidyTest helper class independent of the testing framework.
Reviewers: klimek Reviewed By: klimek CC: cfe-commits Differential Revision: http://llvm-reviews.chandlerc.com/D2895 llvm-svn: 202399
-rw-r--r--clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h80
-rw-r--r--clang-tools-extra/unittests/clang-tidy/GoogleModuleTest.cpp26
-rw-r--r--clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp10
3 files changed, 59 insertions, 57 deletions
diff --git a/clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h b/clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h
index 9cd8bcdd85f..1be5f82eac7 100644
--- a/clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h
+++ b/clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h
@@ -17,59 +17,53 @@
#include "clang/Frontend/FrontendActions.h"
#include "clang/Tooling/Refactoring.h"
#include "clang/Tooling/Tooling.h"
-#include "gtest/gtest.h"
namespace clang {
namespace tidy {
+namespace test {
-template <typename T> class ClangTidyTest : public ::testing::Test {
-protected:
- ClangTidyTest() : Check(new T), Context(&Errors) {}
-
- std::string runCheckOn(StringRef Code) {
- ClangTidyDiagnosticConsumer DiagConsumer(Context);
- Check->setContext(&Context);
- EXPECT_TRUE(
- tooling::runToolOnCode(new TestPPAction(*Check, &Context), Code));
- ast_matchers::MatchFinder Finder;
- Check->registerMatchers(&Finder);
- OwningPtr<tooling::FrontendActionFactory> Factory(
- tooling::newFrontendActionFactory(&Finder));
- EXPECT_TRUE(tooling::runToolOnCode(Factory->create(), Code));
- DiagConsumer.finish();
- tooling::Replacements Fixes;
- for (SmallVector<ClangTidyError, 16>::const_iterator I = Errors.begin(),
- E = Errors.end();
- I != E; ++I)
- Fixes.insert(I->Fix.begin(), I->Fix.end());
- return tooling::applyAllReplacements(Code, Fixes);
- }
-
- void expectNoChanges(StringRef Code) { EXPECT_EQ(Code, runCheckOn(Code)); }
+class TestPPAction : public PreprocessOnlyAction {
+public:
+ TestPPAction(ClangTidyCheck &Check, ClangTidyContext *Context)
+ : Check(Check), Context(Context) {}
private:
- class TestPPAction : public PreprocessOnlyAction {
- public:
- TestPPAction(ClangTidyCheck &Check, ClangTidyContext *Context)
- : Check(Check), Context(Context) {}
-
- private:
- virtual bool BeginSourceFileAction(CompilerInstance &Compiler,
- llvm::StringRef file_name) {
- Context->setSourceManager(&Compiler.getSourceManager());
- Check.registerPPCallbacks(Compiler);
- return true;
- }
+ bool BeginSourceFileAction(CompilerInstance &Compiler,
+ llvm::StringRef file_name) LLVM_OVERRIDE {
+ Context->setSourceManager(&Compiler.getSourceManager());
+ Check.registerPPCallbacks(Compiler);
+ return true;
+ }
- ClangTidyCheck &Check;
- ClangTidyContext *Context;
- };
+ ClangTidyCheck &Check;
+ ClangTidyContext *Context;
+};
- OwningPtr<ClangTidyCheck> Check;
+template <typename T> std::string runCheckOnCode(StringRef Code) {
+ T Check;
SmallVector<ClangTidyError, 16> Errors;
- ClangTidyContext Context;
-};
+ ClangTidyContext Context(&Errors);
+ ClangTidyDiagnosticConsumer DiagConsumer(Context);
+ Check.setContext(&Context);
+
+ if (!tooling::runToolOnCode(new TestPPAction(Check, &Context), Code))
+ return "";
+ ast_matchers::MatchFinder Finder;
+ Check.registerMatchers(&Finder);
+ OwningPtr<tooling::FrontendActionFactory> Factory(
+ tooling::newFrontendActionFactory(&Finder));
+ if (!tooling::runToolOnCode(Factory->create(), Code))
+ return "";
+ DiagConsumer.finish();
+ tooling::Replacements Fixes;
+ for (SmallVector<ClangTidyError, 16>::const_iterator I = Errors.begin(),
+ E = Errors.end();
+ I != E; ++I)
+ Fixes.insert(I->Fix.begin(), I->Fix.end());
+ return tooling::applyAllReplacements(Code, Fixes);
+}
+} // namespace test
} // namespace tidy
} // namespace clang
diff --git a/clang-tools-extra/unittests/clang-tidy/GoogleModuleTest.cpp b/clang-tools-extra/unittests/clang-tidy/GoogleModuleTest.cpp
index 48433f4fbd8..476ab39fe23 100644
--- a/clang-tools-extra/unittests/clang-tidy/GoogleModuleTest.cpp
+++ b/clang-tools-extra/unittests/clang-tidy/GoogleModuleTest.cpp
@@ -1,30 +1,36 @@
#include "ClangTidyTest.h"
#include "google/GoogleTidyModule.h"
+#include "gtest/gtest.h"
namespace clang {
namespace tidy {
+namespace test {
-typedef ClangTidyTest<ExplicitConstructorCheck> ExplicitConstructorCheckTest;
+#define EXPECT_NO_CHANGES(Check, Code) \
+ EXPECT_EQ(Code, runCheckOnCode<Check>(Code))
-TEST_F(ExplicitConstructorCheckTest, SingleArgumentConstructorsOnly) {
- expectNoChanges("class C { C(); };");
- expectNoChanges("class C { C(int i, int j); };");
+TEST(ExplicitConstructorCheckTest, SingleArgumentConstructorsOnly) {
+ EXPECT_NO_CHANGES(ExplicitConstructorCheck, "class C { C(); };");
+ EXPECT_NO_CHANGES(ExplicitConstructorCheck, "class C { C(int i, int j); };");
}
-TEST_F(ExplicitConstructorCheckTest, Basic) {
+TEST(ExplicitConstructorCheckTest, Basic) {
EXPECT_EQ("class C { explicit C(int i); };",
- runCheckOn("class C { C(int i); };"));
+ runCheckOnCode<ExplicitConstructorCheck>("class C { C(int i); };"));
}
-TEST_F(ExplicitConstructorCheckTest, DefaultParameters) {
+TEST(ExplicitConstructorCheckTest, DefaultParameters) {
EXPECT_EQ("class C { explicit C(int i, int j = 0); };",
- runCheckOn("class C { C(int i, int j = 0); };"));
+ runCheckOnCode<ExplicitConstructorCheck>(
+ "class C { C(int i, int j = 0); };"));
}
-TEST_F(ExplicitConstructorCheckTest, OutOfLineDefinitions) {
+TEST(ExplicitConstructorCheckTest, OutOfLineDefinitions) {
EXPECT_EQ("class C { explicit C(int i); }; C::C(int i) {}",
- runCheckOn("class C { C(int i); }; C::C(int i) {}"));
+ runCheckOnCode<ExplicitConstructorCheck>(
+ "class C { C(int i); }; C::C(int i) {}"));
}
+} // namespace test
} // namespace tidy
} // namespace clang
diff --git a/clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp b/clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp
index 4de31aa72de..e69616499c0 100644
--- a/clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp
+++ b/clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp
@@ -1,14 +1,16 @@
#include "ClangTidyTest.h"
#include "llvm/LLVMTidyModule.h"
+#include "gtest/gtest.h"
namespace clang {
namespace tidy {
+namespace test {
-typedef ClangTidyTest<NamespaceCommentCheck> NamespaceCommentCheckTest;
-
-TEST_F(NamespaceCommentCheckTest, Basic) {
- EXPECT_EQ("namespace i {\n} // namespace i", runCheckOn("namespace i {\n}"));
+TEST(NamespaceCommentCheckTest, Basic) {
+ EXPECT_EQ("namespace i {\n} // namespace i",
+ runCheckOnCode<NamespaceCommentCheck>("namespace i {\n}"));
}
+} // namespace test
} // namespace tidy
} // namespace clang
OpenPOWER on IntegriCloud