Skip to content

Commit adc05e6

Browse files
authored
Merge pull request RustPython#5443 from coolreader18/incremental-newline-decoder
Implement IncrementalNewlineDecoder in rust
2 parents 0bc236a + fbd0c7a commit adc05e6

File tree

16 files changed

+324
-122
lines changed

16 files changed

+324
-122
lines changed

Lib/io.py

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,7 @@
5757
from _io import (DEFAULT_BUFFER_SIZE, BlockingIOError, UnsupportedOperation,
5858
open, open_code, FileIO, BytesIO, StringIO, BufferedReader,
5959
BufferedWriter, BufferedRWPair, BufferedRandom,
60-
# XXX RUSTPYTHON TODO: IncrementalNewlineDecoder
61-
# IncrementalNewlineDecoder,
62-
text_encoding, TextIOWrapper)
60+
IncrementalNewlineDecoder, text_encoding, TextIOWrapper)
6361

6462
# Pretend this exception was created here.
6563
UnsupportedOperation.__module__ = "io"
@@ -100,10 +98,3 @@ class TextIOBase(_io._TextIOBase, IOBase):
10098
pass
10199
else:
102100
RawIOBase.register(_WindowsConsoleIO)
103-
104-
105-
# XXX: RUSTPYTHON; borrow IncrementalNewlineDecoder from _pyio
106-
try:
107-
from _pyio import IncrementalNewlineDecoder
108-
except ImportError:
109-
pass

