diff --git a/tests/test_functionality.py b/tests/test_functionality.py index 4a98917..a5e7f4f 100644 --- a/tests/test_functionality.py +++ b/tests/test_functionality.py @@ -6,85 +6,52 @@ from pargv import parse_args def test_no_argv(): with mock.patch('sys.argv', []): - args, kwargs = parse_args() - assert args == [] - assert kwargs == {} + assert parse_args() == ([], {}) def test_use_sys_argv_by_default(): - with mock.patch('sys.argv', ['app', 'command', '--option=one', 'two', '--flag', '-io']): - args, kwargs = parse_args() - assert args == ['app', 'command'] - assert kwargs == { - 'option': ['one', 'two'], - 'flag': True, - 'i': True, - 'o': True - } + with mock.patch('sys.argv', ['argument', '--flag']): + assert parse_args() == (['argument'], {'flag': True}) def test_single_positional_argument(): - args, kwargs = parse_args(['app']) - assert args == ['app'] - assert kwargs == {} + assert parse_args(['app']) == (['app'], {}) def test_single_positional_argument_with_underscore(): - args, kwargs = parse_args(['the-app']) - assert args == ['the_app'] - assert kwargs == {} + assert parse_args(['the-app']) == (['the_app'], {}) + assert parse_args(['a-b']) == (['a_b'], {}) + +def test_optional_argument_with_underscore(): + assert parse_args(['--a-b']) == ([], {'a_b': True}) def test_positional_arguments(): - args, kwargs = parse_args(['app', 'command']) - assert args == ['app', 'command'] - assert kwargs == {} + assert parse_args(['app', 'command']) == (['app', 'command'], {}) def test_one_positional_and_optional_argument(): - args, kwargs = parse_args(['app', '--help']) - assert args == ['app'] - assert kwargs == {'help': True} + assert parse_args(['app', '--help']) == (['app'], {'help': True}) def test_one_positional_and_optional_argument_with_values(): - args, kwargs = parse_args(['app', '--amount=2', '3']) - assert args == ['app'] - assert kwargs == {'amount': ['2', '3']} + assert parse_args(['app', '--amount=2', '3']) == (['app'], {'amount': ['2', '3']}) def test_positional_and_optional_arguments(): - args, kwargs = parse_args(['app', 'command', '--inputfile', '--outputfile']) - assert args == ['app', 'command'] - assert kwargs == { - 'inputfile': True, - 'outputfile': True - } + assert parse_args(['argument', '--help']) == (['argument'], {'help': True}) def test_short_arg_with_single_option(): - args, kwargs = parse_args(['-a', 'b', '--abc', 'd']) - assert args == [] - assert kwargs == { - 'a': 'b', - 'abc': 'd', - } + assert parse_args(['-a', 'b', '--abc', 'd']) == ([], {'a': 'b', 'abc': 'd'}) def test_short_arg_with_multiple_options(): - args, kwargs = parse_args(['-i', 'a', 'b', '--input', 'c', 'd']) - assert args == [] - assert kwargs == { - 'i': ['a', 'b'], - 'input': ['c', 'd'] - } + assert parse_args(['-i', 'a', 'b']) == ([], {'i': ['a', 'b']}) + +def test_short_args_with_equals(): + assert parse_args(['-ab=c']) == ([], {'a': True, 'b': 'c'}) + assert parse_args(['-ab=c', 'd']) == ([], {'a': True, 'b': ['c', 'd']}) def test_long_args_with_equals(): - args, kwargs = parse_args(['--input-file=a.py', '--output-file=b.py']) - assert args == [] - assert kwargs == { - 'input_file': 'a.py', - 'output_file': 'b.py' - } + assert parse_args(['--input-file=a.py']) == ([], {'input_file': 'a.py'}) def test_unintended_hyphen(): - args, kwargs = parse_args(['---triple-hyphen-']) - assert args == [] - assert kwargs == {'_triple_hyphen_': True} + assert parse_args(['---triple-hyphen-']) == ([], {'_triple_hyphen_': True}) @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'], { 'flag': True, @@ -96,6 +63,4 @@ def test_unintended_hyphen(): } ),)) def test_all_parameters_at_once(argv, args, kwargs): - _args, _kwargs = parse_args(argv) - assert _args == args - assert _kwargs == kwargs + assert parse_args(argv) == (args, kwargs)