Exemple #1
0
def test_issue_40():
    with raises(SystemExit):  # i.e. shows help
        docopt('usage: prog --help-commands | --help', '--help')
    assert docopt('usage: prog --aabb | --aa', '--aa') == {
        '--aabb': False,
        '--aa': True
    }
Exemple #2
0
def test_issue_85_any_option_multiple_subcommands():
    docopt(
        'usage:\n  fs good [options]\n  fs fail [options]\n\nOptions:\n  --loglevel=<loglevel>\n',
        'fail --loglevel 5') == {
            '--loglevel': '5',
            'fail': True,
            'good': False
        }
Exemple #3
0
def test_default_value_for_positional_arguments():
    # disabled right now
    assert docopt('usage: prog [<p>]\n\n<p>  [default: x]', '') == \
            {'<p>': None}
    #       {'<p>': 'x'}
    assert docopt('usage: prog [<p>]...\n\n<p>  [default: x y]', '') == \
            {'<p>': []}
    #       {'<p>': ['x', 'y']}
    assert docopt('usage: prog [<p>]...\n\n<p>  [default: x y]', 'this') == \
            {'<p>': ['this']}
Exemple #4
0
def test_allow_double_dash():
    assert docopt('usage: prog [-o] [--] <arg>\n\n-o', '-- -o') == {
        '-o': False,
        '<arg>': '-o',
        '--': True
    }
    assert docopt('usage: prog [-o] [--] <arg>\n\n-o', '-o 1') == {
        '-o': True,
        '<arg>': '1',
        '--': False
    }
    with raises(DocoptExit):
        docopt('usage: prog [-o] <arg>\n\n-o', '-- -o')  # '--' not allowed
Exemple #5
0
def test_count_multiple_flags():
    assert docopt('usage: prog [-v]', '-v') == {'-v': True}
    assert docopt('usage: prog [-vv]', '') == {'-v': 0}
    assert docopt('usage: prog [-vv]', '-v') == {'-v': 1}
    assert docopt('usage: prog [-vv]', '-vv') == {'-v': 2}
    with raises(DocoptExit):
        docopt('usage: prog [-vv]', '-vvv')
    assert docopt('usage: prog [-v | -vv | -vvv]', '-vvv') == {'-v': 3}
    assert docopt('usage: prog -v...', '-vvvvvv') == {'-v': 6}
    assert docopt('usage: prog [--ver --ver]', '--ver --ver') == {'--ver': 2}
Exemple #6
0
def test_options_first():
    assert docopt('usage: prog [--opt] [<args>...]', '--opt this that') == {
        '--opt': True,
        '<args>': ['this', 'that']
    }
    assert docopt('usage: prog [--opt] [<args>...]', 'this that --opt') == {
        '--opt': True,
        '<args>': ['this', 'that']
    }
    assert docopt('usage: prog [--opt] [<args>...]',
                  'this that --opt',
                  options_first=True) == {
                      '--opt': False,
                      '<args>': ['this', 'that', '--opt']
                  }
Exemple #7
0
def test_docopt():
    doc = '''Usage: prog [-v] A

    -v  Be verbose.'''
    assert docopt(doc, 'arg') == {'-v': False, 'A': 'arg'}
    assert docopt(doc, '-v arg') == {'-v': True, 'A': 'arg'}

    doc = """Usage: prog [-vqr] [FILE]
              prog INPUT OUTPUT
              prog --help

    Options:
      -v  print status messages
      -q  report only file names
      -r  show all occurrences of the same error
      --help

    """
    a = docopt(doc, '-v file.py')
    assert a == {
        '-v': True,
        '-q': False,
        '-r': False,
        '--help': False,
        'FILE': 'file.py',
        'INPUT': None,
        'OUTPUT': None
    }

    a = docopt(doc, '-v')
    assert a == {
        '-v': True,
        '-q': False,
        '-r': False,
        '--help': False,
        'FILE': None,
        'INPUT': None,
        'OUTPUT': None
    }

    with raises(DocoptExit):  # does not match
        docopt(doc, '-v input.py output.py')

    with raises(DocoptExit):
        docopt(doc, '--fake')

    with raises(SystemExit):
        docopt(doc, '--hel')
Exemple #8
0
def test_commands():
    assert docopt('Usage: prog add', 'add') == {'add': True}
    assert docopt('Usage: prog [add]', '') == {'add': False}
    assert docopt('Usage: prog [add]', 'add') == {'add': True}
    assert docopt('Usage: prog (add|rm)', 'add') == {'add': True, 'rm': False}
    assert docopt('Usage: prog (add|rm)', 'rm') == {'add': False, 'rm': True}
    assert docopt('Usage: prog a b', 'a b') == {'a': True, 'b': True}
    with raises(DocoptExit):
        docopt('Usage: prog a b', 'b a')
