diff options
author | Chandler Carruth <chandlerc@gmail.com> | 2017-06-29 23:20:54 +0000 |
---|---|---|
committer | Chandler Carruth <chandlerc@gmail.com> | 2017-06-29 23:20:54 +0000 |
commit | fe7b37a8ff38f40535f98de2e7b72bdd185cd1ae (patch) | |
tree | d845f2fc06ccbdee5d7f81a0c815153120f680ff /unittests | |
parent | ae1ed388cd6e265fdbb773a11f6797dee9d16fd6 (diff) |
[clang-format] Switch to case-insensitive header matching and use it to
improve support for LLVM-style include sorting.
This really is a collection of improvements to the rules for LLVM
include sorting:
- We have gmock headers now, so it adds support for those to one of the
categories.
- LLVM does use 'FooTest.cpp' files to test 'Foo.h' so it adds that
suffix for finding a main header.
- At times the test file's case may not match the header file's case, so
switch to case-insensitive regex matching of header names.
With this set of changes, I can't spot any misbehaviors when re-sorting
all of LLVM's unittest '#include' lines.
Thanks to Eric and Daniel for help testing and refining the patch during
review!
Differential Revision: https://reviews.llvm.org/D33932
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@306759 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests')
-rw-r--r-- | unittests/Format/SortIncludesTest.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/unittests/Format/SortIncludesTest.cpp b/unittests/Format/SortIncludesTest.cpp index c3c56a8130..1128ed829f 100644 --- a/unittests/Format/SortIncludesTest.cpp +++ b/unittests/Format/SortIncludesTest.cpp @@ -266,6 +266,29 @@ TEST_F(SortIncludesTest, LeavesMainHeaderFirst) { "a.cc")); } +TEST_F(SortIncludesTest, SupportCaseInsensitiveMatching) { + // Setup an regex for main includes so we can cover those as well. + Style.IncludeIsMainRegex = "([-_](test|unittest))?$"; + + // Ensure both main header detection and grouping work in a case insensitive + // manner. + EXPECT_EQ("#include \"llvm/A.h\"\n" + "#include \"b.h\"\n" + "#include \"c.h\"\n" + "#include \"LLVM/z.h\"\n" + "#include \"llvm/X.h\"\n" + "#include \"GTest/GTest.h\"\n" + "#include \"gmock/gmock.h\"\n", + sort("#include \"c.h\"\n" + "#include \"b.h\"\n" + "#include \"GTest/GTest.h\"\n" + "#include \"llvm/A.h\"\n" + "#include \"gmock/gmock.h\"\n" + "#include \"llvm/X.h\"\n" + "#include \"LLVM/z.h\"\n", + "a_TEST.cc")); +} + TEST_F(SortIncludesTest, NegativePriorities) { Style.IncludeCategories = {{".*important_os_header.*", -1}, {".*", 1}}; EXPECT_EQ("#include \"important_os_header.h\"\n" |