1# Copyright (c) 2012 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import subprocess
6
7def _CheckSphinxBuild(input_api, output_api):
8  """Check that the docs are buildable without any warnings.
9
10  This check runs sphinx-build with -W so that warning are errors.
11
12  However, since the trybots don't have sphinx installed, we'll treat a sphinx
13  failure as a warning. (Let's trust that the docs editors are testing locally.)
14  """
15
16  try:
17    subprocess.check_output(['make', 'presubmit', 'SPHINXOPTS=-Wa'],
18                            stderr=subprocess.STDOUT)
19  except subprocess.CalledProcessError as e:
20    return [output_api.PresubmitNotifyResult('sphinx_build failed:\n' +
21            e.output)]
22
23  return []
24
25
26def CommonChecks(input_api, output_api):
27  output = []
28  output.extend(_CheckSphinxBuild(input_api, output_api))
29  return output
30
31
32def CheckChangeOnUpload(input_api, output_api):
33  return CommonChecks(input_api, output_api)
34
35
36def CheckChangeOnCommit(input_api, output_api):
37  return CommonChecks(input_api, output_api)
38