Beispiel #1
0
def test_multiple_args():
    mappings = {
        'first_arg': {
            'type': 'str',
            'description': 'Some fancy description',
            'cli_arg': '--cli-option-name',
            'env_var': 'ENV_VAR_NAME',
            'default_value': 'first_default',
            'required': True,
        },
        'second_arg': {
            'type': 'tuple[int, bool, path]',
            'description': 'Some fancy description',
            'cli_arg': '--cli-option-name-for-tuple',
            'env_var': 'ENV_VAR_NAME_TUPLE',
            'default_value': '10 True .',
            'required': False,
        }
    }
    toml_file = NamedTemporaryFile(mode='w', delete=False)
    try:
        toml.dump(mappings, toml_file)
        toml_file.close()
        parser = ArgumentsParser.from_files(toml_file.name, [])
        for i, mapping in enumerate(mappings.items()):
            name, mapp = mapping
            assert_argument_values(name, mapp, asdict(parser.arguments[i]))
    finally:
        os.unlink(toml_file.name)
Beispiel #2
0
def test_multiple_values(arguments_definition):
    cli = [
        '--some-tuple',
        'String Value',
        '123',
        'Value',
        '--some-tuple',
        'Another Value',
        '1410',
        'Other Value',
    ]
    parser = ArgumentsParser(arguments_definition, cli)
    assert parser.arguments_values['list_of_tuples'] == [[
        'String Value', 123, 'Value'
    ], ['Another Value', 1410, 'Other Value']]
Beispiel #3
0
def test_yaml(toml_file_path):
    values = {
        'string_arg': 'some (not so) random string',
        'int_arg': 123,
        'int_arg_as_string': '123',
        'path_arg': '.',
        'list_arg': [123, 156, 1956],
        'list_of_tuples_arg': [[123, 156], [12, 14], [145, 140]],
    }
    yaml_file = NamedTemporaryFile(mode='w', delete=False)
    try:
        yaml.dump(values, yaml_file)
        yaml_file.close()
        parser = ArgumentsParser.from_files(toml_file_path, [],
                                            yaml_config=yaml_file.name)
        assert parser.user_values == values
    finally:
        os.unlink(yaml_file.name)
Beispiel #4
0
def test_default_required():
    mappings = {
        'first_arg': {
            'type': 'str',
            'description': 'Some fancy description',
            'cli_arg': '--cli-option-name',
            'env_var': 'ENV_VAR_NAME',
            'default_value': 'first_default',
        }
    }
    toml_file = NamedTemporaryFile(mode='w', delete=False)
    try:
        toml.dump(mappings, toml_file)
        toml_file.close()
        parser = ArgumentsParser.from_files(toml_file.name, [])
        mappings['first_arg']['required'] = False
        assert_argument_values('first_arg', mappings['first_arg'],
                               asdict(parser.arguments[0]))
    finally:
        os.unlink(toml_file.name)
Beispiel #5
0
def test_getattr(toml_file_path):
    parser = ArgumentsParser.from_files(toml_file_path,
                                        ['--cli-option-name', 'value'])
    assert parser.first_arg == 'value'
def test_multiple_empty_values(arguments_definition):
    cli = [
        '--list-element', '', '--list-element', '1410', '--list-element', ''
    ]
    parser = ArgumentsParser(arguments_definition, cli)
    assert parser.arguments_values['list'] == ['', '1410', '']
def test_no_value(arguments_definition):
    cli = []
    parser = ArgumentsParser(arguments_definition, cli)
    assert parser.arguments_values['list'] is None
def test_no_cli_default_set_parsing(arguments_definition_int, default_value,
                                    expected_list):
    arguments_definition_int[0].default_value = default_value
    cli = []
    parser = ArgumentsParser(arguments_definition_int, cli)
    assert parser.arguments_values['list'] == expected_list
Beispiel #9
0
def test_not_required_is_present(toml_file_path_not_required):
    parser = ArgumentsParser.from_files(toml_file_path_not_required,
                                        ['--cli-option-name', 'value'])
    assert parser.first_arg == 'value'
Beispiel #10
0
def test_no_cli_env_set(arguments_definition_with_env, env_var, env_value,
                        expected_value):
    os.environ[env_var] = env_value
    cli = []
    parser = ArgumentsParser(arguments_definition_with_env, cli)
    assert parser.arguments_values['path'] == expected_value
Beispiel #11
0
def test_switch_but_no_value(arguments_definition):
    cli = ['--some-integer']
    with pytest.raises(SystemExit):
        ArgumentsParser(arguments_definition, cli)
