blob: 5547f98ffd030db4a4fa99ebc493979cbda2e389 [file] [log] [blame]
Marek Kurdej92ecb512017-03-23 16:32:06 +00001#include "ClangTidy.h"
2#include "ClangTidyTest.h"
3#include "gtest/gtest.h"
4
5namespace clang {
6namespace tidy {
7namespace test {
8
9class TestCheck : public ClangTidyCheck {
10public:
11 TestCheck(StringRef Name, ClangTidyContext *Context)
12 : ClangTidyCheck(Name, Context) {}
13 void registerMatchers(ast_matchers::MatchFinder *Finder) override {
14 Finder->addMatcher(ast_matchers::varDecl().bind("var"), this);
15 }
16 void check(const ast_matchers::MatchFinder::MatchResult &Result) override {
17 const auto *Var = Result.Nodes.getNodeAs<VarDecl>("var");
18 // Add diagnostics in the wrong order.
19 diag(Var->getLocation(), "variable");
20 diag(Var->getTypeSpecStartLoc(), "type specifier");
21 }
22};
23
24TEST(ClangTidyDiagnosticConsumer, SortsErrors) {
25 std::vector<ClangTidyError> Errors;
26 runCheckOnCode<TestCheck>("int a;", &Errors);
27 EXPECT_EQ(2ul, Errors.size());
28 EXPECT_EQ("type specifier", Errors[0].Message.Message);
29 EXPECT_EQ("variable", Errors[1].Message.Message);
30}
31
32TEST(GlobList, Empty) {
33 GlobList Filter("");
34
35 EXPECT_TRUE(Filter.contains(""));
36 EXPECT_FALSE(Filter.contains("aaa"));
37}
38
39TEST(GlobList, Nothing) {
40 GlobList Filter("-*");
41
42 EXPECT_FALSE(Filter.contains(""));
43 EXPECT_FALSE(Filter.contains("a"));
44 EXPECT_FALSE(Filter.contains("-*"));
45 EXPECT_FALSE(Filter.contains("-"));
46 EXPECT_FALSE(Filter.contains("*"));
47}
48
49TEST(GlobList, Everything) {
50 GlobList Filter("*");
51
52 EXPECT_TRUE(Filter.contains(""));
53 EXPECT_TRUE(Filter.contains("aaaa"));
54 EXPECT_TRUE(Filter.contains("-*"));
55 EXPECT_TRUE(Filter.contains("-"));
56 EXPECT_TRUE(Filter.contains("*"));
57}
58
59TEST(GlobList, Simple) {
60 GlobList Filter("aaa");
61
62 EXPECT_TRUE(Filter.contains("aaa"));
63 EXPECT_FALSE(Filter.contains(""));
64 EXPECT_FALSE(Filter.contains("aa"));
65 EXPECT_FALSE(Filter.contains("aaaa"));
66 EXPECT_FALSE(Filter.contains("bbb"));
67}
68
69TEST(GlobList, WhitespacesAtBegin) {
70 GlobList Filter("-*, a.b.*");
71
72 EXPECT_TRUE(Filter.contains("a.b.c"));
73 EXPECT_FALSE(Filter.contains("b.c"));
74}
75
76TEST(GlobList, Complex) {
Alexander Kornienko9b8df6a2017-08-09 16:00:31 +000077 GlobList Filter("*,-a.*, -b.*, \r \n a.1.* ,-a.1.A.*,-..,-...,-..+,-*$, -*qwe* ");
Marek Kurdej92ecb512017-03-23 16:32:06 +000078
79 EXPECT_TRUE(Filter.contains("aaa"));
80 EXPECT_TRUE(Filter.contains("qqq"));
81 EXPECT_FALSE(Filter.contains("a."));
82 EXPECT_FALSE(Filter.contains("a.b"));
83 EXPECT_FALSE(Filter.contains("b."));
84 EXPECT_FALSE(Filter.contains("b.b"));
85 EXPECT_TRUE(Filter.contains("a.1.b"));
86 EXPECT_FALSE(Filter.contains("a.1.A.a"));
87 EXPECT_FALSE(Filter.contains("qwe"));
88 EXPECT_FALSE(Filter.contains("asdfqweasdf"));
89 EXPECT_TRUE(Filter.contains("asdfqwEasdf"));
90}
91
92} // namespace test
93} // namespace tidy
94} // namespace clang