OLD | NEW |
1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 """Chromium presubmit script for third_party/polymer. | 5 """Chromium presubmit script for third_party/polymer. |
6 | 6 |
7 See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts | 7 See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts |
8 for more details on the presubmit API built into depot_tools. | 8 for more details on the presubmit API built into depot_tools. |
9 """ | 9 """ |
10 | 10 |
11 import os | 11 import os |
12 import json | 12 import json |
13 | 13 |
14 def _CheckBowerDependencies(input_api, output_api): | 14 def _CheckBowerDependencies(input_api, output_api): |
15 os_path = input_api.os_path | 15 os_path = input_api.os_path |
16 cwd = input_api.PresubmitLocalPath() | 16 cwd = input_api.PresubmitLocalPath() |
17 components_dir = os_path.join(cwd, 'components') | 17 components_dir = os_path.join(cwd, 'components') |
18 bower_json_path = os_path.join(cwd, 'bower.json') | 18 bower_json_path = os_path.join(cwd, 'bower.json') |
19 | 19 |
20 for f in input_api.AffectedFiles(include_dirs=True): | 20 for f in input_api.AffectedFiles(include_dirs=True): |
21 p = f.AbsoluteLocalPath() | 21 p = f.AbsoluteLocalPath() |
22 if p == bower_json_path or p.startswith(components_dir): | 22 if p == bower_json_path or p.startswith(components_dir): |
23 break | 23 break |
24 else: | 24 else: |
25 return [] | 25 return [] |
26 | 26 |
27 bower_dependencies = \ | 27 bower_dependencies = \ |
28 set(json.load(open(bower_json_path))['dependencies'].keys()) | 28 set(json.load(open(bower_json_path))['dependencies'].keys()) |
29 installed_components = set(p for p in os.listdir(components_dir)) | 29 installed_components = set(p for p in os.listdir(components_dir)) |
| 30 # Add web-animations-js because we keep it in a separate directory |
| 31 # '../third_party/web-animations-js'. |
| 32 installed_components.add('web-animations-js') |
30 | 33 |
31 if bower_dependencies == installed_components: | 34 if bower_dependencies == installed_components: |
32 return [] | 35 return [] |
33 | 36 |
34 problems = [] | 37 problems = [] |
35 | 38 |
36 if installed_components - bower_dependencies: | 39 if installed_components - bower_dependencies: |
37 problems.append(output_api.PresubmitError( | 40 problems.append(output_api.PresubmitError( |
38 'Found components that are not listed in bower.json.', | 41 'Found components that are not listed in bower.json.', |
39 items = list(installed_components - bower_dependencies))) | 42 items = list(installed_components - bower_dependencies))) |
40 | 43 |
41 if bower_dependencies - installed_components: | 44 if bower_dependencies - installed_components: |
42 problems.append(output_api.PresubmitError( | 45 problems.append(output_api.PresubmitError( |
43 'Some of the Bower dependencies are not installed.', | 46 'Some of the Bower dependencies are not installed.', |
44 items = list(bower_dependencies - installed_components))) | 47 items = list(bower_dependencies - installed_components))) |
45 | 48 |
46 return problems | 49 return problems |
47 | 50 |
48 def CheckChangeOnUpload(input_api, output_api): | 51 def CheckChangeOnUpload(input_api, output_api): |
49 return _CheckBowerDependencies(input_api, output_api) | 52 return _CheckBowerDependencies(input_api, output_api) |
50 | 53 |
51 | 54 |
52 def CheckChangeOnCommit(input_api, output_api): | 55 def CheckChangeOnCommit(input_api, output_api): |
53 return _CheckBowerDependencies(input_api, output_api) | 56 return _CheckBowerDependencies(input_api, output_api) |
OLD | NEW |