Issue #4769: Fix main() function of the base64 module, use sys.stdin.buffer and
sys.stdout.buffer (instead of sys.stdin and sys.stdout) to use the bytes API
This commit is contained in:
parent
0b2f5180d7
commit
479736b31c
|
@ -383,9 +383,9 @@ def main():
|
||||||
if o == '-u': func = decode
|
if o == '-u': func = decode
|
||||||
if o == '-t': test(); return
|
if o == '-t': test(); return
|
||||||
if args and args[0] != '-':
|
if args and args[0] != '-':
|
||||||
func(open(args[0], 'rb'), sys.stdout)
|
func(open(args[0], 'rb'), sys.stdout.buffer)
|
||||||
else:
|
else:
|
||||||
func(sys.stdin, sys.stdout)
|
func(sys.stdin.buffer, sys.stdout.buffer)
|
||||||
|
|
||||||
|
|
||||||
def test():
|
def test():
|
||||||
|
|
|
@ -2,6 +2,8 @@ import unittest
|
||||||
from test import support
|
from test import support
|
||||||
import base64
|
import base64
|
||||||
import binascii
|
import binascii
|
||||||
|
import sys
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -207,6 +209,38 @@ class BaseXYTestCase(unittest.TestCase):
|
||||||
self.assertTrue(issubclass(binascii.Error, ValueError))
|
self.assertTrue(issubclass(binascii.Error, ValueError))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class TestMain(unittest.TestCase):
|
||||||
|
def get_output(self, *args, **options):
|
||||||
|
args = (sys.executable, '-m', 'base64') + args
|
||||||
|
return subprocess.check_output(args, **options)
|
||||||
|
|
||||||
|
def test_encode_decode(self):
|
||||||
|
output = self.get_output('-t')
|
||||||
|
self.assertSequenceEqual(output.splitlines(), (
|
||||||
|
b"b'Aladdin:open sesame'",
|
||||||
|
br"b'QWxhZGRpbjpvcGVuIHNlc2FtZQ==\n'",
|
||||||
|
b"b'Aladdin:open sesame'",
|
||||||
|
))
|
||||||
|
|
||||||
|
def test_encode_file(self):
|
||||||
|
with open(support.TESTFN, 'wb') as fp:
|
||||||
|
fp.write(b'a\xffb\n')
|
||||||
|
|
||||||
|
output = self.get_output('-e', support.TESTFN)
|
||||||
|
self.assertEquals(output.rstrip(), b'Yf9iCg==')
|
||||||
|
|
||||||
|
with open(support.TESTFN, 'rb') as fp:
|
||||||
|
output = self.get_output('-e', stdin=fp)
|
||||||
|
self.assertEquals(output.rstrip(), b'Yf9iCg==')
|
||||||
|
|
||||||
|
def test_decode(self):
|
||||||
|
with open(support.TESTFN, 'wb') as fp:
|
||||||
|
fp.write(b'Yf9iCg==')
|
||||||
|
output = self.get_output('-d', support.TESTFN)
|
||||||
|
self.assertEquals(output, b'a\xffb\n')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def test_main():
|
||||||
support.run_unittest(__name__)
|
support.run_unittest(__name__)
|
||||||
|
|
|
@ -392,6 +392,10 @@ C-API
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #4769: Fix main() function of the base64 module, use sys.stdin.buffer
|
||||||
|
and sys.stdout.buffer (instead of sys.stdin and sys.stdout) to use the bytes
|
||||||
|
API
|
||||||
|
|
||||||
- Issue #8770: now sysconfig displays information when it's called as
|
- Issue #8770: now sysconfig displays information when it's called as
|
||||||
a script. Initial idea by Sridhar Ratnakumar.
|
a script. Initial idea by Sridhar Ratnakumar.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue