1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)# Copyright 2014 The Chromium Authors. All rights reserved.
2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be
3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)# found in the LICENSE file.
4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)import os
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)import sys
6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)def _CommonChecks(input_api, output_api):
8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  results = []
9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  # Importing ui actually brings tvcm into the path.
10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  import ui
11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  from tvcm import presubmit_checker
12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  checker = presubmit_checker.PresubmitChecker(input_api, output_api)
13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  results += checker.RunChecks()
14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return results
15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)def GetPathsToPrepend(input_api):
17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return [input_api.PresubmitLocalPath()]
18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)def RunWithPrependedPath(prepended_path, fn, *args):
20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  old_path = sys.path
21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  try:
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    sys.path = prepended_path + old_path
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    return fn(*args)
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  finally:
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    sys.path = old_path
27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)def CheckChangeOnUpload(input_api, output_api):
29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  def go():
30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    results = []
31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    results.extend(_CommonChecks(input_api, output_api))
32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    return results
33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return RunWithPrependedPath(GetPathsToPrepend(input_api), go)
34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)def CheckChangeOnCommit(input_api, output_api):
36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  def go():
37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    results = []
38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    results.extend(_CommonChecks(input_api, output_api))
39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    return results
40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return RunWithPrependedPath(GetPathsToPrepend(input_api), go)
41