| # 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 |