Beispiel #12
0
def test_multiple_values(arguments_definition):
    cli = ['--some-integer', '123', '--some-integer', '1410']
    parser = ArgumentsParser(arguments_definition, cli)
    assert parser.arguments_values['integer'] == 1410
Beispiel #13
0
def test_single_value(arguments_definition):
    cli = ['--some-integer', '123']
    parser = ArgumentsParser(arguments_definition, cli)
    assert parser.arguments_values['integer'] == 123
Beispiel #14
0
def test_value_empty_string(arguments_definition):
    cli = ['--some-integer', '']
    with pytest.raises(ValueError):
        ArgumentsParser(arguments_definition, cli)
Beispiel #15
0
def test_single_value_with_post_operations(
        arguments_definition_with_post_operations):
    cli = ['--some-integer', '3']
    parser = ArgumentsParser(arguments_definition_with_post_operations, cli)
    assert parser.arguments_values['integer'] == 60
Beispiel #16
0
def test_multiple_values(arguments_definition):
    cli = ['--file-path', './LICENSE', '--file-path', './README.md']
    parser = ArgumentsParser(arguments_definition, cli)
    assert parser.arguments_values['path'] == Path('./README.md')
Beispiel #17
0
def test_no_cli_default_set(arguments_definition, default_value,
                            expected_value):
    arguments_definition[0].default_value = default_value
    cli = []
    parser = ArgumentsParser(arguments_definition, cli)
    assert parser.arguments_values['path'] == expected_value
Beispiel #18
0
def test_value_not_parsable(arguments_definition):
    cli = ['--some-integer', '123_not']
    with pytest.raises(ValueError):
        ArgumentsParser(arguments_definition, cli)
Beispiel #19
0
def test_is_required_not_present(toml_file_path_required):
    with pytest.raises(RuntimeError):
        ArgumentsParser.from_files(toml_file_path_required, [])
Beispiel #20
0
def test_no_cli_default_set_empty_string(arguments_definition):
    arguments_definition[0].default_value = ''
    cli = []
    with pytest.raises(ValueError):
        ArgumentsParser(arguments_definition, cli)
Beispiel #21
0
def test_not_required_not_present(toml_file_path_not_required):
    parser = ArgumentsParser.from_files(toml_file_path_not_required, [])
    assert parser.first_arg is None
Beispiel #22
0
def test_no_cli_default_set(arguments_definition):
    arguments_definition[0].default_value = '123'
    cli = []
    parser = ArgumentsParser(arguments_definition, cli)
    assert parser.arguments_values['integer'] == 123
def test_no_cli_env_set_multiple_values(arguments_definition_int_with_env,
                                        env_var, env_value, expected_list):
    os.environ[env_var] = env_value
    cli = []
    parser = ArgumentsParser(arguments_definition_int_with_env, cli)
    assert parser.arguments_values['list'] == expected_list
Beispiel #24
0
def test_no_cli_default_set_not_parsable(arguments_definition):
    arguments_definition[0].default_value = '123_not'
    cli = []
    with pytest.raises(ValueError):
        ArgumentsParser(arguments_definition, cli)
def test_single_empty_value(arguments_definition):
    cli = ['--list-element', '']
    parser = ArgumentsParser(arguments_definition, cli)
    assert parser.arguments_values['list'] == ['']
Beispiel #26
0
def test_no_cli_env_set_empty_string(arguments_definition_with_env, env_var):
    os.environ[env_var] = ''
    cli = []
    with pytest.raises(ValueError):
        ArgumentsParser(arguments_definition_with_env, cli)
def test_switch_but_no_value(arguments_definition):
    cli = ['--list-element']
    with pytest.raises(SystemExit):
        ArgumentsParser(arguments_definition, cli)
Beispiel #28
0
def test_value_empty_string(arguments_definition):
    cli = ['--file-path', '']
    parser = ArgumentsParser(arguments_definition, cli)
    assert parser.arguments_values['path'] == Path('.')
Beispiel #29
0
def test_getattr_wrong_attr(toml_file_path):
    parser = ArgumentsParser.from_files(toml_file_path,
                                        ['--cli-option-name', 'value'])
    with pytest.raises(AttributeError) as exc:
        parser.not_existing_arg
    assert 'not_existing_arg' in str(exc)
Beispiel #30
0
def test_single_value(arguments_definition, cli_value, expected_value):
    cli = ['--file-path', cli_value]
    parser = ArgumentsParser(arguments_definition, cli)
    assert parser.arguments_values['path'] == expected_value