summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2018-07-11 14:41:43 (GMT)
committerGitHub <noreply@github.com>2018-07-11 14:41:43 (GMT)
commit504373c59b48f1ea12132d515459022730db6047 (patch)
tree322726bb6a2abfc2a6422e9c947db4c6d7b1cfde /Lib
parentb91a3a0d61596cafb1b46c98fab65fee16a8bbbb (diff)
downloadcpython-504373c59b48f1ea12132d515459022730db6047.zip
cpython-504373c59b48f1ea12132d515459022730db6047.tar.gz
cpython-504373c59b48f1ea12132d515459022730db6047.tar.bz2
bpo-23927: Make getargs.c skipitem() skipping 'w*'. (GH-8192)
Diffstat (limited to 'Lib')
-rw-r--r--Lib/test/test_capi.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/Lib/test/test_capi.py b/Lib/test/test_capi.py
index 2a6de3c..bb2570a 100644
--- a/Lib/test/test_capi.py
+++ b/Lib/test/test_capi.py
@@ -6,6 +6,7 @@ import os
import pickle
import random
import re
+import string
import subprocess
import sys
import sysconfig
@@ -489,6 +490,37 @@ class SkipitemTest(unittest.TestCase):
c, i, when_skipped, when_not_skipped))
self.assertIs(when_skipped, when_not_skipped, message)
+ def test_skipitem_with_suffix(self):
+ parse = _testcapi.parse_tuple_and_keywords
+ empty_tuple = ()
+ tuple_1 = (0,)
+ dict_b = {'b':1}
+ keywords = ["a", "b"]
+
+ supported = ('s#', 's*', 'z#', 'z*', 'u#', 'Z#', 'y#', 'y*', 'w#', 'w*')
+ for c in string.ascii_letters:
+ for c2 in '#*':
+ f = c + c2
+ with self.subTest(format=f):
+ optional_format = "|" + f + "i"
+ if f in supported:
+ parse(empty_tuple, dict_b, optional_format, keywords)
+ else:
+ with self.assertRaisesRegex(SystemError,
+ 'impossible<bad format char>'):
+ parse(empty_tuple, dict_b, optional_format, keywords)
+
+ for c in map(chr, range(32, 128)):
+ f = 'e' + c
+ optional_format = "|" + f + "i"
+ with self.subTest(format=f):
+ if c in 'st':
+ parse(empty_tuple, dict_b, optional_format, keywords)
+ else:
+ with self.assertRaisesRegex(SystemError,
+ 'impossible<bad format char>'):
+ parse(empty_tuple, dict_b, optional_format, keywords)
+
def test_parse_tuple_and_keywords(self):
# Test handling errors in the parse_tuple_and_keywords helper itself
self.assertRaises(TypeError, _testcapi.parse_tuple_and_keywords,