forked from OSchip/llvm-project
95 lines
2.7 KiB
C++
95 lines
2.7 KiB
C++
#include "ClangTidy.h"
|
|
#include "ClangTidyTest.h"
|
|
#include "gtest/gtest.h"
|
|
|
|
namespace clang {
|
|
namespace tidy {
|
|
namespace test {
|
|
|
|
class TestCheck : public ClangTidyCheck {
|
|
public:
|
|
TestCheck(StringRef Name, ClangTidyContext *Context)
|
|
: ClangTidyCheck(Name, Context) {}
|
|
void registerMatchers(ast_matchers::MatchFinder *Finder) override {
|
|
Finder->addMatcher(ast_matchers::varDecl().bind("var"), this);
|
|
}
|
|
void check(const ast_matchers::MatchFinder::MatchResult &Result) override {
|
|
const auto *Var = Result.Nodes.getNodeAs<VarDecl>("var");
|
|
// Add diagnostics in the wrong order.
|
|
diag(Var->getLocation(), "variable");
|
|
diag(Var->getTypeSpecStartLoc(), "type specifier");
|
|
}
|
|
};
|
|
|
|
TEST(ClangTidyDiagnosticConsumer, SortsErrors) {
|
|
std::vector<ClangTidyError> Errors;
|
|
runCheckOnCode<TestCheck>("int a;", &Errors);
|
|
EXPECT_EQ(2ul, Errors.size());
|
|
EXPECT_EQ("type specifier", Errors[0].Message.Message);
|
|
EXPECT_EQ("variable", Errors[1].Message.Message);
|
|
}
|
|
|
|
TEST(GlobList, Empty) {
|
|
GlobList Filter("");
|
|
|
|
EXPECT_TRUE(Filter.contains(""));
|
|
EXPECT_FALSE(Filter.contains("aaa"));
|
|
}
|
|
|
|
TEST(GlobList, Nothing) {
|
|
GlobList Filter("-*");
|
|
|
|
EXPECT_FALSE(Filter.contains(""));
|
|
EXPECT_FALSE(Filter.contains("a"));
|
|
EXPECT_FALSE(Filter.contains("-*"));
|
|
EXPECT_FALSE(Filter.contains("-"));
|
|
EXPECT_FALSE(Filter.contains("*"));
|
|
}
|
|
|
|
TEST(GlobList, Everything) {
|
|
GlobList Filter("*");
|
|
|
|
EXPECT_TRUE(Filter.contains(""));
|
|
EXPECT_TRUE(Filter.contains("aaaa"));
|
|
EXPECT_TRUE(Filter.contains("-*"));
|
|
EXPECT_TRUE(Filter.contains("-"));
|
|
EXPECT_TRUE(Filter.contains("*"));
|
|
}
|
|
|
|
TEST(GlobList, Simple) {
|
|
GlobList Filter("aaa");
|
|
|
|
EXPECT_TRUE(Filter.contains("aaa"));
|
|
EXPECT_FALSE(Filter.contains(""));
|
|
EXPECT_FALSE(Filter.contains("aa"));
|
|
EXPECT_FALSE(Filter.contains("aaaa"));
|
|
EXPECT_FALSE(Filter.contains("bbb"));
|
|
}
|
|
|
|
TEST(GlobList, WhitespacesAtBegin) {
|
|
GlobList Filter("-*, a.b.*");
|
|
|
|
EXPECT_TRUE(Filter.contains("a.b.c"));
|
|
EXPECT_FALSE(Filter.contains("b.c"));
|
|
}
|
|
|
|
TEST(GlobList, Complex) {
|
|
GlobList Filter("*,-a.*, -b.*, \r \n a.1.* ,-a.1.A.*,-..,-...,-..+,-*$, -*qwe* ");
|
|
|
|
EXPECT_TRUE(Filter.contains("aaa"));
|
|
EXPECT_TRUE(Filter.contains("qqq"));
|
|
EXPECT_FALSE(Filter.contains("a."));
|
|
EXPECT_FALSE(Filter.contains("a.b"));
|
|
EXPECT_FALSE(Filter.contains("b."));
|
|
EXPECT_FALSE(Filter.contains("b.b"));
|
|
EXPECT_TRUE(Filter.contains("a.1.b"));
|
|
EXPECT_FALSE(Filter.contains("a.1.A.a"));
|
|
EXPECT_FALSE(Filter.contains("qwe"));
|
|
EXPECT_FALSE(Filter.contains("asdfqweasdf"));
|
|
EXPECT_TRUE(Filter.contains("asdfqwEasdf"));
|
|
}
|
|
|
|
} // namespace test
|
|
} // namespace tidy
|
|
} // namespace clang
|