Don't wrap exceptions in test mode unless specifically requested.

This helps debugging reports with invalid SQL, which would otherwise
return no results instead of a useful error message while running
tests.
This commit is contained in:
Robin Ward 2019-02-08 11:25:32 -05:00
parent 7c55de6e6f
commit 72b5ab0454
2 changed files with 8 additions and 2 deletions

View File

@ -160,6 +160,8 @@ class Report
end
def self.find(type, opts = nil)
opts ||= {}
begin
report = _get(type, opts)
report_method = :"report_#{type}"
@ -178,6 +180,10 @@ class Report
report.error = :timeout
end
rescue Exception => e
# In test mode, don't swallow exceptions by default to help debug errors.
raise if Rails.env.test? && !opts[:wrap_exceptions_in_test]
# ensures that if anything unexpected prevents us from
# creating a report object we fail elegantly and log an error
if !report

View File

@ -814,7 +814,7 @@ describe Report do
end
it "returns a report with an exception error" do
report = Report.find("exception_test")
report = Report.find("exception_test", wrap_exceptions_in_test: true)
expect(report.error).to eq(:exception)
end
end
@ -853,7 +853,7 @@ describe Report do
Report.stubs(:new).raises(ReportInitError.new("x"))
report = Report.find('signups')
report = Report.find('signups', wrap_exceptions_in_test: true)
expect(report).to be_nil