# Copyright (c) 2012 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. """Enforces json format. See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts for more details on the presubmit API built into depot_tools. """ PRESUBMIT_VERSION = '2.0.0' USE_PYTHON3 = True _IGNORE_FREEZE_FOOTER = 'Ignore-Freeze' # The time module's handling of timezones is abysmal, so the boundaries are # precomputed in UNIX time _FREEZE_START = 1639641600 # 2021/12/16 00:00 -0800 _FREEZE_END = 1641196800 # 2022/01/03 00:00 -0800 def CheckFreeze(input_api, output_api): if _FREEZE_START <= input_api.time.time() < _FREEZE_END: footers = input_api.change.GitFootersFromDescription() if _IGNORE_FREEZE_FOOTER not in footers: def convert(t): ts = input_api.time.localtime(t) return input_api.time.strftime('%Y/%m/%d %H:%M %z', ts) return [ output_api.PresubmitError( 'There is a prod freeze in effect from {} until {},' ' files in //testing/buildbot cannot be modified'.format( convert(_FREEZE_START), convert(_FREEZE_END))) ] return [] def CheckSourceSideSpecs(input_api, output_api): return input_api.RunTests([ input_api.Command(name='check source side specs', cmd=[ input_api.python3_executable, 'generate_buildbot_json.py', '--check', '--verbose' ], kwargs={}, message=output_api.PresubmitError), ]) def CheckTests(input_api, output_api): glob = input_api.os_path.join(input_api.PresubmitLocalPath(), '*test.py') tests = input_api.canned_checks.GetUnitTests(input_api, output_api, input_api.glob(glob), run_on_python2=False, run_on_python3=True, skip_shebang_check=True) return input_api.RunTests(tests) def CheckManageJsonFiles(input_api, output_api): return input_api.RunTests([ input_api.Command( name='manage JSON files', cmd=[input_api.python3_executable, 'manage.py', '--check'], kwargs={}, message=output_api.PresubmitError), ])