1# Copyright (c) 2012 The Chromium Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5 6""" 7Verify that the bench_pictures.cfg file is sane. 8""" 9 10 11import os 12import sys 13 14 15def ThrowIfNotAString(obj): 16 """ Raise a TypeError if obj is not a string. """ 17 if str(obj) != obj: 18 raise TypeError('%s is not a string!' % str(obj)) 19 20 21def Main(argv): 22 """ Verify that the bench_pictures.cfg file is sane. 23 24 - Exec the file to ensure that it uses correct Python syntax. 25 - Make sure that every element is a string, because the buildbot scripts will 26 fail to execute if this is not the case. 27 28 This test does not verify that the well-formed configs are actually valid. 29 """ 30 vars = {'import_path': 'tools'} 31 execfile(os.path.join('tools', 'bench_pictures.cfg'), vars) 32 bench_pictures_cfg = vars['bench_pictures_cfg'] 33 34 for config_name, config_list in bench_pictures_cfg.iteritems(): 35 ThrowIfNotAString(config_name) 36 for config in config_list: 37 for key, value in config.iteritems(): 38 ThrowIfNotAString(key) 39 if type(value).__name__ == 'list': 40 for item in value: 41 ThrowIfNotAString(item) 42 elif not value is True: 43 ThrowIfNotAString(value) 44 45if __name__ == '__main__': 46 sys.exit(Main(sys.argv))