Index: PRESUBMIT.py |
diff --git a/PRESUBMIT.py b/PRESUBMIT.py |
index 6232c191ba02e7e5b9839630066f1172bbdbf823..2096425b550b6b8ab421411da09f5d4fac812c3c 100644 |
--- a/PRESUBMIT.py |
+++ b/PRESUBMIT.py |
@@ -1,11 +1,11 @@ |
-# Copyright (c) 2010 The Chromium Authors. All rights reserved. |
+# Copyright (c) 2011 The Chromium Authors. All rights reserved. |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
"""Top-level presubmit script for depot tools. |
See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts for |
-details on the presubmit API built into gcl. |
+details on the presubmit API built into depot_tools. |
""" |
UNIT_TESTS = [ |
@@ -43,14 +43,68 @@ def CommonChecks(input_api, output_api): |
white_list = [r'.*\.py$', r'^git-try$'] |
black_list = list(input_api.DEFAULT_BLACK_LIST) + [ |
r'^cpplint\.py$', |
- r'^git_cl[\/\\]test[\/\\](local_)?rietveld.*', |
- r'^git_cl[\/\\]upload.*', |
+ r'^tests[\/\\]\w+?[\/\\].+', |
] |
output.extend(input_api.canned_checks.RunPylint( |
input_api, |
output_api, |
white_list=white_list, |
black_list=black_list)) |
+ output.extend(RunGitClTests(input_api, output_api)) |
+ return output |
+ |
+ |
+def RunGitClTests(input_api, output_api): |
+ """Run all the shells scripts in the directory test. |
+ """ |
+ # Not exposed from InputApi. |
+ from os import listdir |
+ |
+ # First loads a local Rietveld instance. |
+ import sys |
+ old_sys_path = sys.path |
+ try: |
+ sys.path = [input_api.PresubmitLocalPath()] + sys.path |
+ from tests import local_rietveld # pylint: disable=W0403 |
+ server = local_rietveld.LocalRietveld() |
+ finally: |
+ sys.path = old_sys_path |
+ |
+ # Set to True for testing. |
+ verbose = False |
+ if verbose: |
+ stdout = None |
+ stderr = None |
+ else: |
+ stdout = input_api.subprocess.PIPE |
+ stderr = input_api.subprocess.STDOUT |
+ output = [] |
+ try: |
+ # Start a local rietveld instance to test against. |
+ server.start_server() |
+ test_path = input_api.os_path.abspath( |
+ input_api.os_path.join(input_api.PresubmitLocalPath(), 'tests')) |
+ for test in listdir(test_path): |
+ # test-lib.sh is not an actual test so it should not be run. The other |
+ # tests are tests known to fail. |
+ DISABLED_TESTS = ( |
+ 'owners.sh', 'push-from-logs.sh', 'rename.sh', 'test-lib.sh') |
+ if test in DISABLED_TESTS or not test.endswith('.sh'): |
+ continue |
+ |
+ print('Running %s' % test) |
+ proc = input_api.subprocess.Popen( |
+ [input_api.os_path.join(test_path, test)], |
+ cwd=test_path, |
+ stdout=stdout, |
+ stderr=stderr) |
+ proc.communicate() |
+ if proc.returncode != 0: |
+ output.append(output_api.PresubmitError('%s failed' % test)) |
+ except local_rietveld.Failure, e: |
+ output.append(output_api.PresubmitError('\n'.join(str(i) for i in e.args))) |
+ finally: |
+ server.stop_server() |
return output |