MCPcopy Index your code
hub / github.com/RustPython/RustPython / TestHelpFormattingMetaclass

Class TestHelpFormattingMetaclass

Lib/test/test_argparse.py:4002–4086  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4000# =====================
4001
4002class TestHelpFormattingMetaclass(type):
4003
4004 def __init__(cls, name, bases, bodydict):
4005 if name == 'HelpTestCase':
4006 return
4007
4008 class AddTests(object):
4009
4010 def __init__(self, test_class, func_suffix, std_name):
4011 self.func_suffix = func_suffix
4012 self.std_name = std_name
4013
4014 for test_func in [self.test_format,
4015 self.test_print,
4016 self.test_print_file]:
4017 test_name = '%s_%s' % (test_func.__name__, func_suffix)
4018
4019 def test_wrapper(self, test_func=test_func):
4020 test_func(self)
4021 try:
4022 test_wrapper.__name__ = test_name
4023 except TypeError:
4024 pass
4025 setattr(test_class, test_name, test_wrapper)
4026
4027 def _get_parser(self, tester):
4028 parser = argparse.ArgumentParser(
4029 *tester.parser_signature.args,
4030 **tester.parser_signature.kwargs)
4031 for argument_sig in getattr(tester, 'argument_signatures', []):
4032 parser.add_argument(*argument_sig.args,
4033 **argument_sig.kwargs)
4034 group_sigs = getattr(tester, 'argument_group_signatures', [])
4035 for group_sig, argument_sigs in group_sigs:
4036 group = parser.add_argument_group(*group_sig.args,
4037 **group_sig.kwargs)
4038 for argument_sig in argument_sigs:
4039 group.add_argument(*argument_sig.args,
4040 **argument_sig.kwargs)
4041 subparsers_sigs = getattr(tester, 'subparsers_signatures', [])
4042 if subparsers_sigs:
4043 subparsers = parser.add_subparsers()
4044 for subparser_sig in subparsers_sigs:
4045 subparsers.add_parser(*subparser_sig.args,
4046 **subparser_sig.kwargs)
4047 return parser
4048
4049 def _test(self, tester, parser_text):
4050 expected_text = getattr(tester, self.func_suffix)
4051 expected_text = textwrap.dedent(expected_text)
4052 tester.maxDiff = None
4053 tester.assertEqual(expected_text, parser_text)
4054
4055 @force_not_colorized
4056 def test_format(self, tester):
4057 parser = self._get_parser(tester)
4058 format = getattr(parser, 'format_%s' % self.func_suffix)
4059 self._test(tester, format())

Callers 1

test_argparse.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected