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 |