Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(102)

Unified Diff: PRESUBMIT.py

Issue 2629723004: Add presubmit check to prevent package boundary violations. (Closed)
Patch Set: Sort lists before comparing. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tools-webrtc/check_package_boundaries.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 = []
« no previous file with comments | « no previous file | tools-webrtc/check_package_boundaries.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698