Index: PRESUBMIT.py |
diff --git a/PRESUBMIT.py b/PRESUBMIT.py |
index 632833ff58208975fe7be25d373e39828cb1a931..701fd21f3e813717d22de1ea983952365ad6abbf 100644 |
--- a/PRESUBMIT.py |
+++ b/PRESUBMIT.py |
@@ -578,6 +578,10 @@ def _CheckIncludeOrderInFile(input_api, f, changed_linenums): |
excluded_include_pattern = input_api.re.compile( |
r'\s*#include (\<.*/.*|\<atlbase\.h\>|"build/build_config.h")') |
custom_include_pattern = input_api.re.compile(r'\s*#include "(?P<FILE>.*)"') |
+ # Match the final or penultimate token if it is xxxtest so we can ignore it |
+ # when considering the special first include. |
+ test_file_tag_pattern = input_api.re.compile( |
+ r'_[a-z]+test(?=(_[a-zA-Z0-9]+)?\.)') |
if_pattern = input_api.re.compile( |
r'\s*#\s*(if|elif|else|endif|define|undef).*') |
# Some files need specialized order of includes; exclude such files from this |
@@ -594,6 +598,11 @@ def _CheckIncludeOrderInFile(input_api, f, changed_linenums): |
# some/path/file.h, the corresponding including file can be some/path/file.cc, |
# some/other/path/file.cc, some/path/file_platform.cc, some/path/file-suffix.h |
# etc. It's also possible that no special first include exists. |
+ # If the included file is some/path/file_platform.h the including file could |
+ # also be some/path/file_xxxtest_platform.h. |
+ including_file_base_name = test_file_tag_pattern.sub( |
+ '', input_api.os_path.basename(f.LocalPath())) |
+ |
for line in contents: |
line_num += 1 |
if system_include_pattern.match(line): |
@@ -604,9 +613,10 @@ def _CheckIncludeOrderInFile(input_api, f, changed_linenums): |
match = custom_include_pattern.match(line) |
if match: |
match_dict = match.groupdict() |
- header_basename = input_api.os_path.basename( |
- match_dict['FILE']).replace('.h', '') |
- if header_basename not in input_api.os_path.basename(f.LocalPath()): |
+ header_basename = test_file_tag_pattern.sub( |
+ '', input_api.os_path.basename(match_dict['FILE'])).replace('.h', '') |
+ |
+ if header_basename not in including_file_base_name: |
# No special first include -> process the line again along with normal |
# includes. |
line_num -= 1 |