def test_config_gets_values_like_attributes(self): '''Make sure the options we set can be retrieved like values''' config = Config() config.setup({"a": 1, "b": 2, "c-d": 3}) config.a | should | be(1) config.b | should | be(2) config.c_d | should | be(3)
def test_it_uses_extractor_if_provided(self): '''If given an extractor, it applies extractor to the options before setting them''' template = fudge.Fake("template") def extractor(template, options): for key, val in options.items(): yield key, val + 1 config = Config(template) config.setup({'a':1, 'b':2}, extractor=extractor) config._util.values |should| equal_to({'a':2, 'b':3})
def test_config_gets_attributes_from_util(self): '''__getattr__ on Config uses values from util''' key = 'my_awesome_key' val = fudge.Fake("val") util = fudge.Fake("util").expects("find_value").with_args(key).returns(val) config = Config() config._util = util getattr(config, key) |should| be(val)
def test_it_overwrites_config_file_with_options(self): '''It gets values from a config file''' contents = """ { "a" : 1 , "b" : 2 } """ with a_temp_file(contents) as filename: config = Config() config.setup({"config-file":filename, "a":4}) config._util.values |should| equal_to({"config_file":filename, "a":4, u"b":2})
def test_it_gets_values_from_config_file(self): '''It gets values from a config file''' contents = """ { "a" : 1 , "b" : 2 } """ with a_temp_file(contents) as filename: config = Config() config.setup({"config-file":filename}) config._util.values |should| equal_to({"config_file":filename, u"a":1, u"b":2})
def test_it_uses_extractor_if_provided(self): '''If given an extractor, it applies extractor to the options before setting them''' template = fudge.Fake("template") def extractor(template, options): for key, val in options.items(): yield key, val + 1 config = Config(template) config.setup({'a': 1, 'b': 2}, extractor=extractor) config._util.values | should | equal_to({'a': 2, 'b': 3})
def test_config_gets_attributes_from_util(self): '''__getattr__ on Config uses values from util''' key = 'my_awesome_key' val = fudge.Fake("val") util = fudge.Fake("util").expects("find_value").with_args(key).returns( val) config = Config() config._util = util getattr(config, key) | should | be(val)
def test_setup_uses_util(self, FakeConfigUtil): '''It uses self._util in setup''' options = fudge.Fake("options") template = fudge.Fake("template") extractor = fudge.Fake("extractor") util = (fudge.Fake("util").remember_order().expects( "use_options").with_args(options, extractor).expects("use_config_file")) FakeConfigUtil.expects_call().with_args(template).returns(util) config = Config(template) config.setup(options, extractor=extractor)
def test_setup_uses_util(self, FakeConfigUtil): '''It uses self._util in setup''' options = fudge.Fake("options") template = fudge.Fake("template") extractor = fudge.Fake("extractor") util = (fudge.Fake("util").remember_order() .expects("use_options").with_args(options, extractor) .expects("use_config_file") ) FakeConfigUtil.expects_call().with_args(template).returns(util) config = Config(template) config.setup(options, extractor=extractor)
def test_it_overwrites_config_file_with_options(self): '''It gets values from a config file''' contents = """ { "a" : 1 , "b" : 2 } """ with a_temp_file(contents) as filename: config = Config() config.setup({"config-file": filename, "a": 4}) config._util.values | should | equal_to({ "config_file": filename, "a": 4, u"b": 2 })
def test_it_gets_values_from_config_file(self): '''It gets values from a config file''' contents = """ { "a" : 1 , "b" : 2 } """ with a_temp_file(contents) as filename: config = Config() config.setup({"config-file": filename}) config._util.values | should | equal_to({ "config_file": filename, u"a": 1, u"b": 2 })
def register_from_options(options=None, template=None, extractor=None): """Register the spec codec using the provided options""" if template is None: from noseOfYeti.plugins.support.spec_options import spec_options as template if extractor is None: from noseOfYeti.plugins.support.spec_options import extract_options_dict as extractor config = Config(template) config.setup(options, extractor) imports = determine_imports( extra_imports=';'.join([d for d in config.extra_import if d]), with_default_imports=config.with_default_imports) tok = Tokeniser(default_kls=config.default_kls, import_tokens=imports, wrapped_setup=config.wrapped_setup, with_describe_attrs=not config.no_describe_attrs) TokeniserCodec(tok).register()
def register_from_options(options=None, template=None, extractor=None): """Register the spec codec using the provided options""" if template is None: from noseOfYeti.plugins.support.spec_options import spec_options as template if extractor is None: from noseOfYeti.plugins.support.spec_options import extract_options_dict as extractor config = Config(template) config.setup(options, extractor) imports = determine_imports( extra_imports = ';'.join([d for d in config.extra_import if d]) , with_default_imports = config.with_default_imports ) tok = Tokeniser( default_kls = config.default_kls , import_tokens = imports , wrapped_setup = config.wrapped_setup , with_describe_attrs = not config.no_describe_attrs ) TokeniserCodec(tok).register()
def test_it_updates_values_with_options(self): # With no values to begin with config = Config() config._util.values | should | equal_to({}) config.setup({'a': 1, 'b': 2}) config._util.values | should | equal_to({'a': 1, 'b': 2})