1# Copyright 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.
4import os
5import sys
6
7PYLINT_BLACKLIST = []
8PYLINT_DISABLED_WARNINGS = ['R0923', 'R0201', 'E1101']
9
10def _CommonChecks(input_api, output_api):
11  results = []
12
13  # TODO(nduca): This should call update_docs.IsUpdateDocsNeeded().
14  # Disabled due to crbug.com/255326.
15  if False:
16    update_docs_path = os.path.join(
17      input_api.PresubmitLocalPath(), 'update_docs')
18    assert os.path.exists(update_docs_path)
19    results.append(output_api.PresubmitError(
20      'Docs are stale. Please run:\n' +
21      '$ %s' % os.path.abspath(update_docs_path)))
22
23  # Importing telemetry.web_components actually brings tvcm into the path.
24  import telemetry.web_components # pylint: disable=W0612
25  from tvcm import presubmit_checker
26  checker = presubmit_checker.PresubmitChecker(input_api, output_api)
27  results += checker.RunChecks()
28
29  results.extend(input_api.canned_checks.RunPylint(
30        input_api, output_api,
31        black_list=PYLINT_BLACKLIST,
32        disabled_warnings=PYLINT_DISABLED_WARNINGS))
33  return results
34
35def GetPathsToPrepend(input_api):
36  return [input_api.PresubmitLocalPath()]
37
38def RunWithPrependedPath(prepended_path, fn, *args):
39  old_path = sys.path
40
41  try:
42    sys.path = prepended_path + old_path
43    return fn(*args)
44  finally:
45    sys.path = old_path
46
47def CheckChangeOnUpload(input_api, output_api):
48  def go():
49    results = []
50    results.extend(_CommonChecks(input_api, output_api))
51    return results
52  return RunWithPrependedPath(GetPathsToPrepend(input_api), go)
53
54def CheckChangeOnCommit(input_api, output_api):
55  def go():
56    results = []
57    results.extend(_CommonChecks(input_api, output_api))
58    return results
59  return RunWithPrependedPath(GetPathsToPrepend(input_api), go)
60