# Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file # for details. All rights reserved. Use of this source code is governed by a # BSD-style license that can be found in the LICENSE file. """ Presubmit tests for dom tools. This file is run by git_cl or gcl when an upload or submit happens with any files at this level or lower are in the change list. See: http://www.chromium.org/developers/how-tos/depottools/presubmit-scripts """ import os def _AnySdkFiles(input_api): """ Returns true if any of the changed files are in the sdk, meaning we should check that docs.dart was run. """ for f in input_api.change.AffectedFiles(): if f.LocalPath().find('sdk') > -1: return True return False def CheckChangeOnUpload(input_api, output_api): results = [] # TODO(amouravski): uncomment this check once docs.dart is faster. # if _AnySdkFiles(input_api): # results.extend(CheckDocs(input_api, output_api)) return results def CheckChangeOnCommit(input_api, output_api): results = [] if _AnySdkFiles(input_api): results.extend(CheckDocs(input_api, output_api)) return results def CheckDocs(input_api, output_api): """Ensure that documentation has been generated if it needs to be generated. Prompts with a warning if documentation needs to be generated. """ results = [] cmd = [os.path.join(input_api.PresubmitLocalPath(), 'dom.py'), 'test_docs'] try: input_api.subprocess.check_output(cmd, stderr=input_api.subprocess.STDOUT) except (OSError, input_api.subprocess.CalledProcessError), e: results.append(output_api.PresubmitPromptWarning( ('Docs test failed!%s\nYou should run `dom.py docs`' % ( e if input_api.verbose else '')))) return results