summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorJoe Jevnik <JoeJev@gmail.com>2024-04-23 11:15:15 (GMT)
committerGitHub <noreply@github.com>2024-04-23 11:15:15 (GMT)
commiteb927e9fc823de9539fcb82c9ea9d055462eb04a (patch)
treec51abe6fd065cbdbbfa1e95f2bbf2f90a6d85eef /Lib/test
parente17cd1fbfd4f20824c686c7242423e84ba6a6cc5 (diff)
downloadcpython-eb927e9fc823de9539fcb82c9ea9d055462eb04a.zip
cpython-eb927e9fc823de9539fcb82c9ea9d055462eb04a.tar.gz
cpython-eb927e9fc823de9539fcb82c9ea9d055462eb04a.tar.bz2
gh-68114: Fix handling for removed PyArg_ParseTuple 'w' formatters (GH-8204)
Co-authored-by: Joe Jevnik <joe@quantopian.com> Co-authored-by: Petr Viktorin <encukou@gmail.com>
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_capi/test_getargs.py38
1 files changed, 21 insertions, 17 deletions
diff --git a/Lib/test/test_capi/test_getargs.py b/Lib/test/test_capi/test_getargs.py
index 1203980..e710400 100644
--- a/Lib/test/test_capi/test_getargs.py
+++ b/Lib/test/test_capi/test_getargs.py
@@ -856,20 +856,24 @@ class Bytes_TestCase(unittest.TestCase):
def test_w_star(self):
# getargs_w_star() modifies first and last byte
- from _testcapi import getargs_w_star
- self.assertRaises(TypeError, getargs_w_star, 'abc\xe9')
- self.assertRaises(TypeError, getargs_w_star, b'bytes')
- self.assertRaises(TypeError, getargs_w_star, b'nul:\0')
- self.assertRaises(TypeError, getargs_w_star, memoryview(b'bytes'))
- buf = bytearray(b'bytearray')
- self.assertEqual(getargs_w_star(buf), b'[ytearra]')
- self.assertEqual(buf, bytearray(b'[ytearra]'))
- buf = bytearray(b'memoryview')
- self.assertEqual(getargs_w_star(memoryview(buf)), b'[emoryvie]')
- self.assertEqual(buf, bytearray(b'[emoryvie]'))
- self.assertRaises(TypeError, getargs_w_star, None)
- self.assertRaises(TypeError, getargs_w_star, NONCONTIG_WRITABLE)
- self.assertRaises(TypeError, getargs_w_star, NONCONTIG_READONLY)
+ # getargs_w_star_opt() takes additional optional args: with one
+ # argument it should behave the same as getargs_w_star
+ from _testcapi import getargs_w_star, getargs_w_star_opt
+ for func in (getargs_w_star, getargs_w_star_opt):
+ with self.subTest(func=func):
+ self.assertRaises(TypeError, func, 'abc\xe9')
+ self.assertRaises(TypeError, func, b'bytes')
+ self.assertRaises(TypeError, func, b'nul:\0')
+ self.assertRaises(TypeError, func, memoryview(b'bytes'))
+ buf = bytearray(b'bytearray')
+ self.assertEqual(func(buf), b'[ytearra]')
+ self.assertEqual(buf, bytearray(b'[ytearra]'))
+ buf = bytearray(b'memoryview')
+ self.assertEqual(func(memoryview(buf)), b'[emoryvie]')
+ self.assertEqual(buf, bytearray(b'[emoryvie]'))
+ self.assertRaises(TypeError, func, None)
+ self.assertRaises(TypeError, func, NONCONTIG_WRITABLE)
+ self.assertRaises(TypeError, func, NONCONTIG_READONLY)
def test_getargs_empty(self):
from _testcapi import getargs_empty
@@ -1112,9 +1116,9 @@ class SkipitemTest(unittest.TestCase):
c = chr(i)
# skip parentheses, the error reporting is inconsistent about them
- # skip 'e', it's always a two-character code
+ # skip 'e' and 'w', they're always two-character codes
# skip '|' and '$', they don't represent arguments anyway
- if c in '()e|$':
+ if c in '()ew|$':
continue
# test the format unit when not skipped
@@ -1152,7 +1156,7 @@ class SkipitemTest(unittest.TestCase):
dict_b = {'b':1}
keywords = ["a", "b"]
- supported = ('s#', 's*', 'z#', 'z*', 'y#', 'y*', 'w#', 'w*')
+ supported = ('s#', 's*', 'z#', 'z*', 'y#', 'y*', 'w*')
for c in string.ascii_letters:
for c2 in '#*':
f = c + c2