blob: 81e907159032b88d69e39b9f731cf7d6e8852ab4 [file] [log] [blame]
Alexander Kornienko9eb8c922014-04-08 12:27:49 +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 void registerMatchers(ast_matchers::MatchFinder *Finder) override {
12 Finder->addMatcher(ast_matchers::varDecl().bind("var"), this);
13 }
14 void check(const ast_matchers::MatchFinder::MatchResult &Result) override {
15 const VarDecl *Var = Result.Nodes.getNodeAs<VarDecl>("var");
16 // Add diagnostics in the wrong order.
17 diag(Var->getLocation(), "variable");
18 diag(Var->getTypeSpecStartLoc(), "type specifier");
19 }
20};
21
22TEST(ClangTidyDiagnosticConsumer, SortsErrors) {
Alexander Kornienko826b5ad2014-05-09 12:24:09 +000023 std::vector<ClangTidyError> Errors;
24 runCheckOnCode<TestCheck>("int a;", &Errors);
Alexander Kornienko9eb8c922014-04-08 12:27:49 +000025 EXPECT_EQ(2ul, Errors.size());
26 // FIXME: Remove " []" once the check name is removed from the message text.
27 EXPECT_EQ("type specifier []", Errors[0].Message.Message);
28 EXPECT_EQ("variable []", Errors[1].Message.Message);
29}
30
31} // namespace test
32} // namespace tidy
33} // namespace clang