|  | @@ -32,8 +32,8 @@
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  require 'conformance'
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -test_count = 0;
 | 
	
		
			
				|  |  | -verbose = false;
 | 
	
		
			
				|  |  | +$test_count = 0
 | 
	
		
			
				|  |  | +$verbose = false
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def do_test(request)
 | 
	
		
			
				|  |  |    test_message = Conformance::TestAllTypes.new
 | 
	
	
		
			
				|  | @@ -43,9 +43,10 @@ def do_test(request)
 | 
	
		
			
				|  |  |      case request.payload
 | 
	
		
			
				|  |  |      when :protobuf_payload
 | 
	
		
			
				|  |  |        begin
 | 
	
		
			
				|  |  | -        test_message = Conformance::TestAllTypes.decode(request.protobuf_payload)
 | 
	
		
			
				|  |  | +        test_message =
 | 
	
		
			
				|  |  | +          Conformance::TestAllTypes.decode(request.protobuf_payload)
 | 
	
		
			
				|  |  |        rescue Google::Protobuf::ParseError => err
 | 
	
		
			
				|  |  | -        response.parse_error = err.message.encode("utf-8")
 | 
	
		
			
				|  |  | +        response.parse_error = err.message.encode('utf-8')
 | 
	
		
			
				|  |  |          return response
 | 
	
		
			
				|  |  |        end
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -53,34 +54,36 @@ def do_test(request)
 | 
	
		
			
				|  |  |        test_message = Conformance::TestAllTypes.decode_json(request.json_payload)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      when nil
 | 
	
		
			
				|  |  | -      raise "Request didn't have payload.";
 | 
	
		
			
				|  |  | +      fail "Request didn't have payload"
 | 
	
		
			
				|  |  |      end
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      case request.requested_output_format
 | 
	
		
			
				|  |  |      when :UNSPECIFIED
 | 
	
		
			
				|  |  | -      raise "Unspecified output format"
 | 
	
		
			
				|  |  | +      fail 'Unspecified output format'
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      when :PROTOBUF
 | 
	
		
			
				|  |  | -      response.protobuf_payload = Conformance::TestAllTypes.encode(test_message)
 | 
	
		
			
				|  |  | +      response.protobuf_payload = test_message.to_proto
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      when :JSON
 | 
	
		
			
				|  |  | -      response.json_payload = Conformance::TestAllTypes.encode_json(test_message)
 | 
	
		
			
				|  |  | +      response.json_payload = test_message.to_json
 | 
	
		
			
				|  |  |      end
 | 
	
		
			
				|  |  | -  rescue Exception => err
 | 
	
		
			
				|  |  | -    response.runtime_error = err.message.encode("utf-8") + err.backtrace.join("\n")
 | 
	
		
			
				|  |  | +  rescue StandardError => err
 | 
	
		
			
				|  |  | +    response.runtime_error = err.message.encode('utf-8')
 | 
	
		
			
				|  |  |    end
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  return response
 | 
	
		
			
				|  |  | +  response
 | 
	
		
			
				|  |  |  end
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +# Returns true if the test ran successfully, false on legitimate EOF.
 | 
	
		
			
				|  |  | +# If EOF is encountered in an unexpected place, raises IOError.
 | 
	
		
			
				|  |  |  def do_test_io
 | 
	
		
			
				|  |  |    length_bytes = STDIN.read(4)
 | 
	
		
			
				|  |  |    return false if length_bytes.nil?
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  length = length_bytes.unpack("V").first
 | 
	
		
			
				|  |  | +  length = length_bytes.unpack('V').first
 | 
	
		
			
				|  |  |    serialized_request = STDIN.read(length)
 | 
	
		
			
				|  |  | -  if serialized_request.nil? or serialized_request.length != length
 | 
	
		
			
				|  |  | -    raise "I/O error"
 | 
	
		
			
				|  |  | +  if serialized_request.nil? || serialized_request.length != length
 | 
	
		
			
				|  |  | +    fail IOError
 | 
	
		
			
				|  |  |    end
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    request = Conformance::ConformanceRequest.decode(serialized_request)
 | 
	
	
		
			
				|  | @@ -88,24 +91,24 @@ def do_test_io
 | 
	
		
			
				|  |  |    response = do_test(request)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    serialized_response = Conformance::ConformanceResponse.encode(response)
 | 
	
		
			
				|  |  | -  STDOUT.write([serialized_response.length].pack("V"))
 | 
	
		
			
				|  |  | +  STDOUT.write([serialized_response.length].pack('V'))
 | 
	
		
			
				|  |  |    STDOUT.write(serialized_response)
 | 
	
		
			
				|  |  |    STDOUT.flush
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  #if verbose
 | 
	
		
			
				|  |  | -  #  fprintf(stderr, "conformance-cpp: request=%s, response=%s\n",
 | 
	
		
			
				|  |  | -  #          request.ShortDebugString().c_str(),
 | 
	
		
			
				|  |  | -  #          response.ShortDebugString().c_str());
 | 
	
		
			
				|  |  | +  if $verbose
 | 
	
		
			
				|  |  | +    STDERR.puts("conformance-cpp: request={request.to_json}, " \
 | 
	
		
			
				|  |  | +                                 "response={response.to_json}\n")
 | 
	
		
			
				|  |  | +  end
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  #test_count++;
 | 
	
		
			
				|  |  | +  $test_count += 1
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  return true;
 | 
	
		
			
				|  |  | +  true
 | 
	
		
			
				|  |  |  end
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -while true
 | 
	
		
			
				|  |  | -  if not do_test_io()
 | 
	
		
			
				|  |  | -    STDERR.puts("conformance-cpp: received EOF from test runner " +
 | 
	
		
			
				|  |  | -                "after #{test_count} tests, exiting")
 | 
	
		
			
				|  |  | -    exit 0
 | 
	
		
			
				|  |  | +loop do
 | 
	
		
			
				|  |  | +  unless do_test_io
 | 
	
		
			
				|  |  | +    STDERR.puts('conformance-cpp: received EOF from test runner ' \
 | 
	
		
			
				|  |  | +                "after #{$test_count} tests, exiting")
 | 
	
		
			
				|  |  | +    break
 | 
	
		
			
				|  |  |    end
 | 
	
		
			
				|  |  |  end
 |