# 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. """Presubmit script for FFmpeg repository. Does the following: - Warns users that changes must be submitted via Gerrit. - Warns users when a change is made without updating the README file. """ import re import subprocess def _WarnIfReadmeIsUnchanged(input_api, output_api): """Warn if the README file hasn't been updated with change notes.""" has_ffmpeg_changes = False chromium_re = re.compile(r'.*[/\\]?chromium.*|PRESUBMIT.py$|.*\.chromium$') readme_re = re.compile(r'.*[/\\]?chromium[/\\]patches[/\\]README$') for f in input_api.AffectedFiles(): if readme_re.match(f.LocalPath()): return [] if not has_ffmpeg_changes and not chromium_re.match(f.LocalPath()): has_ffmpeg_changes = True if not has_ffmpeg_changes: return [] return [output_api.PresubmitPromptWarning('\n'.join([ 'FFmpeg changes detected without any update to chromium/patches/README,', 'it\'s good practice to update this file with a note about your changes.' ]))] def _WarnIfGenerateGnTestsFail(input_api, output_api): """Error if generate_gn.py was changed and tests are now failing.""" should_run_tests = False generate_gn_re = re.compile(r'.*generate_gn.*\.py$') for f in input_api.AffectedFiles(): if generate_gn_re.match(f.LocalPath()): should_run_tests = True break; errors = [] if should_run_tests: errors += input_api.RunTests( input_api.canned_checks.GetUnitTests( input_api, output_api, ['chromium/scripts/generate_gn_unittest.py'])) return errors def CheckChangeOnUpload(input_api, output_api): results = [] results.extend(_WarnIfReadmeIsUnchanged(input_api, output_api)) results.extend(_WarnIfGenerateGnTestsFail(input_api, output_api)) return results