Răsfoiți Sursa

Update PRESUBMIT to v2.0.0

Run unit tests only on commit since it's way too slow for upload. User
can still run tests on local machine via `git cl presubmit` or directly.

This CL reduces time it takes to upload from 2+ minutes to ~10s.

R=apolito@google.com

Fixed: 1263688
Change-Id: Id96c049296eea7c0a4d1e484dce6ae4296aa8041
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/3249192
Auto-Submit: Josip Sokcevic <sokcevic@google.com>
Commit-Queue: Anthony Polito <apolito@google.com>
Reviewed-by: Anthony Polito <apolito@google.com>
Josip Sokcevic 3 ani în urmă
părinte
comite
57c928cd95
1 a modificat fișierele cu 44 adăugiri și 46 ștergeri
  1. 44 46
      PRESUBMIT.py

+ 44 - 46
PRESUBMIT.py

@@ -8,6 +8,8 @@ See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts for
 details on the presubmit API built into depot_tools.
 """
 
+PRESUBMIT_VERSION = '2.0.0'
+
 import fnmatch
 import os
 import sys
@@ -35,8 +37,7 @@ $VerifiedPlatform linux-mips64 linux-mips64le linux-mipsle
 TEST_TIMEOUT_S = 330  # 5m 30s
 
 
-
-def DepotToolsPylint(input_api, output_api):
+def CheckPylint(input_api, output_api):
   """Gather all the pylint logic into one place to make it self-contained."""
   files_to_check = [
     r'^[^/]*\.py$',
@@ -59,36 +60,44 @@ def DepotToolsPylint(input_api, output_api):
     'R0401',  # Cyclic import
     'W0613',  # Unused argument
   ]
-  return input_api.canned_checks.GetPylint(
+  return input_api.RunTests(input_api.canned_checks.GetPylint(
       input_api,
       output_api,
       files_to_check=files_to_check,
       files_to_skip=files_to_skip,
-      disabled_warnings=disabled_warnings)
+      disabled_warnings=disabled_warnings))
 
 
-def CommonChecks(input_api, output_api, tests_to_skip_list):
-  input_api.SetTimeout(TEST_TIMEOUT_S)
-
+def CheckRecipes(input_api, output_api):
   file_filter = lambda x: x.LocalPath() == 'infra/config/recipes.cfg'
-  results = input_api.canned_checks.CheckJsonParses(input_api, output_api,
-                                                    file_filter=file_filter)
+  return input_api.canned_checks.CheckJsonParses(input_api, output_api,
+                                                 file_filter=file_filter)
 
+def CheckPythonVersion(input_api, output_api):
   # The tests here are assuming this is not defined, so raise an error
   # if it is.
   if 'USE_PYTHON3' in globals():
-    results.append(output_api.PresubmitError(
+    return [output_api.PresubmitError(
         'USE_PYTHON3 is defined; update the tests in //PRESUBMIT.py and '
-        '//tests/PRESUBMIT.py.'))
-  elif sys.version_info.major != 2:
-    results.append(output_api.PresubmitError(
-        'Did not use Python2 for //PRESUBMIT.py by default.'))
+        '//tests/PRESUBMIT.py.')]
+  if sys.version_info.major != 2:
+    return [output_api.PresubmitError(
+        'Did not use Python2 for //PRESUBMIT.py by default.')]
+  return []
+
 
-  results.extend(input_api.canned_checks.CheckJsonParses(
-      input_api, output_api))
+def CheckJsonFiles(input_api, output_api):
+  return input_api.canned_checks.CheckJsonParses(
+      input_api, output_api)
+
+
+def CheckUnitTestsOnCommit(input_api, output_api):
+  # Do not run integration tests on upload since they are way too slow.
+  input_api.SetTimeout(TEST_TIMEOUT_S)
 
   # Run only selected tests on Windows.
   test_to_run_list = [r'.*test\.py$']
+  tests_to_skip_list = []
   if input_api.platform.startswith(('cygwin', 'win32')):
     print('Warning: skipping most unit tests on Windows')
     tests_to_skip_list.extend([
@@ -101,16 +110,13 @@ def CommonChecks(input_api, output_api, tests_to_skip_list):
     ])
   tests_to_skip_list.append(r'.*my_activity_test\.py')
 
-  # TODO(maruel): Make sure at least one file is modified first.
-  # TODO(maruel): If only tests are modified, only run them.
-  tests = DepotToolsPylint(input_api, output_api)
-  tests.extend(input_api.canned_checks.GetUnitTestsInDirectory(
+  tests = input_api.canned_checks.GetUnitTestsInDirectory(
       input_api,
       output_api,
       'tests',
       files_to_check=test_to_run_list,
       files_to_skip=tests_to_skip_list,
-      run_on_python3=False))
+      run_on_python3=False)
 
   tests.extend(input_api.canned_checks.GetUnitTestsInDirectory(
       input_api,
@@ -119,6 +125,10 @@ def CommonChecks(input_api, output_api, tests_to_skip_list):
       files_to_check=[r'.*my_activity_test\.py'],
       run_on_python3=True))
 
+  return input_api.RunTests(tests)
+
+
+def CheckCIPDManifest(input_api, output_api):
   # Validate CIPD manifests.
   root = input_api.os_path.normpath(
     input_api.os_path.abspath(input_api.PresubmitLocalPath()))
@@ -135,6 +145,7 @@ def CommonChecks(input_api, output_api, tests_to_skip_list):
     include_deletes=False,
     file_filter=lambda x:
       input_api.os_path.normpath(x.AbsoluteLocalPath()) in cipd_manifests)
+  tests = []
   for path in affected_manifests:
     path = path.AbsoluteLocalPath()
     if path.endswith('.txt'):
@@ -149,30 +160,17 @@ def CommonChecks(input_api, output_api, tests_to_skip_list):
       tests.append(input_api.canned_checks.CheckCIPDClientDigests(
           input_api, output_api, client_version_file=path))
 
-  results.extend(input_api.RunTests(tests))
-  return results
+  return input_api.RunTests(tests)
 
 
-def CheckChangeOnUpload(input_api, output_api):
-  # Do not run integration tests on upload since they are way too slow.
-  tests_to_skip_list = [
-      r'^checkout_test\.py$',
-      r'^cipd_bootstrap_test\.py$',
-      r'^gclient_smoketest\.py$',
-  ]
-  results = []
-  results.extend(input_api.canned_checks.CheckOwners(
-      input_api, output_api, allow_tbr=False))
-  results.extend(input_api.canned_checks.CheckOwnersFormat(
-      input_api, output_api))
-  results.extend(CommonChecks(input_api, output_api, tests_to_skip_list))
-  return results
-
-
-def CheckChangeOnCommit(input_api, output_api):
-  output = []
-  output.extend(CommonChecks(input_api, output_api, []))
-  output.extend(input_api.canned_checks.CheckDoNotSubmit(
-      input_api,
-      output_api))
-  return output
+def CheckOwnersFormat(input_api, output_api):
+  return input_api.canned_checks.CheckOwnersFormat(input_api, output_api)
+
+
+def CheckOwnersOnUpload(input_api, output_api):
+  return input_api.canned_checks.CheckOwners(input_api, output_api,
+                                             allow_tbr=False)
+
+def CheckDoNotSubmitOnCommit(input_api, output_api):
+  return input_api.canned_checks.CheckDoNotSubmit(input_api, output_api)
+