@@ -58,22 +58,31 @@ def makebuf(data):
58
58
return buf
59
59
60
60
def tr (reader , data , expected ):
61
+ def check (got ):
62
+ assert got == expected
63
+ # Headers should always be returned as bytes, not e.g. bytearray
64
+ # https://github.com/python-hyper/wsproto/pull/54#issuecomment-377709478
65
+ for name , value in getattr (got , "headers" , []):
66
+ print (name , value )
67
+ assert type (name ) is bytes
68
+ assert type (value ) is bytes
69
+
61
70
# Simple: consume whole thing
62
71
buf = makebuf (data )
63
- assert reader (buf ) == expected
72
+ check ( reader (buf ))
64
73
assert not buf
65
74
66
75
# Incrementally growing buffer
67
76
buf = ReceiveBuffer ()
68
77
for i in range (len (data )):
69
78
assert reader (buf ) is None
70
79
buf += data [i :i + 1 ]
71
- assert reader (buf ) == expected
80
+ check ( reader (buf ))
72
81
73
- # Extra
82
+ # Trailing data
74
83
buf = makebuf (data )
75
84
buf += b"trailing"
76
- assert reader (buf ) == expected
85
+ check ( reader (buf ))
77
86
assert bytes (buf ) == b"trailing"
78
87
79
88
def test_writers_simple ():
@@ -157,12 +166,15 @@ def test_readers_unusual():
157
166
b" header\r \n "
158
167
b"\t nonsense\r \n "
159
168
b" \t \t \t I guess\r \n "
160
- b"Connection: close\r \n \r \n " ,
169
+ b"Connection: close\r \n "
170
+ b"More-nonsense: in the\r \n "
171
+ b" last header \r \n \r \n " ,
161
172
Request (method = "HEAD" , target = "/foo" ,
162
173
headers = [
163
174
("Host" , "example.com" ),
164
175
("Some" , "multi-line header nonsense I guess" ),
165
176
("Connection" , "close" ),
177
+ ("More-nonsense" , "in the last header" ),
166
178
]))
167
179
168
180
with pytest .raises (LocalProtocolError ):
0 commit comments