| Index: tools/dom/PRESUBMIT.py | 
| diff --git a/tools/dom/PRESUBMIT.py b/tools/dom/PRESUBMIT.py | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..84ce19739a2b9d0b05c663c3fbfc3a3decb9178a | 
| --- /dev/null | 
| +++ b/tools/dom/PRESUBMIT.py | 
| @@ -0,0 +1,60 @@ | 
| +# 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 | 
|  |