Author: [email protected]
Branch: py3.6
Changeset: r92882:652e45c71368
Date: 2017-10-30 15:18 +0000
http://bitbucket.org/pypy/pypy/changeset/652e45c71368/

Log:    Support b2a_base64 newline kwarg (new in 3.6)

diff --git a/pypy/module/binascii/interp_base64.py 
b/pypy/module/binascii/interp_base64.py
--- a/pypy/module/binascii/interp_base64.py
+++ b/pypy/module/binascii/interp_base64.py
@@ -78,8 +78,8 @@
 table_b2a_base64 = (
     "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")
 
-@unwrap_spec(bin='bufferstr')
-def b2a_base64(space, bin):
+@unwrap_spec(bin='bufferstr', newline=bool)
+def b2a_base64(space, bin, __kwonly__, newline=True):
     "Base64-code line of data."
 
     newlength = (len(bin) + 2) // 3
@@ -109,5 +109,6 @@
     elif leftbits == 4:
         res.append(table_b2a_base64[(leftchar & 0xf) << 2])
         res.append(PAD)
-    res.append('\n')
+    if newline:
+        res.append('\n')
     return space.newbytes(res.build())
diff --git a/pypy/module/binascii/test/test_binascii.py 
b/pypy/module/binascii/test/test_binascii.py
--- a/pypy/module/binascii/test/test_binascii.py
+++ b/pypy/module/binascii/test/test_binascii.py
@@ -121,16 +121,22 @@
         raises(UnicodeEncodeError, self.binascii.a2b_base64, u"caf\xe9")
 
     def test_b2a_base64(self):
-        for input, expected in [
-            (b"", b""),
-            (b"b", b"Yg=="),
-            (b"i\xb7\x1d", b"abcd"),
-            (b"i\xb7\x1dy", b"abcdeQ=="),
-            (b"i\xb7\x1dy\xf8", b"abcdefg="),
-            (b"i\xb7\x1dy\xf8!", b"abcdefgh"),
-            (b"i\xb7\x1d" * 345, b"abcd" * 345),
-            ]:
-            assert self.binascii.b2a_base64(input) == expected + b'\n'
+        for newline in (True, False, None):
+            for input, expected in [
+                (b"", b""),
+                (b"b", b"Yg=="),
+                (b"i\xb7\x1d", b"abcd"),
+                (b"i\xb7\x1dy", b"abcdeQ=="),
+                (b"i\xb7\x1dy\xf8", b"abcdefg="),
+                (b"i\xb7\x1dy\xf8!", b"abcdefgh"),
+                (b"i\xb7\x1d" * 345, b"abcd" * 345),
+                ]:
+                kwargs = {}
+                if isinstance(newline, bool):
+                    kwargs['newline'] = newline
+                if newline is not False:
+                    expected += b'\n'
+                assert self.binascii.b2a_base64(input, **kwargs) == expected
 
     def test_a2b_qp(self):
         for input, expected in [
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to