From 72b5ab0454d4e9cb05f953618da67bb8c641c26f Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Fri, 8 Feb 2019 11:25:32 -0500 Subject: [PATCH] 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. --- app/models/report.rb | 6 ++++++ spec/models/report_spec.rb | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/models/report.rb b/app/models/report.rb index 8ee3db80ce5..f7540b71eba 100644 --- a/app/models/report.rb +++ b/app/models/report.rb @@ -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 diff --git a/spec/models/report_spec.rb b/spec/models/report_spec.rb index fa6395a48e7..76896b4919f 100644 --- a/spec/models/report_spec.rb +++ b/spec/models/report_spec.rb @@ -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