Move git_cl back into depot_tools.

Remove git_cl_hooks.py since it's now unnecessary.

BUG=
TEST=

Review URL: http://codereview.chromium.org/6758001

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@79715 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index 6232c19..2096425 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 @@
   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