diff options
Diffstat (limited to 'clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp')
-rw-r--r-- | clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp b/clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp index 6bc52b2..b57630d 100644 --- a/clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp +++ b/clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp @@ -1,4 +1,5 @@ #include "ClangTidyTest.h" +#include "llvm/HeaderGuardCheck.h" #include "llvm/IncludeOrderCheck.h" #include "llvm/NamespaceCommentCheck.h" #include "gtest/gtest.h" @@ -85,6 +86,46 @@ TEST(NamespaceCommentCheckTest, FixWrongComments) { "} // namespace asdf")); } +static std::string runHeaderGuardCheck(StringRef Code, const Twine &Filename) { + return test::runCheckOnCode<LLVMHeaderGuardCheck>( + Code, /*Errors=*/nullptr, Filename, std::string("-xc++-header")); +} + +TEST(LLVMHeaderGuardCheckTest, FixHeaderGuards) { + EXPECT_EQ("#ifndef LLVM_ADT_FOO_H\n#define LLVM_ADT_FOO_H\n#endif\n", + runHeaderGuardCheck("#ifndef FOO\n#define FOO\n#endif\n", + "include/llvm/ADT/foo.h")); + + // Allow trailing underscores. + EXPECT_EQ("#ifndef LLVM_ADT_FOO_H_\n#define LLVM_ADT_FOO_H_\n#endif\n", + runHeaderGuardCheck( + "#ifndef LLVM_ADT_FOO_H_\n#define LLVM_ADT_FOO_H_\n#endif\n", + "include/llvm/ADT/foo.h")); + + EXPECT_EQ("#ifndef LLVM_CLANG_C_BAR_H\n#define LLVM_CLANG_C_BAR_H\n\n\n#endif\n", + runHeaderGuardCheck("", "./include/clang-c/bar.h")); + + EXPECT_EQ("#ifndef LLVM_CLANG_LIB_CODEGEN_C_H\n#define " + "LLVM_CLANG_LIB_CODEGEN_C_H\n\n\n#endif\n", + runHeaderGuardCheck("", "tools/clang/lib/CodeGen/c.h")); + + EXPECT_EQ("#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_X_H\n#define " + "LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_X_H\n\n\n#endif\n", + runHeaderGuardCheck("", "tools/clang/tools/extra/clang-tidy/x.h")); + + EXPECT_EQ( + "int foo;\n#ifndef LLVM_CLANG_BAR_H\n#define LLVM_CLANG_BAR_H\n#endif\n", + runHeaderGuardCheck("int foo;\n#ifndef LLVM_CLANG_BAR_H\n" + "#define LLVM_CLANG_BAR_H\n#endif\n", + "include/clang/bar.h")); + + EXPECT_EQ("#ifndef LLVM_CLANG_BAR_H\n#define LLVM_CLANG_BAR_H\n\n" + "int foo;\n#ifndef FOOLOLO\n#define FOOLOLO\n#endif\n\n#endif\n", + runHeaderGuardCheck( + "int foo;\n#ifndef FOOLOLO\n#define FOOLOLO\n#endif\n", + "include/clang/bar.h")); +} + } // namespace test } // namespace tidy } // namespace clang |