| OLD | NEW |
| 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 """Top-level presubmit script for Chromium. | 5 """Top-level presubmit script for Chromium. |
| 6 | 6 |
| 7 See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts | 7 See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts |
| 8 for more details about the presubmit API built into gcl. | 8 for more details about the presubmit API built into gcl. |
| 9 """ | 9 """ |
| 10 | 10 |
| (...skipping 24 matching lines...) Expand all Loading... |
| 35 r"^content[\\\/]shell[\\\/]tools[\\\/]plugin[\\\/].*", | 35 r"^content[\\\/]shell[\\\/]tools[\\\/]plugin[\\\/].*", |
| 36 ) | 36 ) |
| 37 | 37 |
| 38 # Fragment of a regular expression that matches C++ and Objective-C++ | 38 # Fragment of a regular expression that matches C++ and Objective-C++ |
| 39 # implementation files. | 39 # implementation files. |
| 40 _IMPLEMENTATION_EXTENSIONS = r'\.(cc|cpp|cxx|mm)$' | 40 _IMPLEMENTATION_EXTENSIONS = r'\.(cc|cpp|cxx|mm)$' |
| 41 | 41 |
| 42 # Regular expression that matches code only used for test binaries | 42 # Regular expression that matches code only used for test binaries |
| 43 # (best effort). | 43 # (best effort). |
| 44 _TEST_CODE_EXCLUDED_PATHS = ( | 44 _TEST_CODE_EXCLUDED_PATHS = ( |
| 45 r'.*[/\\](fake_|test_|mock_).+%s' % _IMPLEMENTATION_EXTENSIONS, | 45 r'.*[\\\/](fake_|test_|mock_).+%s' % _IMPLEMENTATION_EXTENSIONS, |
| 46 r'.+_test_(base|support|util)%s' % _IMPLEMENTATION_EXTENSIONS, | 46 r'.+_test_(base|support|util)%s' % _IMPLEMENTATION_EXTENSIONS, |
| 47 r'.+_(api|browser|kif|perf|pixel|unit|ui)?test(_[a-z]+)?%s' % | 47 r'.+_(api|browser|kif|perf|pixel|unit|ui)?test(_[a-z]+)?%s' % |
| 48 _IMPLEMENTATION_EXTENSIONS, | 48 _IMPLEMENTATION_EXTENSIONS, |
| 49 r'.+profile_sync_service_harness%s' % _IMPLEMENTATION_EXTENSIONS, | 49 r'.+profile_sync_service_harness%s' % _IMPLEMENTATION_EXTENSIONS, |
| 50 r'.*[/\\](test|tool(s)?)[/\\].*', | 50 r'.*[\\\/](test|tool(s)?)[\\\/].*', |
| 51 # content_shell is used for running layout tests. | 51 # content_shell is used for running layout tests. |
| 52 r'content[/\\]shell[/\\].*', | 52 r'content[\\\/]shell[\\\/].*', |
| 53 # At request of folks maintaining this folder. | 53 # At request of folks maintaining this folder. |
| 54 r'chrome[/\\]browser[/\\]automation[/\\].*', | 54 r'chrome[\\\/]browser[\\\/]automation[\\\/].*', |
| 55 # Non-production example code. | 55 # Non-production example code. |
| 56 r'mojo[/\\]examples[/\\].*', | 56 r'mojo[\\\/]examples[\\\/].*', |
| 57 # Launcher for running iOS tests on the simulator. | 57 # Launcher for running iOS tests on the simulator. |
| 58 r'testing[/\\]iossim[/\\]iossim\.mm$', | 58 r'testing[\\\/]iossim[\\\/]iossim\.mm$', |
| 59 ) | 59 ) |
| 60 | 60 |
| 61 _TEST_ONLY_WARNING = ( | 61 _TEST_ONLY_WARNING = ( |
| 62 'You might be calling functions intended only for testing from\n' | 62 'You might be calling functions intended only for testing from\n' |
| 63 'production code. It is OK to ignore this warning if you know what\n' | 63 'production code. It is OK to ignore this warning if you know what\n' |
| 64 'you are doing, as the heuristics used to detect the situation are\n' | 64 'you are doing, as the heuristics used to detect the situation are\n' |
| 65 'not perfect. The commit queue will not block on this warning.') | 65 'not perfect. The commit queue will not block on this warning.') |
| 66 | 66 |
| 67 | 67 |
| 68 _INCLUDE_ORDER_WARNING = ( | 68 _INCLUDE_ORDER_WARNING = ( |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 238 ), | 238 ), |
| 239 ), | 239 ), |
| 240 ( | 240 ( |
| 241 r'/v8::Extension\(', | 241 r'/v8::Extension\(', |
| 242 ( | 242 ( |
| 243 'Do not introduce new v8::Extensions into the code base, use', | 243 'Do not introduce new v8::Extensions into the code base, use', |
| 244 'gin::Wrappable instead. See http://crbug.com/334679', | 244 'gin::Wrappable instead. See http://crbug.com/334679', |
| 245 ), | 245 ), |
| 246 True, | 246 True, |
| 247 ( | 247 ( |
| 248 r'extensions[/\\]renderer[/\\]safe_builtins\.*', | 248 r'extensions[\\\/]renderer[\\\/]safe_builtins\.*', |
| 249 ), | 249 ), |
| 250 ), | 250 ), |
| 251 ) | 251 ) |
| 252 | 252 |
| 253 | 253 |
| 254 _VALID_OS_MACROS = ( | 254 _VALID_OS_MACROS = ( |
| 255 # Please keep sorted. | 255 # Please keep sorted. |
| 256 'OS_ANDROID', | 256 'OS_ANDROID', |
| 257 'OS_ANDROID_HOST', | 257 'OS_ANDROID_HOST', |
| 258 'OS_BSD', | 258 'OS_BSD', |
| (...skipping 852 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1111 | 1111 |
| 1112 | 1112 |
| 1113 def _CheckParseErrors(input_api, output_api): | 1113 def _CheckParseErrors(input_api, output_api): |
| 1114 """Check that IDL and JSON files do not contain syntax errors.""" | 1114 """Check that IDL and JSON files do not contain syntax errors.""" |
| 1115 actions = { | 1115 actions = { |
| 1116 '.idl': _GetIDLParseError, | 1116 '.idl': _GetIDLParseError, |
| 1117 '.json': _GetJSONParseError, | 1117 '.json': _GetJSONParseError, |
| 1118 } | 1118 } |
| 1119 # These paths contain test data and other known invalid JSON files. | 1119 # These paths contain test data and other known invalid JSON files. |
| 1120 excluded_patterns = [ | 1120 excluded_patterns = [ |
| 1121 'test/data/', | 1121 r'test[\\\/]data[\\\/]', |
| 1122 '^components/policy/resources/policy_templates.json$', | 1122 r'^components[\\\/]policy[\\\/]resources[\\\/]policy_templates\.json$', |
| 1123 ] | 1123 ] |
| 1124 # Most JSON files are preprocessed and support comments, but these do not. | 1124 # Most JSON files are preprocessed and support comments, but these do not. |
| 1125 json_no_comments_patterns = [ | 1125 json_no_comments_patterns = [ |
| 1126 '^testing/', | 1126 r'^testing[\\\/]', |
| 1127 ] | 1127 ] |
| 1128 # Only run IDL checker on files in these directories. | 1128 # Only run IDL checker on files in these directories. |
| 1129 idl_included_patterns = [ | 1129 idl_included_patterns = [ |
| 1130 '^chrome/common/extensions/api/', | 1130 r'^chrome[\\\/]common[\\\/]extensions[\\\/]api[\\\/]', |
| 1131 '^extensions/common/api/', | 1131 r'^extensions[\\\/]common[\\\/]api[\\\/]', |
| 1132 ] | 1132 ] |
| 1133 | 1133 |
| 1134 def get_action(affected_file): | 1134 def get_action(affected_file): |
| 1135 filename = affected_file.LocalPath() | 1135 filename = affected_file.LocalPath() |
| 1136 return actions.get(input_api.os_path.splitext(filename)[1]) | 1136 return actions.get(input_api.os_path.splitext(filename)[1]) |
| 1137 | 1137 |
| 1138 def MatchesFile(patterns, path): | 1138 def MatchesFile(patterns, path): |
| 1139 for pattern in patterns: | 1139 for pattern in patterns: |
| 1140 if input_api.re.search(pattern, path): | 1140 if input_api.re.search(pattern, path): |
| 1141 return True | 1141 return True |
| (...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1519 results.extend(input_api.canned_checks.CheckChangeHasBugField( | 1519 results.extend(input_api.canned_checks.CheckChangeHasBugField( |
| 1520 input_api, output_api)) | 1520 input_api, output_api)) |
| 1521 results.extend(input_api.canned_checks.CheckChangeHasDescription( | 1521 results.extend(input_api.canned_checks.CheckChangeHasDescription( |
| 1522 input_api, output_api)) | 1522 input_api, output_api)) |
| 1523 return results | 1523 return results |
| 1524 | 1524 |
| 1525 | 1525 |
| 1526 def GetPreferredTryMasters(project, change): | 1526 def GetPreferredTryMasters(project, change): |
| 1527 files = change.LocalPaths() | 1527 files = change.LocalPaths() |
| 1528 | 1528 |
| 1529 if not files or all(re.search(r'[\\/]OWNERS$', f) for f in files): | 1529 if not files or all(re.search(r'[\\\/]OWNERS$', f) for f in files): |
| 1530 return {} | 1530 return {} |
| 1531 | 1531 |
| 1532 if all(re.search('\.(m|mm)$|(^|[/_])mac[/_.]', f) for f in files): | 1532 if all(re.search(r'\.(m|mm)$|(^|[\\\/_])mac[\\\/_.]', f) for f in files): |
| 1533 return GetDefaultTryConfigs([ | 1533 return GetDefaultTryConfigs([ |
| 1534 'mac_chromium_compile_dbg', | 1534 'mac_chromium_compile_dbg', |
| 1535 'mac_chromium_rel_swarming', | 1535 'mac_chromium_rel_swarming', |
| 1536 ]) | 1536 ]) |
| 1537 if all(re.search('(^|[/_])win[/_.]', f) for f in files): | 1537 if all(re.search('(^|[/_])win[/_.]', f) for f in files): |
| 1538 return GetDefaultTryConfigs([ | 1538 return GetDefaultTryConfigs([ |
| 1539 'win_chromium_dbg', | 1539 'win_chromium_dbg', |
| 1540 'win_chromium_rel_swarming', | 1540 'win_chromium_rel_swarming', |
| 1541 ]) | 1541 ]) |
| 1542 if all(re.search('(^|[/_])android[/_.]', f) for f in files): | 1542 if all(re.search(r'(^|[\\\/_])android[\\\/_.]', f) for f in files): |
| 1543 return GetDefaultTryConfigs([ | 1543 return GetDefaultTryConfigs([ |
| 1544 'android_aosp', | 1544 'android_aosp', |
| 1545 'android_clang_dbg', | 1545 'android_clang_dbg', |
| 1546 'android_dbg_tests_recipe', | 1546 'android_dbg_tests_recipe', |
| 1547 ]) | 1547 ]) |
| 1548 if all(re.search('[/_]ios[/_.]', f) for f in files): | 1548 if all(re.search(r'[\\\/_]ios[\\\/_.]', f) for f in files): |
| 1549 return GetDefaultTryConfigs(['ios_rel_device', 'ios_dbg_simulator']) | 1549 return GetDefaultTryConfigs(['ios_rel_device', 'ios_dbg_simulator']) |
| 1550 | 1550 |
| 1551 builders = [ | 1551 builders = [ |
| 1552 'android_chromium_gn_compile_rel', | 1552 'android_chromium_gn_compile_rel', |
| 1553 'android_clang_dbg', | 1553 'android_clang_dbg', |
| 1554 'android_dbg_tests_recipe', | 1554 'android_dbg_tests_recipe', |
| 1555 'ios_dbg_simulator', | 1555 'ios_dbg_simulator', |
| 1556 'ios_rel_device', | 1556 'ios_rel_device', |
| 1557 'linux_chromium_chromeos_rel_swarming', | 1557 'linux_chromium_chromeos_rel_swarming', |
| 1558 'linux_chromium_clang_dbg', | 1558 'linux_chromium_clang_dbg', |
| 1559 'linux_chromium_gn_rel', | 1559 'linux_chromium_gn_rel', |
| 1560 'linux_chromium_rel_swarming', | 1560 'linux_chromium_rel_swarming', |
| 1561 'linux_gpu', | 1561 'linux_gpu', |
| 1562 'mac_chromium_compile_dbg', | 1562 'mac_chromium_compile_dbg', |
| 1563 'mac_chromium_rel_swarming', | 1563 'mac_chromium_rel_swarming', |
| 1564 'mac_gpu', | 1564 'mac_gpu', |
| 1565 'win_chromium_compile_dbg', | 1565 'win_chromium_compile_dbg', |
| 1566 'win_chromium_rel_swarming', | 1566 'win_chromium_rel_swarming', |
| 1567 'win_chromium_x64_rel_swarming', | 1567 'win_chromium_x64_rel_swarming', |
| 1568 'win_gpu', | 1568 'win_gpu', |
| 1569 ] | 1569 ] |
| 1570 | 1570 |
| 1571 # Match things like path/aura/file.cc and path/file_aura.cc. | 1571 # Match things like path/aura/file.cc and path/file_aura.cc. |
| 1572 # Same for chromeos. | 1572 # Same for chromeos. |
| 1573 if any(re.search('[/_](aura|chromeos)', f) for f in files): | 1573 if any(re.search(r'[\\\/_](aura|chromeos)', f) for f in files): |
| 1574 builders.extend([ | 1574 builders.extend([ |
| 1575 'linux_chromeos_asan', | 1575 'linux_chromeos_asan', |
| 1576 'linux_chromium_chromeos_clang_dbg' | 1576 'linux_chromium_chromeos_clang_dbg' |
| 1577 ]) | 1577 ]) |
| 1578 | 1578 |
| 1579 # If there are gyp changes to base, build, or chromeos, run a full cros build | 1579 # If there are gyp changes to base, build, or chromeos, run a full cros build |
| 1580 # in addition to the shorter linux_chromeos build. Changes to high level gyp | 1580 # in addition to the shorter linux_chromeos build. Changes to high level gyp |
| 1581 # files have a much higher chance of breaking the cros build, which is | 1581 # files have a much higher chance of breaking the cros build, which is |
| 1582 # differnt from the linux_chromeos build that most chrome developers test | 1582 # differnt from the linux_chromeos build that most chrome developers test |
| 1583 # with. | 1583 # with. |
| 1584 if any(re.search('^(base|build|chromeos).*\.gypi?$', f) for f in files): | 1584 if any(re.search('^(base|build|chromeos).*\.gypi?$', f) for f in files): |
| 1585 builders.extend(['cros_x86']) | 1585 builders.extend(['cros_x86']) |
| 1586 | 1586 |
| 1587 # The AOSP bot doesn't build the chrome/ layer, so ignore any changes to it | 1587 # The AOSP bot doesn't build the chrome/ layer, so ignore any changes to it |
| 1588 # unless they're .gyp(i) files as changes to those files can break the gyp | 1588 # unless they're .gyp(i) files as changes to those files can break the gyp |
| 1589 # step on that bot. | 1589 # step on that bot. |
| 1590 if (not all(re.search('^chrome', f) for f in files) or | 1590 if (not all(re.search('^chrome', f) for f in files) or |
| 1591 any(re.search('\.gypi?$', f) for f in files)): | 1591 any(re.search('\.gypi?$', f) for f in files)): |
| 1592 builders.extend(['android_aosp']) | 1592 builders.extend(['android_aosp']) |
| 1593 | 1593 |
| 1594 return GetDefaultTryConfigs(builders) | 1594 return GetDefaultTryConfigs(builders) |
| OLD | NEW |