#!/usr/bin/env python # See LICENSE file for copyright and license details. # -*- coding: utf-8 -*- import sys import arg parser = arg.Parser() assert parser.argv == sys.argv[1:] parser = arg.Parser(argv = ['-a', '-aa', '-aaa']) n = 0 for c in parser.flags: assert c == 'a' n += 1 assert n == 6 assert type(parser.argv) is list assert len(parser.argv) == 0 assert type(parser.argc) is int assert parser.argc == 0 parser = arg.Parser(argv = ['-abc', '-xyz']) flags = parser.flags assert next(flags) == 'a' assert parser.flag == '-a' assert parser.symbol == '-' assert next(flags) == 'b' assert parser.flag == '-b' assert next(flags) == 'c' assert parser.flag == '-c' assert next(flags) == 'x' assert parser.flag == '-x' assert parser.lflag == '-xyz' assert next(flags) == 'y' assert parser.flag == '-y' assert parser.lflag is None assert next(flags) == 'z' assert parser.flag == '-z' assert parser.symbol == '-' try: next(flags) assert False except StopIteration: pass assert type(parser.argv) is list assert len(parser.argv) == 0 assert type(parser.argc) is int assert parser.argc == 0 for mid in ('', '-', 'x'): parser = arg.Parser(argv = ['-abc', mid, '-xyz']) flags = parser.flags assert next(flags) == 'a' assert parser.flag == '-a' assert parser.symbol == '-' assert next(flags) == 'b' assert parser.flag == '-b' assert next(flags) == 'c' assert parser.flag == '-c' try: next(flags) assert False except StopIteration: pass assert type(parser.argv) is list assert len(parser.argv) == 2 assert type(parser.argc) is int assert parser.argc == 2 assert parser.argv == [mid, '-xyz'] parser = arg.Parser(argv = ['-abc', '--', '-xyz']) flags = parser.flags assert next(flags) == 'a' assert parser.flag == '-a' assert parser.symbol == '-' assert next(flags) == 'b' assert parser.flag == '-b' assert next(flags) == 'c' assert parser.flag == '-c' try: next(flags) assert False except StopIteration: pass assert type(parser.argv) is list assert len(parser.argv) == 1 assert type(parser.argc) is int assert parser.argc == 1 assert parser.argv == ['-xyz'] parser = arg.Parser(argv = ['-abc', '--', '-xyz'], keep_dashdash = True) flags = parser.flags assert next(flags) == 'a' assert parser.flag == '-a' assert parser.symbol == '-' assert next(flags) == 'b' assert parser.flag == '-b' assert next(flags) == 'c' assert parser.flag == '-c' try: next(flags) assert False except StopIteration: pass assert type(parser.argv) is list assert len(parser.argv) == 2 assert type(parser.argc) is int assert parser.argc == 2 assert parser.argv == ['--', '-xyz'] parser = arg.Parser(argv = ['a', '--', 'b'], keep_dashdash = True, store_nonflags = True) flags = parser.flags try: next(flags) assert False except StopIteration: pass assert type(parser.argv) is list assert len(parser.argv) == 3 assert type(parser.argc) is int assert parser.argc == 3 assert parser.argv == ['a', '--', 'b'] parser = arg.Parser(argv = ['a', '--', 'b'], keep_dashdash = False, store_nonflags = True) flags = parser.flags try: next(flags) assert False except StopIteration: pass assert type(parser.argv) is list assert len(parser.argv) == 2 assert type(parser.argc) is int assert parser.argc == 2 assert parser.argv == ['a', 'b'] parser = arg.Parser(argv = ['-a-b']) flags = parser.flags assert next(flags) == 'a' assert parser.flag == '-a' try: next(flags) assert False except arg.UsageError: pass parser = arg.Parser(argv = ['-123', '-xyz']) flags = parser.flags assert next(flags) == '1' assert parser.flag == '-1' assert next(flags) == '2' assert parser.flag == '-2' assert next(flags) == '3' assert parser.flag == '-3' assert next(flags) == 'x' assert parser.flag == '-x' assert next(flags) == 'y' assert parser.flag == '-y' assert next(flags) == 'z' assert parser.flag == '-z' try: next(flags) assert False except StopIteration: pass assert type(parser.argv) is list assert len(parser.argv) == 0 assert type(parser.argc) is int assert parser.argc == 0 parser = arg.Parser(argv = ['-123', '-xyz']) flags = parser.flags assert next(flags) == '1' assert parser.flag == '-1' assert parser.arghere == '123' assert parser.isargnum assert parser.argnum == 123 assert next(flags) == 'x' assert parser.flag == '-x' assert next(flags) == 'y' assert parser.flag == '-y' assert next(flags) == 'z' assert parser.flag == '-z' try: next(flags) assert False except StopIteration: pass assert type(parser.argv) is list assert len(parser.argv) == 0 assert type(parser.argc) is int assert parser.argc == 0 parser = arg.Parser(argv = ['-1', '-xyz']) flags = parser.flags assert next(flags) == '1' assert parser.flag == '-1' assert parser.arghere == '1' assert parser.isargnum assert parser.argnum == 1 assert next(flags) == 'x' assert parser.flag == '-x' assert next(flags) == 'y' assert parser.flag == '-y' assert next(flags) == 'z' assert parser.flag == '-z' try: next(flags) assert False except StopIteration: pass assert type(parser.argv) is list assert len(parser.argv) == 0 assert type(parser.argc) is int assert parser.argc == 0 parser = arg.Parser(argv = ['-ab', '--', '-xyz'], store_nonflags = True) flags = parser.flags assert next(flags) == 'a' assert parser.flag == '-a' assert next(flags) == 'b' assert parser.flag == '-b' try: next(flags) assert False except StopIteration: pass assert type(parser.argv) is list assert len(parser.argv) == 1 assert type(parser.argc) is int assert parser.argc == 1 assert parser.argv == ['-xyz'] parser = arg.Parser(argv = ['-ab', '--', '-xyz'], keep_dashdash = True, store_nonflags = True) flags = parser.flags assert next(flags) == 'a' assert parser.flag == '-a' assert next(flags) == 'b' assert parser.flag == '-b' try: next(flags) assert False except StopIteration: pass assert type(parser.argv) is list assert len(parser.argv) == 2 assert type(parser.argc) is int assert parser.argc == 2 assert parser.argv == ['--', '-xyz'] for mid in ('o', 'oo'): parser = arg.Parser(argv = ['-ab', mid, '-xyz'], store_nonflags = True) flags = parser.flags assert next(flags) == 'a' assert parser.flag == '-a' assert next(flags) == 'b' assert parser.flag == '-b' assert next(flags) == 'x' assert parser.flag == '-x' assert next(flags) == 'y' assert parser.flag == '-y' assert next(flags) == 'z' assert parser.flag == '-z' try: next(flags) assert False except StopIteration: pass assert type(parser.argv) is list assert len(parser.argv) == 1 assert type(parser.argc) is int assert parser.argc == 1 assert parser.argv == [mid] parser = arg.Parser(argv = ['-abc'], symbols = '+') flags = parser.flags try: next(flags) assert False except StopIteration: pass assert type(parser.argv) is list assert len(parser.argv) == 1 assert type(parser.argc) is int assert parser.argc == 1 assert parser.argv == ['-abc'] parser = arg.Parser(argv = ['+xyz', '-abc'], symbols = '+') flags = parser.flags assert next(flags) == 'x' assert parser.flag == '+x' assert parser.symbol == '+' assert next(flags) == 'y' assert parser.flag == '+y' assert next(flags) == 'z' assert parser.flag == '+z' assert parser.symbol == '+' try: next(flags) assert False except StopIteration: pass assert type(parser.argv) is list assert len(parser.argv) == 1 assert type(parser.argc) is int assert parser.argc == 1 assert parser.argv == ['-abc'] parser = arg.Parser(argv = ['+xyz', '-abc'], symbols = '-+') flags = parser.flags assert next(flags) == 'x' assert parser.flag == '+x' assert parser.symbol == '+' assert next(flags) == 'y' assert parser.flag == '+y' assert next(flags) == 'z' assert parser.flag == '+z' assert parser.symbol == '+' assert next(flags) == 'a' assert parser.flag == '-a' assert parser.symbol == '-' assert next(flags) == 'b' assert parser.flag == '-b' assert next(flags) == 'c' assert parser.flag == '-c' assert parser.symbol == '-' try: next(flags) assert False except StopIteration: pass assert type(parser.argv) is list assert len(parser.argv) == 0 assert type(parser.argc) is int assert parser.argc == 0 parser = arg.Parser(argv = ['+xyz', '++', '-abc'], symbols = '-+') flags = parser.flags assert next(flags) == 'x' assert parser.flag == '+x' assert parser.symbol == '+' assert next(flags) == 'y' assert parser.flag == '+y' assert next(flags) == 'z' assert parser.flag == '+z' assert parser.symbol == '+' try: next(flags) assert False except StopIteration: pass assert type(parser.argv) is list assert len(parser.argv) == 2 assert type(parser.argc) is int assert parser.argc == 2 assert parser.argv == ['++', '-abc'] parser = arg.Parser(argv = ['-123', '-xyz']) flags = parser.flags assert next(flags) == '1' assert parser.arg == '23' assert next(flags) == 'x' assert parser.flag == '-x' assert parser.arg == 'yz' try: next(flags) assert False except StopIteration: pass assert type(parser.argv) is list assert len(parser.argv) == 0 assert type(parser.argc) is int assert parser.argc == 0 for a in ('', '-x'): parser = arg.Parser(argv = ['-1', a]) flags = parser.flags assert next(flags) == '1' assert parser.arg == a try: next(flags) assert False except StopIteration: pass assert type(parser.argv) is list assert len(parser.argv) == 0 assert type(parser.argc) is int assert parser.argc == 0 parser = arg.Parser(argv = ['-123', '-xyz']) flags = parser.flags assert next(flags) == '1' parser.consume() assert next(flags) == 'x' parser.consume() try: next(flags) assert False except StopIteration: pass assert type(parser.argv) is list assert len(parser.argv) == 0 assert type(parser.argc) is int assert parser.argc == 0 parser = arg.Parser(argv = ['--123', 'x']) flags = parser.flags assert next(flags) == '-' assert not parser.testlong('--abc') assert parser.testlong('--123', arg.NEED_NO_ARGUMENT) try: next(flags) assert False except StopIteration: pass assert type(parser.argv) is list assert len(parser.argv) == 1 assert type(parser.argc) is int assert parser.argc == 1 assert parser.argv == ['x'] for check_arg in (True, False): for arg_need in (arg.NEED_ARGUMENT, arg.NEED_DETACHED_ARGUMENT): parser = arg.Parser(argv = ['--123', 'x']) flags = parser.flags assert next(flags) == '-' assert not parser.testlong('--abc') assert parser.testlong('--123', arg_need) if check_arg: assert parser.arg == 'x' try: next(flags) assert False except StopIteration: pass assert type(parser.argv) is list assert len(parser.argv) == 0 assert type(parser.argc) is int assert parser.argc == 0 for check_arg in (True, False): parser = arg.Parser(argv = ['--123=x']) flags = parser.flags assert next(flags) == '-' assert not parser.testlong('--abc') assert parser.testlong('--123', arg.NEED_ATTACHED_ARGUMENT) if check_arg: assert parser.arg == 'x' try: next(flags) assert False except StopIteration: pass assert type(parser.argv) is list assert len(parser.argv) == 0 assert type(parser.argc) is int assert parser.argc == 0 parser = arg.Parser(argv = ['--123', 'x']) flags = parser.flags assert next(flags) == '-' assert not parser.testlong('--abc') try: parser.testlong('--123', arg.NEED_ATTACHED_ARGUMENT) assert False except arg.UsageError: pass for a in ('x', ''): parser = arg.Parser(argv = ['--123=' + a]) flags = parser.flags assert next(flags) == '-' assert not parser.testlong('--abc') assert parser.testlong('--123', arg.MAY_HAVE_ATTACHED_ARGUMENT) assert parser.arg == a try: next(flags) assert False except StopIteration: pass assert type(parser.argv) is list assert len(parser.argv) == 0 assert type(parser.argc) is int assert parser.argc == 0 parser = arg.Parser(argv = ['--123', a]) flags = parser.flags assert next(flags) == '-' assert not parser.testlong('--abc') assert parser.testlong('--123', arg.MAY_HAVE_ATTACHED_ARGUMENT) assert parser.arg == None try: next(flags) assert False except StopIteration: pass assert type(parser.argv) is list assert len(parser.argv) == 1 assert type(parser.argc) is int assert parser.argc == 1 assert parser.argv == [a] parser = arg.Parser(argv = ['-a-'], usage = lambda : sys.exit(0)) flags = parser.flags assert next(flags) == 'a' assert parser.flag == '-a' next(flags) assert False