New approach for timing lower-level checks

Use input_api.version and PRESUBMIT_VERSION to ensure newest versions.

Enable presubmit_support to time/ResultDB wrap each individual
lower-level check in PRESUBMIT.py. The approach taken here is to have
the PRESUBMIT_VERSION = 2.0.0 in PRESUBMIT.py
so that presubmit_support is aware of the new version of PRESUBMIT.py,
then check input_api.version in CheckChangeOnCommit/Upload to ensure
that presubmit_support itself is the new version.


Once these changes are landed, the associated changes in PRESUBMIT.py
(crrev.com/c/2350234) can landed as well.


Change-Id: If6d5e318547bc4f128ffe151387c4dc339ef5dc8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/2349979
Commit-Queue: Saagar Sanghavi <saagarsanghavi@google.com>
Reviewed-by: Dirk Pranke <dpranke@google.com>
diff --git a/presubmit_support.py b/presubmit_support.py
index 7ef84d1..53ed9c5 100755
--- a/presubmit_support.py
+++ b/presubmit_support.py
@@ -8,7 +8,7 @@
 
 from __future__ import print_function
 
-__version__ = '1.8.0'
+__version__ = '2.0.0'
 
 # TODO(joi) Add caching where appropriate/needed. The API is designed to allow
 # caching (between all different invocations of presubmit scripts for a given
@@ -1543,11 +1543,6 @@
     output_api = OutputApi(self.committing)
     context = {}
 
-    PRESUBMIT_VERSION = [0]
-    def REQUIRE_PRESUBMIT_VERSION(num):
-      PRESUBMIT_VERSION[0] = num
-
-    context['REQUIRE_PRESUBMIT_VERSION'] = REQUIRE_PRESUBMIT_VERSION
     try:
       exec(compile(script_text, 'PRESUBMIT.py', 'exec', dont_inherit=True),
            context)
@@ -1575,7 +1570,8 @@
     results = []
 
     try:
-      if PRESUBMIT_VERSION[0] > 0:
+      if 'PRESUBMIT_VERSION' in context and \
+        [int(x) for x in context['PRESUBMIT_VERSION'].split('.')] >= [2, 0, 0]:
         for function_name in context:
           if not function_name.startswith('Check'):
             continue