OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright 2015 The Chromium Authors. All rights reserved. | 2 # Copyright 2015 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 """Toolbox to manage all the json files in this directory. | 6 """Toolbox to manage all the json files in this directory. |
7 | 7 |
8 It can reformat them in their canonical format or ensures they are well | 8 It can reformat them in their canonical format or ensures they are well |
9 formatted. | 9 formatted. |
10 """ | 10 """ |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
217 raise Error('%s: %s is broken: %s' % (filename, builder, data)) | 217 raise Error('%s: %s is broken: %s' % (filename, builder, data)) |
218 if 'gtest_tests' not in data: | 218 if 'gtest_tests' not in data: |
219 continue | 219 continue |
220 if not isinstance(data['gtest_tests'], list): | 220 if not isinstance(data['gtest_tests'], list): |
221 raise Error( | 221 raise Error( |
222 '%s: %s is broken: %s' % (filename, builder, data['gtest_tests'])) | 222 '%s: %s is broken: %s' % (filename, builder, data['gtest_tests'])) |
223 if not all(isinstance(g, dict) for g in data['gtest_tests']): | 223 if not all(isinstance(g, dict) for g in data['gtest_tests']): |
224 raise Error( | 224 raise Error( |
225 '%s: %s is broken: %s' % (filename, builder, data['gtest_tests'])) | 225 '%s: %s is broken: %s' % (filename, builder, data['gtest_tests'])) |
226 | 226 |
| 227 seen = set() |
227 for d in data['gtest_tests']: | 228 for d in data['gtest_tests']: |
228 if (d['test'] not in ninja_targets and | 229 if (d['test'] not in ninja_targets and |
229 d['test'] not in SKIP_GN_ISOLATE_MAP_TARGETS): | 230 d['test'] not in SKIP_GN_ISOLATE_MAP_TARGETS): |
230 raise Error('%s: %s / %s is not listed in gn_isolate_map.pyl.' % | 231 raise Error('%s: %s / %s is not listed in gn_isolate_map.pyl.' % |
231 (filename, builder, d['test'])) | 232 (filename, builder, d['test'])) |
232 elif d['test'] in ninja_targets: | 233 elif d['test'] in ninja_targets: |
233 ninja_targets_seen.add(d['test']) | 234 ninja_targets_seen.add(d['test']) |
234 | 235 |
| 236 name = d.get('name', d['test']) |
| 237 if name in seen: |
| 238 raise Error('%s: %s / %s is listed multiple times.' % |
| 239 (filename, builder, name)) |
| 240 seen.add(name) |
| 241 |
235 config[builder]['gtest_tests'] = sorted( | 242 config[builder]['gtest_tests'] = sorted( |
236 data['gtest_tests'], key=lambda x: x['test']) | 243 data['gtest_tests'], key=lambda x: x['test']) |
237 | 244 |
238 # The trick here is that process_builder_remaining() is called before | 245 # The trick here is that process_builder_remaining() is called before |
239 # process_builder_convert() so tests_location can be used to know how many | 246 # process_builder_convert() so tests_location can be used to know how many |
240 # tests were converted. | 247 # tests were converted. |
241 if mode in ('convert', 'remaining'): | 248 if mode in ('convert', 'remaining'): |
242 process_builder_remaining(data, filename, builder, tests_location) | 249 process_builder_remaining(data, filename, builder, tests_location) |
243 if mode == 'convert': | 250 if mode == 'convert': |
244 process_builder_convert(data, test_name) | 251 process_builder_convert(data, test_name) |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
384 elif args.mode == 'remaining': | 391 elif args.mode == 'remaining': |
385 print_remaining(args.test_name, tests_location) | 392 print_remaining(args.test_name, tests_location) |
386 return result | 393 return result |
387 except Error as e: | 394 except Error as e: |
388 sys.stderr.write('%s\n' % e) | 395 sys.stderr.write('%s\n' % e) |
389 return 1 | 396 return 1 |
390 | 397 |
391 | 398 |
392 if __name__ == "__main__": | 399 if __name__ == "__main__": |
393 sys.exit(main()) | 400 sys.exit(main()) |
OLD | NEW |