Refactor changes (simplify)

This commit is contained in:
Patrick Elmer 2023-08-15 08:41:44 +09:00
parent cc47b0b746
commit 5a591454e9

View File

@ -6,85 +6,52 @@ from pargv import parse_args
def test_no_argv(): def test_no_argv():
with mock.patch('sys.argv', []): with mock.patch('sys.argv', []):
args, kwargs = parse_args() assert parse_args() == ([], {})
assert args == []
assert kwargs == {}
def test_use_sys_argv_by_default(): def test_use_sys_argv_by_default():
with mock.patch('sys.argv', ['app', 'command', '--option=one', 'two', '--flag', '-io']): with mock.patch('sys.argv', ['argument', '--flag']):
args, kwargs = parse_args() assert parse_args() == (['argument'], {'flag': True})
assert args == ['app', 'command']
assert kwargs == {
'option': ['one', 'two'],
'flag': True,
'i': True,
'o': True
}
def test_single_positional_argument(): def test_single_positional_argument():
args, kwargs = parse_args(['app']) assert parse_args(['app']) == (['app'], {})
assert args == ['app']
assert kwargs == {}
def test_single_positional_argument_with_underscore(): def test_single_positional_argument_with_underscore():
args, kwargs = parse_args(['the-app']) assert parse_args(['the-app']) == (['the_app'], {})
assert args == ['the_app'] assert parse_args(['a-b']) == (['a_b'], {})
assert kwargs == {}
def test_optional_argument_with_underscore():
assert parse_args(['--a-b']) == ([], {'a_b': True})
def test_positional_arguments(): def test_positional_arguments():
args, kwargs = parse_args(['app', 'command']) assert parse_args(['app', 'command']) == (['app', 'command'], {})
assert args == ['app', 'command']
assert kwargs == {}
def test_one_positional_and_optional_argument(): def test_one_positional_and_optional_argument():
args, kwargs = parse_args(['app', '--help']) assert parse_args(['app', '--help']) == (['app'], {'help': True})
assert args == ['app']
assert kwargs == {'help': True}
def test_one_positional_and_optional_argument_with_values(): def test_one_positional_and_optional_argument_with_values():
args, kwargs = parse_args(['app', '--amount=2', '3']) assert parse_args(['app', '--amount=2', '3']) == (['app'], {'amount': ['2', '3']})
assert args == ['app']
assert kwargs == {'amount': ['2', '3']}
def test_positional_and_optional_arguments(): def test_positional_and_optional_arguments():
args, kwargs = parse_args(['app', 'command', '--inputfile', '--outputfile']) assert parse_args(['argument', '--help']) == (['argument'], {'help': True})
assert args == ['app', 'command']
assert kwargs == {
'inputfile': True,
'outputfile': True
}
def test_short_arg_with_single_option(): def test_short_arg_with_single_option():
args, kwargs = parse_args(['-a', 'b', '--abc', 'd']) assert parse_args(['-a', 'b', '--abc', 'd']) == ([], {'a': 'b', 'abc': 'd'})
assert args == []
assert kwargs == {
'a': 'b',
'abc': 'd',
}
def test_short_arg_with_multiple_options(): def test_short_arg_with_multiple_options():
args, kwargs = parse_args(['-i', 'a', 'b', '--input', 'c', 'd']) assert parse_args(['-i', 'a', 'b']) == ([], {'i': ['a', 'b']})
assert args == []
assert kwargs == { def test_short_args_with_equals():
'i': ['a', 'b'], assert parse_args(['-ab=c']) == ([], {'a': True, 'b': 'c'})
'input': ['c', 'd'] assert parse_args(['-ab=c', 'd']) == ([], {'a': True, 'b': ['c', 'd']})
}
def test_long_args_with_equals(): def test_long_args_with_equals():
args, kwargs = parse_args(['--input-file=a.py', '--output-file=b.py']) assert parse_args(['--input-file=a.py']) == ([], {'input_file': 'a.py'})
assert args == []
assert kwargs == {
'input_file': 'a.py',
'output_file': 'b.py'
}
def test_unintended_hyphen(): def test_unintended_hyphen():
args, kwargs = parse_args(['---triple-hyphen-']) assert parse_args(['---triple-hyphen-']) == ([], {'_triple_hyphen_': True})
assert args == []
assert kwargs == {'_triple_hyphen_': True}
@pytest.mark.parametrize('argv, args, kwargs', (( @pytest.mark.parametrize('argv, args, kwargs', ((
['/pargv/pargv.py', 'command', 'positional', '--flag', '--optional=value', 'test', '--output-file', 'filename', '-flg', 'name', 'name2'], ['/pargv/pargv.py', 'command', 'positional', '--flag', '--optional=value', 'test', '--output-file', 'filename', '-flg=name', 'name2'],
['/pargv/pargv.py', 'command', 'positional'], ['/pargv/pargv.py', 'command', 'positional'],
{ {
'flag': True, 'flag': True,
@ -96,6 +63,4 @@ def test_unintended_hyphen():
} }
),)) ),))
def test_all_parameters_at_once(argv, args, kwargs): def test_all_parameters_at_once(argv, args, kwargs):
_args, _kwargs = parse_args(argv) assert parse_args(argv) == (args, kwargs)
assert _args == args
assert _kwargs == kwargs