1be630eb07ddb84310fcc580acffcaa362a2dc606mbligh# 2be630eb07ddb84310fcc580acffcaa362a2dc606mbligh# Copyright 2008 Google Inc. All Rights Reserved. 3be630eb07ddb84310fcc580acffcaa362a2dc606mbligh 4be630eb07ddb84310fcc580acffcaa362a2dc606mbligh""" 5be630eb07ddb84310fcc580acffcaa362a2dc606mblighIf you need to change the default behavior of some atest commands, you 6be630eb07ddb84310fcc580acffcaa362a2dc606mblighcan create a site_<topic>.py file to subclass some of the classes from 7be630eb07ddb84310fcc580acffcaa362a2dc606mbligh<topic>.py. 8be630eb07ddb84310fcc580acffcaa362a2dc606mbligh 9be630eb07ddb84310fcc580acffcaa362a2dc606mblighThe following example would prevent the creation of platform labels. 10be630eb07ddb84310fcc580acffcaa362a2dc606mbligh""" 11be630eb07ddb84310fcc580acffcaa362a2dc606mbligh 12be630eb07ddb84310fcc580acffcaa362a2dc606mblighimport inspect, new, sys 13be630eb07ddb84310fcc580acffcaa362a2dc606mbligh 14be630eb07ddb84310fcc580acffcaa362a2dc606mblighfrom autotest_lib.cli import topic_common, label 15be630eb07ddb84310fcc580acffcaa362a2dc606mbligh 16be630eb07ddb84310fcc580acffcaa362a2dc606mbligh 17be630eb07ddb84310fcc580acffcaa362a2dc606mblighclass site_label(label.label): 18be630eb07ddb84310fcc580acffcaa362a2dc606mbligh pass 19be630eb07ddb84310fcc580acffcaa362a2dc606mbligh 20be630eb07ddb84310fcc580acffcaa362a2dc606mbligh 21be630eb07ddb84310fcc580acffcaa362a2dc606mblighclass site_label_create(label.label_create): 22be630eb07ddb84310fcc580acffcaa362a2dc606mbligh """Disable the platform option 23be630eb07ddb84310fcc580acffcaa362a2dc606mbligh atest label create <labels>|--blist <file>""" 24be630eb07ddb84310fcc580acffcaa362a2dc606mbligh def __init__(self): 25be630eb07ddb84310fcc580acffcaa362a2dc606mbligh super(site_label_create, self).__init__() 26be630eb07ddb84310fcc580acffcaa362a2dc606mbligh self.parser.remove_option("--platform") 27be630eb07ddb84310fcc580acffcaa362a2dc606mbligh 28be630eb07ddb84310fcc580acffcaa362a2dc606mbligh 29be630eb07ddb84310fcc580acffcaa362a2dc606mbligh def parse(self): 30be630eb07ddb84310fcc580acffcaa362a2dc606mbligh (options, leftover) = super(site_label_create, self).parse() 31be630eb07ddb84310fcc580acffcaa362a2dc606mbligh self.is_platform = False 32be630eb07ddb84310fcc580acffcaa362a2dc606mbligh return (options, leftover) 33be630eb07ddb84310fcc580acffcaa362a2dc606mbligh 34be630eb07ddb84310fcc580acffcaa362a2dc606mbligh 35be630eb07ddb84310fcc580acffcaa362a2dc606mbligh# The following boiler plate code should be added at the end to create 36be630eb07ddb84310fcc580acffcaa362a2dc606mbligh# all the other site_<topic>_<action> classes that do not modify their 37be630eb07ddb84310fcc580acffcaa362a2dc606mbligh# <topic>_<action> super class. 38be630eb07ddb84310fcc580acffcaa362a2dc606mbligh 39be630eb07ddb84310fcc580acffcaa362a2dc606mbligh# Any classes we don't override in label should be copied automatically 40be630eb07ddb84310fcc580acffcaa362a2dc606mblighfor cls in [getattr(label, n) for n in dir(label) if not n.startswith("_")]: 41be630eb07ddb84310fcc580acffcaa362a2dc606mbligh if not inspect.isclass(cls): 42be630eb07ddb84310fcc580acffcaa362a2dc606mbligh continue 43be630eb07ddb84310fcc580acffcaa362a2dc606mbligh cls_name = cls.__name__ 44be630eb07ddb84310fcc580acffcaa362a2dc606mbligh site_cls_name = 'site_' + cls_name 45be630eb07ddb84310fcc580acffcaa362a2dc606mbligh if hasattr(sys.modules[__name__], site_cls_name): 46be630eb07ddb84310fcc580acffcaa362a2dc606mbligh continue 47be630eb07ddb84310fcc580acffcaa362a2dc606mbligh bases = (site_label, cls) 48be630eb07ddb84310fcc580acffcaa362a2dc606mbligh members = {'__doc__': cls.__doc__} 49be630eb07ddb84310fcc580acffcaa362a2dc606mbligh site_cls = new.classobj(site_cls_name, bases, members) 50be630eb07ddb84310fcc580acffcaa362a2dc606mbligh setattr(sys.modules[__name__], site_cls_name, site_cls) 51