Skip to content

Commit ab1d5ca

Browse files
committed
Reduce stack trace for "invalid response" exceptions a bit
1 parent 5ac5e7e commit ab1d5ca

2 files changed

Lines changed: 14 additions & 17 deletions

File tree

lib/openapi_first/definition.rb

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -86,14 +86,15 @@ def validate_response(rack_request, rack_response, raise_error: false)
8686

8787
response_match = route.match_response(status: rack_response.status, content_type: rack_response.content_type)
8888
error = response_match.error
89-
if error
90-
ValidatedResponse.new(rack_response, error:)
91-
else
92-
response_match.response.validate(rack_response)
93-
end.tap do |validated|
94-
@config.hooks[:after_response_validation]&.each { |hook| hook.call(validated, rack_request, self) }
95-
raise validated.error.exception(validated) if raise_error && validated.invalid?
96-
end
89+
validated = if error
90+
ValidatedResponse.new(rack_response, error:)
91+
else
92+
response_match.response.validate(rack_response)
93+
end
94+
@config.hooks[:after_response_validation]&.each { |hook| hook.call(validated, rack_request, self) }
95+
raise validated.error.exception(validated) if raise_error && validated.invalid?
96+
97+
validated
9798
end
9899

99100
private

lib/openapi_first/test.rb

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -104,20 +104,16 @@ def self.install
104104
end
105105

106106
@after_response_validation = config.after_response_validation do |validated_response, rack_request, oad|
107-
after_response_validation(validated_response, rack_request, oad)
107+
if validated_response.invalid? && raise_response_error?(validated_response)
108+
raise validated_response.error.exception
109+
end
110+
111+
Coverage.track_response(validated_response, rack_request, oad)
108112
end
109113
end
110114
@installed = true
111115
end
112116

113-
def self.after_response_validation(validated_response, rack_request, oad)
114-
if validated_response.invalid? && raise_response_error?(validated_response)
115-
raise validated_response.error.exception
116-
end
117-
118-
Coverage.track_response(validated_response, rack_request, oad)
119-
end
120-
121117
def self.raise_response_error?(validated_response)
122118
configuration.response_raise_error && !configuration.ignored_unknown_status.include?(validated_response.status)
123119
end

0 commit comments

Comments
 (0)