blob: 5a7da5acce103d15eb5ae7d26c259a7e89ca0f04 [file] [log] [blame]
Alexander Kornienkodad4acb2014-05-22 16:07:11 +00001#include "ClangTidyOptions.h"
2#include "gtest/gtest.h"
3
4namespace clang {
5namespace tidy {
6namespace test {
7
8TEST(ParseLineFilter, EmptyFilter) {
Alexander Kornienkoa4695222014-06-05 13:31:45 +00009 ClangTidyGlobalOptions Options;
Alexander Kornienkodad4acb2014-05-22 16:07:11 +000010 EXPECT_FALSE(parseLineFilter("", Options));
11 EXPECT_TRUE(Options.LineFilter.empty());
12 EXPECT_FALSE(parseLineFilter("[]", Options));
13 EXPECT_TRUE(Options.LineFilter.empty());
14}
15
16TEST(ParseLineFilter, InvalidFilter) {
Alexander Kornienkoa4695222014-06-05 13:31:45 +000017 ClangTidyGlobalOptions Options;
Daniel Jasper136f4b32015-03-02 18:07:00 +000018 EXPECT_TRUE(!!parseLineFilter("asdf", Options));
Alexander Kornienkodad4acb2014-05-22 16:07:11 +000019 EXPECT_TRUE(Options.LineFilter.empty());
20
Rafael Espindolaf1451372014-06-03 04:40:55 +000021 EXPECT_TRUE(!!parseLineFilter("[{}]", Options));
22 EXPECT_TRUE(!!parseLineFilter("[{\"name\":\"\"}]", Options));
Alexander Kornienkodad4acb2014-05-22 16:07:11 +000023 EXPECT_TRUE(
Rafael Espindolaf1451372014-06-03 04:40:55 +000024 !!parseLineFilter("[{\"name\":\"test\",\"lines\":[[1]]}]", Options));
Alexander Kornienkodad4acb2014-05-22 16:07:11 +000025 EXPECT_TRUE(
Rafael Espindolaf1451372014-06-03 04:40:55 +000026 !!parseLineFilter("[{\"name\":\"test\",\"lines\":[[1,2,3]]}]", Options));
NAKAMURA Takumi98247b32014-05-24 17:22:01 +000027 EXPECT_TRUE(
Rafael Espindolaf1451372014-06-03 04:40:55 +000028 !!parseLineFilter("[{\"name\":\"test\",\"lines\":[[1,-1]]}]", Options));
Alexander Kornienkodad4acb2014-05-22 16:07:11 +000029}
30
31TEST(ParseLineFilter, ValidFilter) {
Alexander Kornienkoa4695222014-06-05 13:31:45 +000032 ClangTidyGlobalOptions Options;
Rafael Espindola15c57842014-06-12 13:32:11 +000033 std::error_code Error = parseLineFilter(
NAKAMURA Takumi98247b32014-05-24 17:22:01 +000034 "[{\"name\":\"file1.cpp\",\"lines\":[[3,15],[20,30],[42,42]]},"
35 "{\"name\":\"file2.h\"},"
36 "{\"name\":\"file3.cc\",\"lines\":[[100,1000]]}]",
Alexander Kornienkodad4acb2014-05-22 16:07:11 +000037 Options);
38 EXPECT_FALSE(Error);
39 EXPECT_EQ(3u, Options.LineFilter.size());
40 EXPECT_EQ("file1.cpp", Options.LineFilter[0].Name);
41 EXPECT_EQ(3u, Options.LineFilter[0].LineRanges.size());
42 EXPECT_EQ(3u, Options.LineFilter[0].LineRanges[0].first);
43 EXPECT_EQ(15u, Options.LineFilter[0].LineRanges[0].second);
44 EXPECT_EQ(20u, Options.LineFilter[0].LineRanges[1].first);
45 EXPECT_EQ(30u, Options.LineFilter[0].LineRanges[1].second);
46 EXPECT_EQ(42u, Options.LineFilter[0].LineRanges[2].first);
47 EXPECT_EQ(42u, Options.LineFilter[0].LineRanges[2].second);
48 EXPECT_EQ("file2.h", Options.LineFilter[1].Name);
49 EXPECT_EQ(0u, Options.LineFilter[1].LineRanges.size());
50 EXPECT_EQ("file3.cc", Options.LineFilter[2].Name);
51 EXPECT_EQ(1u, Options.LineFilter[2].LineRanges.size());
52 EXPECT_EQ(100u, Options.LineFilter[2].LineRanges[0].first);
53 EXPECT_EQ(1000u, Options.LineFilter[2].LineRanges[0].second);
54}
55
Alexander Kornienkoa4695222014-06-05 13:31:45 +000056TEST(ParseConfiguration, ValidConfiguration) {
Alexander Kornienkoe9951542014-09-24 18:36:03 +000057 llvm::ErrorOr<ClangTidyOptions> Options =
58 parseConfiguration("Checks: \"-*,misc-*\"\n"
59 "HeaderFilterRegex: \".*\"\n"
60 "AnalyzeTemporaryDtors: true\n"
61 "User: some.user");
62 EXPECT_TRUE(!!Options);
63 EXPECT_EQ("-*,misc-*", *Options->Checks);
64 EXPECT_EQ(".*", *Options->HeaderFilterRegex);
65 EXPECT_TRUE(*Options->AnalyzeTemporaryDtors);
66 EXPECT_EQ("some.user", *Options->User);
Alexander Kornienkoa4695222014-06-05 13:31:45 +000067}
68
Alexander Kornienkodad4acb2014-05-22 16:07:11 +000069} // namespace test
70} // namespace tidy
71} // namespace clang