Index: PRESUBMIT.py |
diff --git a/PRESUBMIT.py b/PRESUBMIT.py |
index 276db1e83b92d74b715347b5122c207c589bc3aa..46be5ff06f32cf30d5ba9c2bc0d0f92952d4f632 100755 |
--- a/PRESUBMIT.py |
+++ b/PRESUBMIT.py |
@@ -9,6 +9,7 @@ |
import json |
import os |
import re |
+import subprocess |
import sys |
@@ -84,6 +85,18 @@ LEGACY_API_DIRS = ( |
API_DIRS = NATIVE_API_DIRS[:] + LEGACY_API_DIRS[:] |
+def _RunCommand(command, cwd): |
+ """Runs a command and returns the output from that command.""" |
+ p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, |
+ cwd=cwd) |
+ stdout = p.stdout.read() |
+ stderr = p.stderr.read() |
+ p.wait() |
+ p.stdout.close() |
+ p.stderr.close() |
+ return p.returncode, stdout, stderr |
+ |
+ |
def _VerifyNativeApiHeadersListIsValid(input_api, output_api): |
"""Ensures the list of native API header directories is up to date.""" |
non_existing_paths = [] |
@@ -285,6 +298,19 @@ def _CheckNoMixingCAndCCSources(input_api, gn_files, output_api): |
items=violating_gn_files.keys())] |
return [] |
+def _CheckNoPackageBoundaryViolations(input_api, gn_files, output_api): |
+ cwd = input_api.PresubmitLocalPath() |
+ script_path = os.path.join('tools-webrtc', 'check_package_boundaries.py') |
+ webrtc_path = os.path.join('webrtc') |
+ command = [sys.executable, script_path, webrtc_path] |
+ command += [gn_file.LocalPath() for gn_file in gn_files] |
+ returncode, _, stderr = _RunCommand(command, cwd) |
+ if returncode: |
+ return [output_api.PresubmitError( |
+ 'There are package boundary violations in the following GN files:\n\n' |
+ '%s' % stderr)] |
+ return [] |
+ |
def _CheckGnChanges(input_api, output_api): |
source_file_filter = lambda x: input_api.FilterSourceFile( |
x, white_list=(r'.+\.(gn|gni)$',)) |
@@ -298,6 +324,8 @@ def _CheckGnChanges(input_api, output_api): |
if gn_files: |
result.extend(_CheckNoSourcesAbove(input_api, gn_files, output_api)) |
result.extend(_CheckNoMixingCAndCCSources(input_api, gn_files, output_api)) |
+ result.extend(_CheckNoPackageBoundaryViolations( |
+ input_api, gn_files, output_api)) |
return result |
def _CheckUnwantedDependencies(input_api, output_api): |
@@ -405,8 +433,10 @@ def _RunPythonTests(input_api, output_api): |
return input_api.os_path.join(input_api.PresubmitLocalPath(), *args) |
test_directories = [ |
- join('tools-webrtc', 'autoroller', 'unittests'), |
- join('webrtc', 'tools', 'py_event_log_analyzer'), |
+ join('webrtc', 'tools', 'py_event_log_analyzer') |
+ ] + [ |
+ root for root, _, files in os.walk(join('tools-webrtc')) |
+ if any(f.endswith('_test.py') for f in files) |
] |
tests = [] |