Lib/test/test_difflib.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,6 @@ def test_mdiff_catch_stop_iteration(self):
186186
the end"""
187187

188188
class TestSFpatches(unittest.TestCase):
189-
@unittest.expectedFailureIfWindows("TODO: RUSTPYTHON")
190189
def test_html_diff(self):
191190
# Check SF patch 914575 for generating HTML differences
192191
f1a = ((patch914575_from1 + '123\n'*10)*3)

Lib/test/test_fileinput.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -280,8 +280,6 @@ def __call__(self, *args, **kargs):
280280
fi.readline()
281281
self.assertTrue(custom_open_hook.invoked, "openhook not invoked")
282282

283-
# TODO: RUSTPYTHON
284-
@unittest.expectedFailure
285283
def test_readline(self):
286284
with open(TESTFN, 'wb') as f:
287285
f.write(b'A\nB\r\nC\r')

Lib/test/test_imp.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ def test_find_module_encoding(self):
8484
with self.assertRaises(SyntaxError):
8585
imp.find_module('badsyntax_pep3120', path)
8686

87-
@unittest.expectedFailureIfWindows("TODO: RUSTPYTHON")
8887
def test_issue1267(self):
8988
for mod, encoding, _ in self.test_strings:
9089
fp, filename, info = imp.find_module('module_' + mod,

Lib/test/test_importlib/test_abc.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -701,8 +701,6 @@ def verify_code(self, code_object):
701701
class SourceOnlyLoaderTests(SourceLoaderTestHarness):
702702
"""Test importlib.abc.SourceLoader for source-only loading."""
703703

704-
# TODO: RUSTPYTHON
705-
@unittest.expectedFailure
706704
def test_get_source(self):
707705
# Verify the source code is returned as a string.
708706
# If an OSError is raised by get_data then raise ImportError.
@@ -761,8 +759,6 @@ def test_package_settings(self):
761759
self.verify_module(module)
762760
self.assertFalse(hasattr(module, '__path__'))
763761

764-
# TODO: RUSTPYTHON
765-
@unittest.expectedFailure
766762
def test_get_source_encoding(self):
767763
# Source is considered encoded in UTF-8 by default unless otherwise
768764
# specified by an encoding line.
@@ -882,8 +878,6 @@ class SourceLoaderGetSourceTests:
882878

883879
"""Tests for importlib.abc.SourceLoader.get_source()."""
884880

885-
# TODO: RUSTPYTHON
886-
@unittest.expectedFailure
887881
def test_default_encoding(self):
888882
# Should have no problems with UTF-8 text.
889883
name = 'mod'
@@ -893,8 +887,6 @@ def test_default_encoding(self):
893887
returned_source = mock.get_source(name)
894888
self.assertEqual(returned_source, source)
895889

896-
# TODO: RUSTPYTHON
897-
@unittest.expectedFailure
898890
def test_decoded_source(self):
899891
# Decoding should work.
900892
name = 'mod'
@@ -905,8 +897,6 @@ def test_decoded_source(self):
905897
returned_source = mock.get_source(name)
906898
self.assertEqual(returned_source, source)
907899

908-
# TODO: RUSTPYTHON
909-
@unittest.expectedFailure
910900
def test_universal_newlines(self):
911901
# PEP 302 says universal newlines should be used.
912902
name = 'mod'

Lib/test/test_importlib/test_util.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,22 +36,16 @@ class DecodeSourceBytesTests:
3636

3737
source = "string ='ü'"
3838

39-
# TODO: RUSTPYTHON
40-
@unittest.expectedFailure
4139
def test_ut8_default(self):
4240
source_bytes = self.source.encode('utf-8')
4341
self.assertEqual(self.util.decode_source(source_bytes), self.source)
4442

45-
# TODO: RUSTPYTHON
46-
@unittest.expectedFailure
4743
def test_specified_encoding(self):
4844
source = '# coding=latin-1\n' + self.source
4945
source_bytes = source.encode('latin-1')
5046
assert source_bytes != source.encode('utf-8')
5147
self.assertEqual(self.util.decode_source(source_bytes), source)
5248

53-
# TODO: RUSTPYTHON
54-
@unittest.expectedFailure
5549
def test_universal_newlines(self):
5650
source = '\r\n'.join([self.source, self.source])
5751
source_bytes = source.encode('utf-8')

Lib/test/test_io.py

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -4121,41 +4121,6 @@ def test_newlines(self):
41214121
def test_newlines_input(self):
41224122
super().test_newlines_input()
41234123

4124-
# TODO: RUSTPYTHON
4125-
@unittest.expectedFailure
4126-
def test_read_one_by_one(self):
4127-
super().test_read_one_by_one()
4128-
4129-
# TODO: RUSTPYTHON
4130-
@unittest.expectedFailure
4131-
def test_read_by_chunk(self):
4132-
super().test_read_by_chunk()
4133-
4134-
# TODO: RUSTPYTHON
4135-
@unittest.expectedFailure
4136-
def test_issue1395_1(self):
4137-
super().test_issue1395_1()
4138-
4139-
# TODO: RUSTPYTHON
4140-
@unittest.expectedFailure
4141-
def test_issue1395_2(self):
4142-
super().test_issue1395_2()
4143-
4144-
# TODO: RUSTPYTHON
4145-
@unittest.expectedFailure
4146-
def test_issue1395_3(self):
4147-
super().test_issue1395_3()
4148-
4149-
# TODO: RUSTPYTHON
4150-
@unittest.expectedFailure
4151-
def test_issue1395_4(self):
4152-
super().test_issue1395_4()
4153-
4154-
# TODO: RUSTPYTHON
4155-
@unittest.expectedFailure
4156-
def test_issue1395_5(self):
4157-
super().test_issue1395_5()
4158-
41594124
# TODO: RUSTPYTHON
41604125
@unittest.expectedFailure
41614126
def test_reconfigure_write_through(self):
@@ -4812,11 +4777,6 @@ class CMiscIOTest(MiscIOTest):
48124777
name_of_module = "io", "_io"
48134778
extra_exported = "BlockingIOError",
48144779

4815-
# TODO: RUSTPYTHON
4816-
@unittest.expectedFailure
4817-
def test___all__(self):
4818-
super().test___all__()
4819-
48204780
def test_readinto_buffer_overflow(self):
48214781
# Issue #18025
48224782
class BadReader(self.io.BufferedIOBase):

Lib/test/test_linecache.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -187,8 +187,6 @@ def test_lazycache_no_globals(self):
187187
self.assertEqual(False, linecache.lazycache(FILENAME, None))
188188
self.assertEqual(lines, linecache.getlines(FILENAME))
189189

190-
# TODO: RUSTPYTHON
191-
@unittest.expectedFailure
192190
def test_lazycache_smoke(self):
193191
lines = linecache.getlines(NONEXISTENT_FILENAME, globals())
194192
linecache.clearcache()
@@ -199,8 +197,6 @@ def test_lazycache_smoke(self):
199197
# globals: this would error if the lazy value wasn't resolved.
200198
self.assertEqual(lines, linecache.getlines(NONEXISTENT_FILENAME))
201199

202-
# TODO: RUSTPYTHON
203-
@unittest.expectedFailure
204200
def test_lazycache_provide_after_failed_lookup(self):
205201
linecache.clearcache()
206202
lines = linecache.getlines(NONEXISTENT_FILENAME, globals())
@@ -219,8 +215,6 @@ def test_lazycache_bad_filename(self):
219215
self.assertEqual(False, linecache.lazycache('', globals()))
220216
self.assertEqual(False, linecache.lazycache('<foo>', globals()))
221217

222-
# TODO: RUSTPYTHON
223-
@unittest.expectedFailure
224218
def test_lazycache_already_cached(self):
225219
linecache.clearcache()
226220
lines = linecache.getlines(NONEXISTENT_FILENAME, globals())

Lib/test/test_popen.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,10 @@ def test_return_code(self):
5454
else:
5555
self.assertEqual(os.waitstatus_to_exitcode(status), 42)
5656

57-
@unittest.expectedFailureIfWindows("TODO: RUSTPYTHON")
5857
def test_contextmanager(self):
5958
with os.popen("echo hello") as f:
6059
self.assertEqual(f.read(), "hello\n")
6160

62-
@unittest.expectedFailureIfWindows("TODO: RUSTPYTHON")
6361
def test_iterating(self):
6462
with os.popen("echo hello") as f:
6563
self.assertEqual(list(f), ["hello\n"])

Lib/test/test_subprocess.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1056,8 +1056,6 @@ def test_writes_before_communicate(self):
10561056
self.assertEqual(stdout, b"bananasplit")
10571057
self.assertEqual(stderr, b"")
10581058

1059-
# TODO: RUSTPYTHON
1060-
@unittest.expectedFailure
10611059
def test_universal_newlines_and_text(self):
10621060
args = [
10631061
sys.executable, "-c",
@@ -1097,7 +1095,6 @@ def test_universal_newlines_and_text(self):
10971095
self.assertEqual(p.stdout.read(),
10981096
"line4\nline5\nline6\nline7\nline8")
10991097

1100-
@unittest.expectedFailureIfWindows("TODO: RUSTPYTHON")
11011098
def test_universal_newlines_communicate(self):
11021099
# universal newlines through communicate()
11031100
p = subprocess.Popen([sys.executable, "-c",
@@ -1149,7 +1146,6 @@ def test_universal_newlines_communicate_input_none(self):
11491146
p.communicate()
11501147
self.assertEqual(p.returncode, 0)
11511148

1152-
@unittest.expectedFailureIfWindows("TODO: RUSTPYTHON")
11531149
def test_universal_newlines_communicate_stdin_stdout_stderr(self):
11541150
# universal newlines through communicate(), with stdin, stdout, stderr
11551151
p = subprocess.Popen([sys.executable, "-c",
@@ -3805,7 +3801,6 @@ def popen_via_context_manager(*args, **kwargs):
38053801
raise KeyboardInterrupt # Test how __exit__ handles ^C.
38063802
self._test_keyboardinterrupt_no_kill(popen_via_context_manager)
38073803

3808-
@unittest.expectedFailureIfWindows("TODO: RUSTPYTHON")
38093804
def test_getoutput(self):
38103805
self.assertEqual(subprocess.getoutput('echo xyzzy'), 'xyzzy')
38113806
self.assertEqual(subprocess.getstatusoutput('echo xyzzy'),

0 commit comments

Comments
 (0)