blob: 0a294d5e1195800b9d7bf973c20ee538909be482 [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;
Alexander Kornienkodad4acb2014-05-22 16:07:11 +000018 // TODO: Figure out why parsing succeeds here.
19 EXPECT_FALSE(parseLineFilter("asdf", Options));
20 EXPECT_TRUE(Options.LineFilter.empty());
21
Rafael Espindolaf1451372014-06-03 04:40:55 +000022 EXPECT_TRUE(!!parseLineFilter("[{}]", Options));
23 EXPECT_TRUE(!!parseLineFilter("[{\"name\":\"\"}]", Options));
Alexander Kornienkodad4acb2014-05-22 16:07:11 +000024 EXPECT_TRUE(
Rafael Espindolaf1451372014-06-03 04:40:55 +000025 !!parseLineFilter("[{\"name\":\"test\",\"lines\":[[1]]}]", Options));
Alexander Kornienkodad4acb2014-05-22 16:07:11 +000026 EXPECT_TRUE(
Rafael Espindolaf1451372014-06-03 04:40:55 +000027 !!parseLineFilter("[{\"name\":\"test\",\"lines\":[[1,2,3]]}]", Options));
NAKAMURA Takumi98247b32014-05-24 17:22:01 +000028 EXPECT_TRUE(
Rafael Espindolaf1451372014-06-03 04:40:55 +000029 !!parseLineFilter("[{\"name\":\"test\",\"lines\":[[1,-1]]}]", Options));
Alexander Kornienkodad4acb2014-05-22 16:07:11 +000030}
31
32TEST(ParseLineFilter, ValidFilter) {
Alexander Kornienkoa4695222014-06-05 13:31:45 +000033 ClangTidyGlobalOptions Options;
Alexander Kornienkodad4acb2014-05-22 16:07:11 +000034 llvm::error_code Error = parseLineFilter(
NAKAMURA Takumi98247b32014-05-24 17:22:01 +000035 "[{\"name\":\"file1.cpp\",\"lines\":[[3,15],[20,30],[42,42]]},"
36 "{\"name\":\"file2.h\"},"
37 "{\"name\":\"file3.cc\",\"lines\":[[100,1000]]}]",
Alexander Kornienkodad4acb2014-05-22 16:07:11 +000038 Options);
39 EXPECT_FALSE(Error);
40 EXPECT_EQ(3u, Options.LineFilter.size());
41 EXPECT_EQ("file1.cpp", Options.LineFilter[0].Name);
42 EXPECT_EQ(3u, Options.LineFilter[0].LineRanges.size());
43 EXPECT_EQ(3u, Options.LineFilter[0].LineRanges[0].first);
44 EXPECT_EQ(15u, Options.LineFilter[0].LineRanges[0].second);
45 EXPECT_EQ(20u, Options.LineFilter[0].LineRanges[1].first);
46 EXPECT_EQ(30u, Options.LineFilter[0].LineRanges[1].second);
47 EXPECT_EQ(42u, Options.LineFilter[0].LineRanges[2].first);
48 EXPECT_EQ(42u, Options.LineFilter[0].LineRanges[2].second);
49 EXPECT_EQ("file2.h", Options.LineFilter[1].Name);
50 EXPECT_EQ(0u, Options.LineFilter[1].LineRanges.size());
51 EXPECT_EQ("file3.cc", Options.LineFilter[2].Name);
52 EXPECT_EQ(1u, Options.LineFilter[2].LineRanges.size());
53 EXPECT_EQ(100u, Options.LineFilter[2].LineRanges[0].first);
54 EXPECT_EQ(1000u, Options.LineFilter[2].LineRanges[0].second);
55}
56
Alexander Kornienkoa4695222014-06-05 13:31:45 +000057TEST(ParseConfiguration, ValidConfiguration) {
58 ClangTidyOptions Options;
59 llvm::error_code Error = parseConfiguration("Checks: \"-*,misc-*\"\n"
60 "HeaderFilterRegex: \".*\"\n"
61 "AnalyzeTemporaryDtors: true\n",
62 Options);
63 EXPECT_FALSE(Error);
64 EXPECT_EQ("-*,misc-*", Options.Checks);
65 EXPECT_EQ(".*", Options.HeaderFilterRegex);
66 EXPECT_TRUE(Options.AnalyzeTemporaryDtors);
67}
68
Alexander Kornienkodad4acb2014-05-22 16:07:11 +000069} // namespace test
70} // namespace tidy
71} // namespace clang