12da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# Copyright (c) 2012 The Chromium Authors. All rights reserved. 22da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# Use of this source code is governed by a BSD-style license that can be 32da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# found in the LICENSE file. 488448d9ae4dfff1805045790ef5f32495d62abccJeff Brown 52da489cd246702bee5938545b18a6f710ed214bcJamie Gennisimport os 666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 72da489cd246702bee5938545b18a6f710ed214bcJamie Gennis_EXCLUDED_PATHS = [] 82da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 988448d9ae4dfff1805045790ef5f32495d62abccJeff Brown_LICENSE_HEADER = ( 1088448d9ae4dfff1805045790ef5f32495d62abccJeff Brown r".*? Copyright \(c\) 20\d\d The Chromium Authors\. All rights reserved\." 1188448d9ae4dfff1805045790ef5f32495d62abccJeff Brown "\n" 1288448d9ae4dfff1805045790ef5f32495d62abccJeff Brown r".*? Use of this source code is governed by a BSD-style license that can " 1388448d9ae4dfff1805045790ef5f32495d62abccJeff Brown "be\n" 1488448d9ae4dfff1805045790ef5f32495d62abccJeff Brown r".*? found in the LICENSE file\." 1588448d9ae4dfff1805045790ef5f32495d62abccJeff Brown "\n" 1688448d9ae4dfff1805045790ef5f32495d62abccJeff Brown) 1788448d9ae4dfff1805045790ef5f32495d62abccJeff Brown 186833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis 192da489cd246702bee5938545b18a6f710ed214bcJamie Gennisdef _CommonChecks(input_api, output_api): 202da489cd246702bee5938545b18a6f710ed214bcJamie Gennis results = [] 212da489cd246702bee5938545b18a6f710ed214bcJamie Gennis results.extend(input_api.canned_checks.PanProjectChecks( 222da489cd246702bee5938545b18a6f710ed214bcJamie Gennis input_api, output_api, excluded_paths=_EXCLUDED_PATHS)) 232da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 242da489cd246702bee5938545b18a6f710ed214bcJamie Gennis src_dir = os.path.join(input_api.change.RepositoryRoot(), "src") 252da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 262da489cd246702bee5938545b18a6f710ed214bcJamie Gennis def IsResource(maybe_resource): 272da489cd246702bee5938545b18a6f710ed214bcJamie Gennis f = maybe_resource.AbsoluteLocalPath() 282da489cd246702bee5938545b18a6f710ed214bcJamie Gennis if not f.endswith(('.css', '.html', '.js')): 292da489cd246702bee5938545b18a6f710ed214bcJamie Gennis return False 302da489cd246702bee5938545b18a6f710ed214bcJamie Gennis return True 312da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 326833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis from web_dev_style import css_checker, js_checker 332da489cd246702bee5938545b18a6f710ed214bcJamie Gennis results.extend(css_checker.CSSChecker(input_api, output_api, 342da489cd246702bee5938545b18a6f710ed214bcJamie Gennis file_filter=IsResource).RunChecks()) 352da489cd246702bee5938545b18a6f710ed214bcJamie Gennis results.extend(js_checker.JSChecker(input_api, output_api, 362da489cd246702bee5938545b18a6f710ed214bcJamie Gennis file_filter=IsResource).RunChecks()) 372da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 3866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis from build import check_gyp 3966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis gyp_result = check_gyp.GypCheck() 4066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis if len(gyp_result) > 0: 4166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis results.extend([output_api.PresubmitError(gyp_result)]) 4266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 436833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis from build import check_grit 446833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis grit_result = check_grit.GritCheck() 456833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis if len(grit_result) > 0: 466833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis results.extend([output_api.PresubmitError(grit_result)]) 476833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis 4888448d9ae4dfff1805045790ef5f32495d62abccJeff Brown black_list = input_api.DEFAULT_BLACK_LIST 4988448d9ae4dfff1805045790ef5f32495d62abccJeff Brown sources = lambda x: input_api.FilterSourceFile(x, black_list=black_list) 5088448d9ae4dfff1805045790ef5f32495d62abccJeff Brown results.extend(input_api.canned_checks.CheckLicense( 5188448d9ae4dfff1805045790ef5f32495d62abccJeff Brown input_api, output_api, _LICENSE_HEADER, 5288448d9ae4dfff1805045790ef5f32495d62abccJeff Brown source_file_filter=sources)) 532da489cd246702bee5938545b18a6f710ed214bcJamie Gennis return results 542da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 556833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis 562da489cd246702bee5938545b18a6f710ed214bcJamie Gennisdef GetPathsToPrepend(input_api): 572da489cd246702bee5938545b18a6f710ed214bcJamie Gennis web_dev_style_path = input_api.os_path.join( 582da489cd246702bee5938545b18a6f710ed214bcJamie Gennis input_api.change.RepositoryRoot(), 592da489cd246702bee5938545b18a6f710ed214bcJamie Gennis "third_party", 602da489cd246702bee5938545b18a6f710ed214bcJamie Gennis "web_dev_style") 612da489cd246702bee5938545b18a6f710ed214bcJamie Gennis return [input_api.PresubmitLocalPath(), web_dev_style_path] 622da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 636833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis 642da489cd246702bee5938545b18a6f710ed214bcJamie Gennisdef RunWithPrependedPath(prepended_path, fn, *args): 652da489cd246702bee5938545b18a6f710ed214bcJamie Gennis import sys 662da489cd246702bee5938545b18a6f710ed214bcJamie Gennis old_path = sys.path 672da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 682da489cd246702bee5938545b18a6f710ed214bcJamie Gennis try: 692da489cd246702bee5938545b18a6f710ed214bcJamie Gennis sys.path = prepended_path + old_path 702da489cd246702bee5938545b18a6f710ed214bcJamie Gennis return fn(*args) 712da489cd246702bee5938545b18a6f710ed214bcJamie Gennis finally: 722da489cd246702bee5938545b18a6f710ed214bcJamie Gennis sys.path = old_path 732da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 746833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis 752da489cd246702bee5938545b18a6f710ed214bcJamie Gennisdef CheckChangeOnUpload(input_api, output_api): 762da489cd246702bee5938545b18a6f710ed214bcJamie Gennis def go(): 772da489cd246702bee5938545b18a6f710ed214bcJamie Gennis results = [] 782da489cd246702bee5938545b18a6f710ed214bcJamie Gennis results.extend(_CommonChecks(input_api, output_api)) 792da489cd246702bee5938545b18a6f710ed214bcJamie Gennis return results 802da489cd246702bee5938545b18a6f710ed214bcJamie Gennis return RunWithPrependedPath(GetPathsToPrepend(input_api), go) 812da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 826833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis 832da489cd246702bee5938545b18a6f710ed214bcJamie Gennisdef CheckChangeOnCommit(input_api, output_api): 842da489cd246702bee5938545b18a6f710ed214bcJamie Gennis def go(): 852da489cd246702bee5938545b18a6f710ed214bcJamie Gennis results = [] 862da489cd246702bee5938545b18a6f710ed214bcJamie Gennis results.extend(_CommonChecks(input_api, output_api)) 872da489cd246702bee5938545b18a6f710ed214bcJamie Gennis return results 882da489cd246702bee5938545b18a6f710ed214bcJamie Gennis return RunWithPrependedPath(GetPathsToPrepend(input_api), go) 89