Exemple #9
0
def test_issue_68_options_shortcut_does_not_include_options_in_usage_patter():
    args = docopt('usage: prog [-ab] [options]\n\n-x\n-y', '-ax')
    # Need to use `is` (not `==`) since we want to make sure
    # that they are not 1/0, but strictly True/False:
    assert args['-a'] is True
    assert args['-b'] is False
    assert args['-x'] is True
    assert args['-y'] is False
Exemple #10
0
def test_count_multiple_commands():
    assert docopt('usage: prog [go]', 'go') == {'go': True}
    assert docopt('usage: prog [go go]', '') == {'go': 0}
    assert docopt('usage: prog [go go]', 'go') == {'go': 1}
    assert docopt('usage: prog [go go]', 'go go') == {'go': 2}
    with raises(DocoptExit):
        docopt('usage: prog [go go]', 'go go go')
    assert docopt('usage: prog go...', 'go go go go go') == {'go': 5}
Exemple #11
0
def test_short_options_error_handling():
    with raises(DocoptLanguageError):
        docopt('Usage: prog -x\n\n-x  this\n-x  that')


#    with raises(DocoptLanguageError):
#        docopt('Usage: prog -x')
    with raises(DocoptExit):
        docopt('Usage: prog', '-x')

    with raises(DocoptLanguageError):
        docopt('Usage: prog -o\n\n-o ARG')
    with raises(DocoptExit):
        docopt('Usage: prog -o ARG\n\n-o ARG', '-o')
Exemple #12
0
def test_any_options_parameter():
    with raises(DocoptExit):
        docopt('usage: prog [options]', '-foo --bar --spam=eggs')
#    assert docopt('usage: prog [options]', '-foo --bar --spam=eggs',
#                  any_options=True) == {'-f': True, '-o': 2,
#                                         '--bar': True, '--spam': 'eggs'}
    with raises(DocoptExit):
        docopt('usage: prog [options]', '--foo --bar --bar')
#    assert docopt('usage: prog [options]', '--foo --bar --bar',
#                  any_options=True) == {'--foo': True, '--bar': 2}
    with raises(DocoptExit):
        docopt('usage: prog [options]', '--bar --bar --bar -ffff')
#    assert docopt('usage: prog [options]', '--bar --bar --bar -ffff',
#                  any_options=True) == {'--bar': 3, '-f': 4}
    with raises(DocoptExit):
        docopt('usage: prog [options]', '--long=arg --long=another')
Exemple #13
0
def test_long_options_error_handling():
    #    with raises(DocoptLanguageError):
    #        docopt('Usage: prog --non-existent', '--non-existent')
    #    with raises(DocoptLanguageError):
    #        docopt('Usage: prog --non-existent')
    with raises(DocoptExit):
        docopt('Usage: prog', '--non-existent')
    with raises(DocoptExit):
        docopt(
            '''Usage: prog [--version --verbose]\n\n
                  --version\n--verbose''', '--ver')
    with raises(DocoptLanguageError):
        docopt('Usage: prog --long\n\n--long ARG')
    with raises(DocoptExit):
        docopt('Usage: prog --long ARG\n\n--long ARG', '--long')
    with raises(DocoptLanguageError):
        docopt('Usage: prog --long=ARG\n\n--long')
    with raises(DocoptExit):
        docopt('Usage: prog --long\n\n--long', '--long=ARG')
Exemple #14
0
def test_matching_paren():
    with raises(DocoptLanguageError):
        docopt('Usage: prog [a [b]')
    with raises(DocoptLanguageError):
        docopt('Usage: prog [a [b] ] c )')
Exemple #15
0
def test_issue_65_evaluate_argv_when_called_not_when_imported():
    import sys
    sys.argv = 'prog -a'.split()
    assert docopt('usage: prog [-ab]') == {'-a': True, '-b': False}
    sys.argv = 'prog -b'.split()
    assert docopt('usage: prog [-ab]') == {'-a': False, '-b': True}
Exemple #16
0
def test_language_errors():
    with raises(DocoptLanguageError):
        docopt('no usage with colon here')
    with raises(DocoptLanguageError):
        docopt('usage: here \n\n and again usage: here')
Exemple #17
0
def test_issue34_unicode_strings():
    try:
        assert docopt(eval("u'usage: prog [-o <a>]'"), '') == \
                {'-o': False, '<a>': None}
    except SyntaxError:
        pass  # Python 3
Exemple #18
0
def test_issue_59():
    assert docopt('usage: prog --long=<a>', '--long=') == {'--long': ''}
    assert docopt('usage: prog -l <a>\n\n-l <a>', ['-l', '']) == {'-l': ''}
Exemple #19
0
def test_options_shortcut_does_not_add_options_to_patter_second_time():
    assert docopt('usage: prog [options] [-a]\n\n-a -b', '-a') == \
            {'-a': True, '-b': False}
    with raises(DocoptExit):
        docopt('usage: prog [options] [-a]\n\n-a -b', '-aa')