@@ -58,22 +58,31 @@ def makebuf(data):
5858 return buf
5959
6060def 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+
6170 # Simple: consume whole thing
6271 buf = makebuf (data )
63- assert reader (buf ) == expected
72+ check ( reader (buf ))
6473 assert not buf
6574
6675 # Incrementally growing buffer
6776 buf = ReceiveBuffer ()
6877 for i in range (len (data )):
6978 assert reader (buf ) is None
7079 buf += data [i :i + 1 ]
71- assert reader (buf ) == expected
80+ check ( reader (buf ))
7281
73- # Extra
82+ # Trailing data
7483 buf = makebuf (data )
7584 buf += b"trailing"
76- assert reader (buf ) == expected
85+ check ( reader (buf ))
7786 assert bytes (buf ) == b"trailing"
7887
7988def test_writers_simple ():
@@ -157,12 +166,15 @@ def test_readers_unusual():
157166 b" header\r \n "
158167 b"\t nonsense\r \n "
159168 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 " ,
161172 Request (method = "HEAD" , target = "/foo" ,
162173 headers = [
163174 ("Host" , "example.com" ),
164175 ("Some" , "multi-line header nonsense I guess" ),
165176 ("Connection" , "close" ),
177+ ("More-nonsense" , "in the last header" ),
166178 ]))
167179
168180 with pytest .raises (LocalProtocolError ):
0 commit comments