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

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.

diff --git a/app/models/report.rb b/app/models/report.rb
index 8ee3db8..f7540b7 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 fa6395a..76896b4 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

GitHub sha: 72b5ab04