Skip to content

Commit

Permalink
Merge pull request #27 from bf4/patch-2
Browse files Browse the repository at this point in the history
Handle schema errors without failing the build
  • Loading branch information
k0kubun committed Jun 12, 2021
2 parents 77cdfd7 + cf1d4de commit 29d556a
Showing 1 changed file with 16 additions and 1 deletion.
17 changes: 16 additions & 1 deletion lib/rspec/openapi/hooks.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
require 'rspec/openapi/schema_merger'

records = []
records_errors = []

RSpec.configuration.after(:each) do |example|
if example.metadata[:type] == :request && example.metadata[:openapi] != false
Expand All @@ -19,7 +20,21 @@
RSpec::OpenAPI::SchemaFile.new(RSpec::OpenAPI.path).edit do |spec|
RSpec::OpenAPI::SchemaMerger.reverse_merge!(spec, RSpec::OpenAPI::DefaultSchema.build(title))
records.each do |record|
RSpec::OpenAPI::SchemaMerger.reverse_merge!(spec, RSpec::OpenAPI::SchemaBuilder.build(record))
begin
RSpec::OpenAPI::SchemaMerger.reverse_merge!(spec, RSpec::OpenAPI::SchemaBuilder.build(record))
rescue => e # e.g. SchemaBuilder raises a NotImplementedError
# NOTE: Don't fail the build
records_errors << [e, record]
end
end
end
if records_errors.any?
error_message = <<~EOS
RSpec::OpenAPI got errors building #{records_errors.size} requests
#{records_errors.map {|e, record| "#{e.inspect}: #{record.inspect}" }.join("\n")}
EOS
colorizer = ::RSpec::Core::Formatters::ConsoleCodes
RSpec.configuration.reporter.message colorizer.wrap(error_message, :failure)
end
end

0 comments on commit 29d556a

Please sign in to comment.