Exemplo n.º 1
0
class TestSmartArgumentParser(UnitTest):
    def setUp(self):
        self.argparser = SmartArgumentParser()
        self.subparser = self.argparser.add_subparsers()
        self.subparser.add_parser("test").set_defaults(test=2)
        self.argparser.add_argument("entries", nargs="+", type=int)

    def test_can_add_one_of_each(self):
        args = vars(self.argparser.parse_args(["test", "1"]))
        self.assertEqual(args, {'entries': [1], 'test': 2})

    def test_can_add_multiple_entries(self):
        args = vars(self.argparser.parse_args(["test", "1", "2", "3"]))
        self.assertEqual(args["test"], 2)
        self.assertSetEqual(set(args["entries"]), {1, 2, 3})

    @mute
    def test_if_wrong_argument(self):
        self.assertRaises(SystemExit, self.argparser.parse_args, ["test", "1", "2", "-n"])
Exemplo n.º 2
0
class TestSmartArgumentParser(UnitTest):
    def setUp(self):
        self.argparser = SmartArgumentParser()
        self.subparser = self.argparser.add_subparsers()
        self.subparser.add_parser("test").set_defaults(test=2)
        self.argparser.add_argument("entries", nargs="+", type=int)

    def test_can_add_one_of_each(self):
        args = vars(self.argparser.parse_args(["test", "1"]))
        self.assertEqual(args, {'entries': [1], 'test': 2})

    def test_can_add_multiple_entries(self):
        args = vars(self.argparser.parse_args(["test", "1", "2", "3"]))
        self.assertEqual(args["test"], 2)
        self.assertSetEqual(set(args["entries"]), {1, 2, 3})

    @mute
    def test_if_wrong_argument(self):
        self.assertRaises(SystemExit, self.argparser.parse_args,
                          ["test", "1", "2", "-n"])
Exemplo n.º 3
0
def parse_args(args: list) -> dict:
    """
    Create a parser for command line attributes and parses them
    :param args: the arguments to parse
    :return: parsed arguments
    """
    parser = SmartArgumentParser(
        description="Triggers some bug in listed programs",
        parents=[arguments.get_verbosity_parser()])
    plugin_parser = parser.add_subparsers(metavar="plugin")
    parser.add_argument("bugs",
                        nargs="+",
                        type=str,
                        help="one of {} or all".format(", ".join(PROGRAMS)),
                        metavar="bug",
                        choices=PROGRAMS + ["all"])

    register_for_trigger(parser=parser, subparser=plugin_parser)

    parsed_args = parser.parse_args(args)

    # noinspection PyUnresolvedReferences
    logging.getLogger().setLevel(parsed_args.logging_level)

    _bugs = parsed_args.bugs
    if "all" in _bugs:
        parsed_args.bugs = [
            program for program in PROGRAMS if os.path.exists(
                get_trigger_conf(program).get("install_directory"))
        ]
    else:
        for _ in _bugs:
            if _ not in PROGRAMS:
                parser.print_help()
                exit(PROGRAM_ARGUMENT_ERROR)

    return vars(parsed_args)
Exemplo n.º 4
0
def parse_args(args: list) -> dict:
    """
    Create a parser for command line attributes and parses them
    :param args: the arguments to parse
    :return: parsed arguments
    """
    parser = SmartArgumentParser(
        description="Triggers some bug in listed programs", parents=[arguments.get_verbosity_parser()]
    )
    plugin_parser = parser.add_subparsers(metavar="plugin")
    parser.add_argument(
        "bugs",
        nargs="+",
        type=str,
        help="one of {} or all".format(", ".join(PROGRAMS)),
        metavar="bug",
        choices=PROGRAMS + ["all"],
    )

    register_for_trigger(parser=parser, subparser=plugin_parser)

    parsed_args = parser.parse_args(args)

    # noinspection PyUnresolvedReferences
    logging.getLogger().setLevel(parsed_args.logging_level)

    _bugs = parsed_args.bugs
    if "all" in _bugs:
        parsed_args.bugs = [
            program for program in PROGRAMS if os.path.exists(get_trigger_conf(program).get("install_directory"))
        ]
    else:
        for _ in _bugs:
            if _ not in PROGRAMS:
                parser.print_help()
                exit(PROGRAM_ARGUMENT_ERROR)

    return vars(parsed_args)
Exemplo n.º 5
0
 def setUp(self):
     self.argparser = SmartArgumentParser()
     self.subparser = self.argparser.add_subparsers()
     self.subparser.add_parser("test").set_defaults(test=2)
     self.argparser.add_argument("entries", nargs="+", type=int)
Exemplo n.º 6
0
 def setUp(self):
     self.argparser = SmartArgumentParser()
     self.subparser = self.argparser.add_subparsers()
     self.subparser.add_parser("test").set_defaults(test=2)
     self.argparser.add_argument("entries", nargs="+", type=int)