Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitbf7da77

Browse files
committed
Add a more general fix for#127 (CPy #20007) based on#136.
1 parent082c042 commitbf7da77

File tree

2 files changed

+29
-5
lines changed

2 files changed

+29
-5
lines changed

‎html5lib/inputstream.py‎

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from __future__importabsolute_import,division,unicode_literals
2+
23
fromsiximporttext_type
3-
fromsix.movesimporthttp_client
4+
fromsix.movesimporthttp_client,urllib
45

56
importcodecs
67
importre
@@ -130,9 +131,12 @@ def _readFromBuffer(self, bytes):
130131

131132

132133
defHTMLInputStream(source,encoding=None,parseMeta=True,chardet=True):
133-
ifisinstance(source,http_client.HTTPResponse):
134-
# Work around Python bug #20007: read(0) closes the connection.
135-
# http://bugs.python.org/issue20007
134+
# Work around Python bug #20007: read(0) closes the connection.
135+
# http://bugs.python.org/issue20007
136+
if (isinstance(source,http_client.HTTPResponse)or
137+
# Also check for addinfourl wrapping HTTPResponse
138+
(isinstance(source,urllib.response.addbase)and
139+
isinstance(source.fp,http_client.HTTPResponse))):
136140
isUnicode=False
137141
elifhasattr(source,"read"):
138142
isUnicode=isinstance(source.read(0),text_type)

‎html5lib/tests/test_stream.py‎

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
importunittest
55
importcodecs
66
fromioimportBytesIO
7+
importsocket
78

8-
fromsix.movesimporthttp_client
9+
importsix
10+
fromsix.movesimporthttp_client,urllib
911

1012
fromhtml5lib.inputstreamimport (BufferedStream,HTMLInputStream,
1113
HTMLUnicodeInputStream,HTMLBinaryInputStream)
@@ -170,6 +172,24 @@ def makefile(self, _mode, _bufsize=None):
170172
stream=HTMLInputStream(source)
171173
self.assertEqual(stream.charsUntil(" "),"Text")
172174

175+
deftest_python_issue_20007_b(self):
176+
"""
177+
Make sure we have a work-around for Python bug #20007
178+
http://bugs.python.org/issue20007
179+
"""
180+
ifsix.PY2:
181+
return
182+
183+
classFakeSocket(object):
184+
defmakefile(self,_mode,_bufsize=None):
185+
returnBytesIO(b"HTTP/1.1 200 Ok\r\n\r\nText")
186+
187+
source=http_client.HTTPResponse(FakeSocket())
188+
source.begin()
189+
wrapped=urllib.response.addinfourl(source,source.msg,"http://example.com")
190+
stream=HTMLInputStream(wrapped)
191+
self.assertEqual(stream.charsUntil(" "),"Text")
192+
173193

174194
defbuildTestSuite():
175195
returnunittest.defaultTestLoader.loadTestsFromName(__name__)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp