spacepaste

  1.  
  2. --- ./tests/test_cmdline.py.orig 2019-01-17 21:11:36.245282362 +0100
  3. +++ ./tests/test_cmdline.py 2019-01-17 21:44:28.090657851 +0100
  4. @@ -28,10 +28,37 @@
  5. '''
  6. +class StrictStringOutput(StringIO):
  7. + log = sys.stderr
  8. +
  9. + def __init__(self):
  10. + StringIO.__init__(self)
  11. + self.__text_type = None
  12. + self.__text_sample = None
  13. +
  14. + def write(self, s):
  15. + return StringIO.write(self, self.__validate(s))
  16. +
  17. + def writelines(self, iterable):
  18. + return StringIO.writelines(self.__validate(text) for text in iterable)
  19. +
  20. + def __validate(self, text):
  21. + if self.__text_type is None:
  22. + self.__text_type = text.__class__
  23. + self.__text_sample = text
  24. + elif text.__class__ != self.__text_type:
  25. + self.log.write(
  26. + "Incompatible types %r (%s) and %r (%s)\n" % (
  27. + self.__text_sample, self.__text_type,
  28. + text, text.__class__))
  29. + return text
  30. +
  31. +
  32. def run_cmdline(*args, **kwds):
  33. saved_stdin = sys.stdin
  34. saved_stdout = sys.stdout
  35. saved_stderr = sys.stderr
  36. + print(sys.version_info)
  37. if sys.version_info > (3,):
  38. stdin_buffer = BytesIO()
  39. stdout_buffer = BytesIO()
  40. @@ -40,9 +67,9 @@
  41. new_stdout = sys.stdout = io.TextIOWrapper(stdout_buffer, 'utf-8')
  42. new_stderr = sys.stderr = io.TextIOWrapper(stderr_buffer, 'utf-8')
  43. else:
  44. - stdin_buffer = new_stdin = sys.stdin = StringIO()
  45. - stdout_buffer = new_stdout = sys.stdout = StringIO()
  46. - stderr_buffer = new_stderr = sys.stderr = StringIO()
  47. + stdin_buffer = new_stdin = sys.stdin = StrictStringOutput()
  48. + stdout_buffer = new_stdout = sys.stdout = StrictStringOutput()
  49. + stderr_buffer = new_stderr = sys.stderr = StrictStringOutput()
  50. new_stdin.write(kwds.get('stdin', ''))
  51. new_stdin.seek(0, 0)
  52. try:
  53. @@ -53,8 +80,9 @@
  54. sys.stderr = saved_stderr
  55. new_stdout.flush()
  56. new_stderr.flush()
  57. - out, err = stdout_buffer.getvalue().decode('utf-8'), \
  58. - stderr_buffer.getvalue().decode('utf-8')
  59. + print(repr(stdout_buffer.buflist))
  60. + out = stdout_buffer.getvalue().decode('utf-8')
  61. + err = stderr_buffer.getvalue().decode('utf-8')
  62. return (ret, out, err)
  63. --- ./tests/test_util.py.orig 2019-01-17 21:15:08.341082845 +0100
  64. +++ ./tests/test_util.py 2019-01-17 21:32:47.646780336 +0100
  65. @@ -10,7 +10,7 @@
  66. import re
  67. import unittest
  68. -from pygments import util, console
  69. +from pygments import util, console, StringIO
  70. class FakeLexer(object):
  71. @@ -211,3 +211,24 @@
  72. self.assertEqual(console.reset_color(), console.codes['reset'])
  73. self.assertEqual(console.colorize('blue', 'text'),
  74. console.codes['blue'] + 'text' + console.codes['reset'])
  75. +
  76. +
  77. +class StringIOTest(unittest.TestCase):
  78. +
  79. + def test_mix_default_unicode(self):
  80. + buf = StringIO()
  81. + buf.write('The Arduino\xc2\xae language style')
  82. + buf.write(u'unicode')
  83. + buf.getvalue()
  84. +
  85. + def test_mix_default_bytes(self):
  86. + buf = StringIO()
  87. + buf.write(u'The Arduino\xc2\xae language style')
  88. + buf.write(b'bytes')
  89. + buf.getvalue()
  90. +
  91. + def test_mix_unicode_bytes(self):
  92. + buf = StringIO()
  93. + buf.write('The Arduino\xc2\xae language style')
  94. + buf.write(b'bytes \xc2\xae')
  95. + buf.getvalue()
  96.