| # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| |
| """ |
| Verify that the bench_pictures.cfg file is sane. |
| """ |
| |
| |
| import os |
| import sys |
| |
| |
| def ThrowIfNotAString(obj): |
| """ Raise a TypeError if obj is not a string. """ |
| if str(obj) != obj: |
| raise TypeError('%s is not a string!' % str(obj)) |
| |
| |
| def Main(argv): |
| """ Verify that the bench_pictures.cfg file is sane. |
| |
| - Exec the file to ensure that it uses correct Python syntax. |
| - Make sure that every element is a string, because the buildbot scripts will |
| fail to execute if this is not the case. |
| |
| This test does not verify that the well-formed configs are actually valid. |
| """ |
| vars = {'import_path': 'tools'} |
| execfile(os.path.join('tools', 'bench_pictures.cfg'), vars) |
| bench_pictures_cfg = vars['bench_pictures_cfg'] |
| |
| for config_name, config_list in bench_pictures_cfg.iteritems(): |
| ThrowIfNotAString(config_name) |
| for config in config_list: |
| for key, value in config.iteritems(): |
| ThrowIfNotAString(key) |
| if type(value).__name__ == 'list': |
| for item in value: |
| ThrowIfNotAString(item) |
| elif not value is True: |
| ThrowIfNotAString(value) |
| |
| if __name__ == '__main__': |
| sys.exit(Main(sys.argv)) |