diff options
Diffstat (limited to 'clang-tools-extra/unittests/clang-tidy')
4 files changed, 95 insertions, 80 deletions
diff --git a/clang-tools-extra/unittests/clang-tidy/CMakeLists.txt b/clang-tools-extra/unittests/clang-tidy/CMakeLists.txt index 346f63a32a5..3c9706d8b1b 100644 --- a/clang-tools-extra/unittests/clang-tidy/CMakeLists.txt +++ b/clang-tools-extra/unittests/clang-tidy/CMakeLists.txt @@ -10,6 +10,7 @@ add_extra_unittest(ClangTidyTests ClangTidyDiagnosticConsumerTest.cpp ClangTidyOptionsTest.cpp LLVMModuleTest.cpp + ReadabilityChecksTest.cpp GoogleModuleTest.cpp MiscModuleTest.cpp) @@ -22,5 +23,6 @@ target_link_libraries(ClangTidyTests clangTidyGoogleModule clangTidyLLVMModule clangTidyMiscModule + clangTidyReadability clangTooling ) diff --git a/clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp b/clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp index be615080216..a9afb820271 100644 --- a/clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp +++ b/clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp @@ -1,91 +1,12 @@ #include "ClangTidyTest.h" #include "llvm/HeaderGuardCheck.h" #include "llvm/IncludeOrderCheck.h" -#include "llvm/NamespaceCommentCheck.h" #include "gtest/gtest.h" namespace clang { namespace tidy { namespace test { -TEST(NamespaceCommentCheckTest, Basic) { - EXPECT_EQ("namespace i {\n} // namespace i", - runCheckOnCode<NamespaceCommentCheck>("namespace i {\n}")); - EXPECT_EQ("namespace {\n} // namespace", - runCheckOnCode<NamespaceCommentCheck>("namespace {\n}")); - EXPECT_EQ( - "namespace i { namespace j {\n} // namespace j\n } // namespace i", - runCheckOnCode<NamespaceCommentCheck>("namespace i { namespace j {\n} }")); -} - -TEST(NamespaceCommentCheckTest, SingleLineNamespaces) { - EXPECT_EQ( - "namespace i { namespace j { } }", - runCheckOnCode<NamespaceCommentCheck>("namespace i { namespace j { } }")); -} - -TEST(NamespaceCommentCheckTest, CheckExistingComments) { - EXPECT_EQ("namespace i { namespace j {\n" - "} /* namespace j */ } // namespace i\n" - " /* random comment */", - runCheckOnCode<NamespaceCommentCheck>( - "namespace i { namespace j {\n" - "} /* namespace j */ } /* random comment */")); - EXPECT_EQ("namespace {\n" - "} // namespace", - runCheckOnCode<NamespaceCommentCheck>("namespace {\n" - "} // namespace")); - EXPECT_EQ("namespace {\n" - "} //namespace", - runCheckOnCode<NamespaceCommentCheck>("namespace {\n" - "} //namespace")); - EXPECT_EQ("namespace {\n" - "} // anonymous namespace", - runCheckOnCode<NamespaceCommentCheck>("namespace {\n" - "} // anonymous namespace")); - EXPECT_EQ( - "namespace My_NameSpace123 {\n" - "} // namespace My_NameSpace123", - runCheckOnCode<NamespaceCommentCheck>("namespace My_NameSpace123 {\n" - "} // namespace My_NameSpace123")); - EXPECT_EQ( - "namespace My_NameSpace123 {\n" - "} //namespace My_NameSpace123", - runCheckOnCode<NamespaceCommentCheck>("namespace My_NameSpace123 {\n" - "} //namespace My_NameSpace123")); - EXPECT_EQ("namespace My_NameSpace123 {\n" - "} // end namespace My_NameSpace123", - runCheckOnCode<NamespaceCommentCheck>( - "namespace My_NameSpace123 {\n" - "} // end namespace My_NameSpace123")); - // Understand comments only on the same line. - EXPECT_EQ("namespace {\n" - "} // namespace\n" - "// namespace", - runCheckOnCode<NamespaceCommentCheck>("namespace {\n" - "}\n" - "// namespace")); - // Leave unknown comments. - EXPECT_EQ("namespace {\n" - "} // namespace // random text", - runCheckOnCode<NamespaceCommentCheck>("namespace {\n" - "} // random text")); -} - -TEST(NamespaceCommentCheckTest, FixWrongComments) { - EXPECT_EQ("namespace i { namespace jJ0_ {\n" - "} // namespace jJ0_\n" - " } // namespace i\n" - " /* random comment */", - runCheckOnCode<NamespaceCommentCheck>( - "namespace i { namespace jJ0_ {\n" - "} /* namespace qqq */ } /* random comment */")); - EXPECT_EQ("namespace {\n" - "} // namespace", - runCheckOnCode<NamespaceCommentCheck>("namespace {\n" - "} // namespace asdf")); -} - // FIXME: It seems this might be incompatible to dos path. Investigating. #if !defined(_WIN32) static std::string runHeaderGuardCheck(StringRef Code, const Twine &Filename, diff --git a/clang-tools-extra/unittests/clang-tidy/Makefile b/clang-tools-extra/unittests/clang-tidy/Makefile index 4e539502266..627d813a547 100644 --- a/clang-tools-extra/unittests/clang-tidy/Makefile +++ b/clang-tools-extra/unittests/clang-tidy/Makefile @@ -14,7 +14,8 @@ TESTNAME = ClangTidy LINK_COMPONENTS := asmparser bitreader support MC MCParser option \ TransformUtils USEDLIBS = clangTidy.a clangTidyLLVMModule.a clangTidyGoogleModule.a \ - clangTidyMiscModule.a clangTidy.a clangTidyUtils.a \ + clangTidyMiscModule.a clangTidyReadability.a clangTidy.a \ + clangTidyUtils.a \ clangStaticAnalyzerFrontend.a clangStaticAnalyzerCheckers.a \ clangStaticAnalyzerCore.a \ clangFormat.a clangTooling.a clangFrontend.a clangSerialization.a \ diff --git a/clang-tools-extra/unittests/clang-tidy/ReadabilityChecksTest.cpp b/clang-tools-extra/unittests/clang-tidy/ReadabilityChecksTest.cpp new file mode 100644 index 00000000000..847c2baf521 --- /dev/null +++ b/clang-tools-extra/unittests/clang-tidy/ReadabilityChecksTest.cpp @@ -0,0 +1,91 @@ +#include "ClangTidyTest.h" +#include "readability/NamespaceCommentCheck.h" +#include "gtest/gtest.h" + +namespace clang { +namespace tidy { +namespace test { + +using readability::NamespaceCommentCheck; + +TEST(NamespaceCommentCheckTest, Basic) { + EXPECT_EQ("namespace i {\n} // namespace i", + runCheckOnCode<NamespaceCommentCheck>("namespace i {\n}")); + EXPECT_EQ("namespace {\n} // namespace", + runCheckOnCode<NamespaceCommentCheck>("namespace {\n}")); + EXPECT_EQ( + "namespace i { namespace j {\n} // namespace j\n } // namespace i", + runCheckOnCode<NamespaceCommentCheck>("namespace i { namespace j {\n} }")); +} + +TEST(NamespaceCommentCheckTest, SingleLineNamespaces) { + EXPECT_EQ( + "namespace i { namespace j { } }", + runCheckOnCode<NamespaceCommentCheck>("namespace i { namespace j { } }")); +} + +TEST(NamespaceCommentCheckTest, CheckExistingComments) { + EXPECT_EQ("namespace i { namespace j {\n" + "} /* namespace j */ } // namespace i\n" + " /* random comment */", + runCheckOnCode<NamespaceCommentCheck>( + "namespace i { namespace j {\n" + "} /* namespace j */ } /* random comment */")); + EXPECT_EQ("namespace {\n" + "} // namespace", + runCheckOnCode<NamespaceCommentCheck>("namespace {\n" + "} // namespace")); + EXPECT_EQ("namespace {\n" + "} //namespace", + runCheckOnCode<NamespaceCommentCheck>("namespace {\n" + "} //namespace")); + EXPECT_EQ("namespace {\n" + "} // anonymous namespace", + runCheckOnCode<NamespaceCommentCheck>("namespace {\n" + "} // anonymous namespace")); + EXPECT_EQ( + "namespace My_NameSpace123 {\n" + "} // namespace My_NameSpace123", + runCheckOnCode<NamespaceCommentCheck>("namespace My_NameSpace123 {\n" + "} // namespace My_NameSpace123")); + EXPECT_EQ( + "namespace My_NameSpace123 {\n" + "} //namespace My_NameSpace123", + runCheckOnCode<NamespaceCommentCheck>("namespace My_NameSpace123 {\n" + "} //namespace My_NameSpace123")); + EXPECT_EQ("namespace My_NameSpace123 {\n" + "} // end namespace My_NameSpace123", + runCheckOnCode<NamespaceCommentCheck>( + "namespace My_NameSpace123 {\n" + "} // end namespace My_NameSpace123")); + // Understand comments only on the same line. + EXPECT_EQ("namespace {\n" + "} // namespace\n" + "// namespace", + runCheckOnCode<NamespaceCommentCheck>("namespace {\n" + "}\n" + "// namespace")); + // Leave unknown comments. + EXPECT_EQ("namespace {\n" + "} // namespace // random text", + runCheckOnCode<NamespaceCommentCheck>("namespace {\n" + "} // random text")); +} + +TEST(NamespaceCommentCheckTest, FixWrongComments) { + EXPECT_EQ("namespace i { namespace jJ0_ {\n" + "} // namespace jJ0_\n" + " } // namespace i\n" + " /* random comment */", + runCheckOnCode<NamespaceCommentCheck>( + "namespace i { namespace jJ0_ {\n" + "} /* namespace qqq */ } /* random comment */")); + EXPECT_EQ("namespace {\n" + "} // namespace", + runCheckOnCode<NamespaceCommentCheck>("namespace {\n" + "} // namespace asdf")); +} + +} // namespace test +} // namespace tidy +} // namespace clang |