def test_recursive_update5(basic_config_dict):
    current = basic_config_dict
    current['a'] = {'c': None}
    new = {'a': {'c': {'d': {42: 'test'}}}}
    # run
    OptionsHandler._recursive_update(current, new)
    expected = basic_config_dict
    expected['a']['c']['d'] = {42: 'test'}
    assert current == expected
def test_add_sub_command1(reference_default_config):
    cmd_opts = {'a': ValidOption(type=str, default='uiae'),
                'b': ValidOption(type=int, default=42),
                'c': {'d': ValidOption(type=int, default=1337)}}
    oh = OptionsHandler()
    oh.add_sub_command('test_cmd', cmd_opts, cmd_aliases=['tc'])
    result = oh.get_defaults()
    assert result == {'test_cmd': {'a': 'uiae', 'b': 42, 'c': {'d': 1337}},
                      **reference_default_config}
def test_recursive_update4(basic_config_dict):
    current = basic_config_dict
    new = {'a': {'c': {'d': {42: 'test'}}}}
    # run
    OptionsHandler._recursive_update(current, new)
    # check
    expected = basic_config_dict
    expected['a']['c']['d'] = {42: 'test'}
    assert repr(current) == repr(expected)
def test_recursive_update3(basic_config_dict):
    current = basic_config_dict
    new = {'a': {'c': None}}
    # run
    OptionsHandler._recursive_update(current, new)
    # check
    expected = basic_config_dict
    expected['a']['c'] = None
    assert repr(current) == repr(expected)
def test_recursive_update2(basic_config_dict):
    current = basic_config_dict
    new = {'a': {'c': {'c': {'f': 'blub'}}}}
    # run
    OptionsHandler._recursive_update(current, new)
    # check
    expected = basic_config_dict
    expected['a']['c']['c']['f'] = 'blub'
    assert repr(current) == repr(expected)
def test_recursive_update0(basic_config_dict):
    current = basic_config_dict
    new = {'a': 5}
    # run
    OptionsHandler._recursive_update(current, new)
    # check
    expected = basic_config_dict
    expected['a'] = 5
    assert repr(current) == repr(expected)
def opt_handler_two_commands():
    cmd_opts1 = {'a': ValidOption(type=str, default='uiae'),
                 'b': ValidOption(type=int, default=42),
                 'c': {'d': ValidOption(type=int, default=1337)}}
    cmd_opts2 = {'one': ValidOption(type=str, default='uiae')}
    oh = OptionsHandler()
    oh.add_sub_command('test_cmd', cmd_opts1, ['t', 'tc'])
    oh.add_sub_command('other_cmd', cmd_opts2, ['oc'])
    return oh
def test_get_defaults(reference_default_config):
    oh = OptionsHandler()
    result = oh.get_defaults()
    assert result == reference_default_config
def test_recursive_update6(basic_config_dict):
    current = basic_config_dict
    new = {'x': {'c': {'d': {42: 'test'}}}}
    # run
    with pytest.raises(KeyError):
        OptionsHandler._recursive_update(current, new)