test/helper.rb in ds9-1.1.0 vs test/helper.rb in ds9-1.1.1

- old
+ new

@@ -76,20 +76,32 @@ class Client < DS9::Client include IOEvents class Response - attr_reader :stream_id, :body, :headers + attr_reader :stream_id, :body def initialize stream_id @stream_id = stream_id - @headers = {} + @headers = [{}] @body = StringIO.new end - def [] k; @headers[k]; end - def []= k, v; @headers[k] = v; end + def headers + @headers[0] + end + + def trailers + @headers[1] + end + + def [] k; @headers.last[k]; end + def []= k, v; @headers.last[k] = v; end + + def bump + @headers << {} + end end attr_reader :responses, :response_queue, :frames def initialize read, write, response_queue @@ -102,11 +114,15 @@ def on_frame_recv frame @frames << frame end def on_begin_headers frame - @response_streams[frame.stream_id] = Response.new(frame.stream_id) + if @response_streams[frame.stream_id] + @response_streams[frame.stream_id].bump + else + @response_streams[frame.stream_id] = Response.new(frame.stream_id) + end end def on_header name, value, frame, flags @response_streams[frame.stream_id][name] = value end @@ -142,11 +158,17 @@ def on_begin_headers frame @read_streams[frame.stream_id] = [] end def on_data_source_read stream_id, length - @write_streams[stream_id].body.shift + chunk = @write_streams[stream_id].body.shift + if chunk.nil? && @write_streams[stream_id].trailers + submit_trailer stream_id, @write_streams[stream_id].trailers + false + else + chunk + end end def on_stream_close id, error_code @read_streams.delete id @write_streams.delete id @@ -170,10 +192,10 @@ def path headers[':path'] end end - class Response < Struct.new :stream, :stream_id, :body + class Response < Struct.new :stream, :stream_id, :body, :trailers def push headers stream.submit_push_promise stream_id, headers end def submit_response headers