More 3.6 CALL_FUNCTION argument parsing

This commit is contained in:
rocky
2018-04-01 11:26:46 -04:00
parent 120412f5a8
commit 254d0519bb
3 changed files with 25 additions and 39 deletions

View File

@@ -1,37 +1,18 @@
# From 3.6.4 pickletools.py
# Bug in 3.6 CALL_FUNCTION_KW in an not exponentially
# From 3.6.4 test_argparse.py
# Bug was in parsing ** args
import argparse
parser = argparse.ArgumentParser(
description='disassemble one or more pickle files')
parser.add_argument(
'pickle_file', type=argparse.FileType('br'),
nargs='*', help='the pickle file')
parser.add_argument(
'-m', '--memo', action='store_true',
help='preserve memo between disassemblies')
parser.add_argument(
'-l', '--indentlevel', default=4, type=int,
help='the number of blanks by which to indent a new MARK level')
parser.add_argument(
'-a', '--annotate', action='store_true',
help='annotate each line with a short opcode description')
parser.add_argument(
'-p', '--preamble', default="==> {name} <==",
help='if more than one pickle file is specified, print this before'
' each disassembly')
parser.add_argument(
'-t', '--test', action='store_true',
help='run self-test suite')
parser.add_argument(
'-v', action='store_true',
help='run verbosely; only affects self-test run')
args = parser.parse_args()
def test_namespace_starkwargs_notidentifier(self):
ns = argparse.Namespace(**{'"': 'quote'})
string = """Namespace(**{'"': 'quote'})"""
assert ns == string
assert args.annotate == False
assert args.indentlevel == 4
assert args.memo == False
assert args.pickle_file == []
assert args.preamble == '==> {name} <=='
assert args.test == False
assert args.v == False
def test_namespace_kwargs_and_starkwargs_notidentifier(self):
ns = argparse.Namespace(a=1, **{'"': 'quote'})
string = """Namespace(a=1, **{'"': 'quote'})"""
assert ns == string
def test_namespace(self):
ns = argparse.Namespace(foo=42, bar='spam')
string = "Namespace(bar='spam', foo=42)"
assert ns == string