OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # | 2 # |
3 # Copyright 2014 The Chromium Authors. All rights reserved. | 3 # Copyright 2014 The Chromium Authors. All rights reserved. |
4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
6 """ | 6 """ |
7 Utilities for the modular DevTools build. | 7 Utilities for the modular DevTools build. |
8 """ | 8 """ |
9 | 9 |
10 import collections | 10 import collections |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
122 for next in unvisited_modules: | 122 for next in unvisited_modules: |
123 break | 123 break |
124 failure = visit(None, next) | 124 failure = visit(None, next) |
125 if failure: | 125 if failure: |
126 # failure[0] can never be None | 126 # failure[0] can never be None |
127 bail_error('Unknown module "%s" encountered in dependencies of "
%s"' % (failure[1], failure[0])) | 127 bail_error('Unknown module "%s" encountered in dependencies of "
%s"' % (failure[1], failure[0])) |
128 | 128 |
129 self._cached_sorted_modules = result | 129 self._cached_sorted_modules = result |
130 return result | 130 return result |
131 | 131 |
132 def sorted_dependencies_closure(self, module_name): | 132 def sorted_dependencies_closure(self, module_name, include_test_dependencies
=False): |
133 visited = set() | 133 visited = set() |
134 | 134 |
135 def sorted_deps_for_module(name): | 135 def sorted_deps_for_module(name): |
136 result = [] | 136 result = [] |
137 desc = self.modules[name] | 137 desc = self.modules[name] |
138 deps = desc.get('dependencies', []) | 138 deps = desc.get('dependencies', []) |
| 139 if include_test_dependencies: |
| 140 deps.extend(desc.get('test_dependencies', [])) |
139 for dep in deps: | 141 for dep in deps: |
140 result += sorted_deps_for_module(dep) | 142 result += sorted_deps_for_module(dep) |
141 if name not in visited: | 143 if name not in visited: |
142 result.append(name) | 144 result.append(name) |
143 visited.add(name) | 145 visited.add(name) |
144 return result | 146 return result |
145 | 147 |
146 return sorted_deps_for_module(module_name) | 148 return sorted_deps_for_module(module_name) |
147 | 149 |
148 | 150 |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 | 186 |
185 return Descriptors(self.application_dir, merged_application_descriptor,
all_module_descriptors, has_html) | 187 return Descriptors(self.application_dir, merged_application_descriptor,
all_module_descriptors, has_html) |
186 | 188 |
187 def _read_module_descriptor(self, module_name, application_descriptor_filena
me): | 189 def _read_module_descriptor(self, module_name, application_descriptor_filena
me): |
188 json_filename = path.join(self.application_dir, module_name, 'module.jso
n') | 190 json_filename = path.join(self.application_dir, module_name, 'module.jso
n') |
189 if not path.exists(json_filename): | 191 if not path.exists(json_filename): |
190 bail_error('Module descriptor %s referenced in %s is missing' % (jso
n_filename, application_descriptor_filename)) | 192 bail_error('Module descriptor %s referenced in %s is missing' % (jso
n_filename, application_descriptor_filename)) |
191 module_json = load_and_parse_json(json_filename) | 193 module_json = load_and_parse_json(json_filename) |
192 module_json['name'] = module_name | 194 module_json['name'] = module_name |
193 return module_json | 195 return module_json |
OLD | NEW |