-
- --- ./tests/test_cmdline.py.orig 2019-01-17 21:11:36.245282362 +0100
- +++ ./tests/test_cmdline.py 2019-01-17 21:44:28.090657851 +0100
- @@ -28,10 +28,37 @@
- '''
-
-
- +class StrictStringOutput(StringIO):
- + log = sys.stderr
- +
- + def __init__(self):
- + StringIO.__init__(self)
- + self.__text_type = None
- + self.__text_sample = None
- +
- + def write(self, s):
- + return StringIO.write(self, self.__validate(s))
- +
- + def writelines(self, iterable):
- + return StringIO.writelines(self.__validate(text) for text in iterable)
- +
- + def __validate(self, text):
- + if self.__text_type is None:
- + self.__text_type = text.__class__
- + self.__text_sample = text
- + elif text.__class__ != self.__text_type:
- + self.log.write(
- + "Incompatible types %r (%s) and %r (%s)\n" % (
- + self.__text_sample, self.__text_type,
- + text, text.__class__))
- + return text
- +
- +
- def run_cmdline(*args, **kwds):
- saved_stdin = sys.stdin
- saved_stdout = sys.stdout
- saved_stderr = sys.stderr
- + print(sys.version_info)
- if sys.version_info > (3,):
- stdin_buffer = BytesIO()
- stdout_buffer = BytesIO()
- @@ -40,9 +67,9 @@
- new_stdout = sys.stdout = io.TextIOWrapper(stdout_buffer, 'utf-8')
- new_stderr = sys.stderr = io.TextIOWrapper(stderr_buffer, 'utf-8')
- else:
- - stdin_buffer = new_stdin = sys.stdin = StringIO()
- - stdout_buffer = new_stdout = sys.stdout = StringIO()
- - stderr_buffer = new_stderr = sys.stderr = StringIO()
- + stdin_buffer = new_stdin = sys.stdin = StrictStringOutput()
- + stdout_buffer = new_stdout = sys.stdout = StrictStringOutput()
- + stderr_buffer = new_stderr = sys.stderr = StrictStringOutput()
- new_stdin.write(kwds.get('stdin', ''))
- new_stdin.seek(0, 0)
- try:
- @@ -53,8 +80,9 @@
- sys.stderr = saved_stderr
- new_stdout.flush()
- new_stderr.flush()
- - out, err = stdout_buffer.getvalue().decode('utf-8'), \
- - stderr_buffer.getvalue().decode('utf-8')
- + print(repr(stdout_buffer.buflist))
- + out = stdout_buffer.getvalue().decode('utf-8')
- + err = stderr_buffer.getvalue().decode('utf-8')
- return (ret, out, err)
-
-
- --- ./tests/test_util.py.orig 2019-01-17 21:15:08.341082845 +0100
- +++ ./tests/test_util.py 2019-01-17 21:32:47.646780336 +0100
- @@ -10,7 +10,7 @@
- import re
- import unittest
-
- -from pygments import util, console
- +from pygments import util, console, StringIO
-
-
- class FakeLexer(object):
- @@ -211,3 +211,24 @@
- self.assertEqual(console.reset_color(), console.codes['reset'])
- self.assertEqual(console.colorize('blue', 'text'),
- console.codes['blue'] + 'text' + console.codes['reset'])
- +
- +
- +class StringIOTest(unittest.TestCase):
- +
- + def test_mix_default_unicode(self):
- + buf = StringIO()
- + buf.write('The Arduino\xc2\xae language style')
- + buf.write(u'unicode')
- + buf.getvalue()
- +
- + def test_mix_default_bytes(self):
- + buf = StringIO()
- + buf.write(u'The Arduino\xc2\xae language style')
- + buf.write(b'bytes')
- + buf.getvalue()
- +
- + def test_mix_unicode_bytes(self):
- + buf = StringIO()
- + buf.write('The Arduino\xc2\xae language style')
- + buf.write(b'bytes \xc2\xae')
- + buf.getvalue()
-