]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-94808: Improve coverage of _PyBytes_FormatEx (GH-95895)
authorMichael Droettboom <mdboom@gmail.com>
Wed, 7 Sep 2022 11:51:50 +0000 (07:51 -0400)
committerGitHub <noreply@github.com>
Wed, 7 Sep 2022 11:51:50 +0000 (04:51 -0700)
There were two specific areas not covered:

- %(name) syntax
- %*s syntax

Automerge-Triggered-By: GH:iritkatriel
Lib/test/test_bytes.py

index 521e391b8d5f9db0ebb6986f574a50f599361b12..53ba1ad6f5911f6e2fc0d4f6141ba0fdc98b4feb 100644 (file)
@@ -715,6 +715,24 @@ class BaseBytesTest:
         self.assertEqual(b, b'hello,\x00world!')
         self.assertIs(type(b), self.type2test)
 
+        def check(fmt, vals, result):
+            b = self.type2test(fmt)
+            b = b % vals
+            self.assertEqual(b, result)
+            self.assertIs(type(b), self.type2test)
+
+        # A set of tests adapted from test_unicode:UnicodeTest.test_formatting
+        check(b'...%(foo)b...', {b'foo':b"abc"}, b'...abc...')
+        check(b'...%(f(o)o)b...', {b'f(o)o':b"abc", b'foo':b'bar'}, b'...abc...')
+        check(b'...%(foo)b...', {b'foo':b"abc",b'def':123}, b'...abc...')
+        check(b'%*b', (5, b'abc',), b'  abc')
+        check(b'%*b', (-5, b'abc',), b'abc  ')
+        check(b'%*.*b', (5, 2, b'abc',), b'   ab')
+        check(b'%*.*b', (5, 3, b'abc',), b'  abc')
+        check(b'%i %*.*b', (10, 5, 3, b'abc',), b'10   abc')
+        check(b'%i%b %*.*b', (10, b'3', 5, 3, b'abc',), b'103   abc')
+        check(b'%c', b'a', b'a')
+
     def test_imod(self):
         b = self.type2test(b'hello, %b!')
         orig = b