Sha256: 161bc21640c6d5e387be7634eda35ceb44363d2ada2ba44a871ade9d957016f5

Contents?: true

Size: 1.81 KB

Versions: 25

Compression:

Stored size: 1.81 KB

Contents

module CodeClimate
  module TestReporter

    class WebMockMessage
      def library_name
        "WebMock"
      end

      def instructions
      <<-STR
  WebMock.disable_net_connect!(:allow => "codeclimate.com")
STR
      end
    end

    class VCRMessage
      def library_name
        "VCR"
      end

      def instructions
      <<-STR
  VCR.configure do |config|
    # your existing configuration
    config.ignore_hosts 'codeclimate.com'
  end
STR
      end
    end

    class ExceptionMessage

      HTTP_STUBBING_MESSAGES = {
        "VCR::Errors::UnhandledHTTPRequestError" => VCRMessage,
        "WebMock::NetConnectNotAllowedError"     => WebMockMessage
      }

      def initialize(exception)
        @exception = exception
      end

      def message
        parts = []
        parts << "Code Climate encountered an exception: #{exception_class}"
        if http_stubbing_exception
          message = http_stubbing_exception.new
          parts << "======"
          parts << "Hey! Looks like you are using #{message.library_name}, which will prevent the codeclimate-test-reporter from reporting results to codeclimate.com.
Add the following to your spec or test helper to ensure codeclimate-test-reporter can post coverage results:"
          parts << "\n" + message.instructions + "\n"
          parts << "======"
          parts << "If this doesn't work, please consult https://codeclimate.com/docs#test-coverage-troubleshooting"
          parts << "======"
        else
          parts << @exception.message
          @exception.backtrace.each do |line|
            parts << line
          end
        end
        parts.join("\n")
      end

    private

      def exception_class
        @exception.class.to_s
      end

      def http_stubbing_exception
        HTTP_STUBBING_MESSAGES[exception_class]
      end
    end
  end
end

Version data entries

25 entries across 23 versions & 3 rubygems

Version Path
codeclimate-test-reporter-0.5.0 lib/code_climate/test_reporter/exception_message.rb
honeybadger-2.4.0 vendor/gems/ruby/2.1.0/gems/codeclimate-test-reporter-0.4.0/lib/code_climate/test_reporter/exception_message.rb
honeybadger-2.4.0 vendor/gems/ruby/2.2.0/gems/codeclimate-test-reporter-0.4.0/lib/code_climate/test_reporter/exception_message.rb
honeybadger-2.4.0 vendor/gems/ruby/1.9.1/gems/codeclimate-test-reporter-0.4.0/lib/code_climate/test_reporter/exception_message.rb
codeclimate-test-reporter-0.4.8 lib/code_climate/test_reporter/exception_message.rb
construi-0.6.0 vendor/bundle/ruby/1.9.1/gems/codeclimate-test-reporter-0.4.6/lib/code_climate/test_reporter/exception_message.rb
construi-0.5.0 vendor/bundle/ruby/1.9.1/gems/codeclimate-test-reporter-0.4.6/lib/code_climate/test_reporter/exception_message.rb
construi-0.4.0 vendor/bundle/ruby/1.9.1/gems/codeclimate-test-reporter-0.4.6/lib/code_climate/test_reporter/exception_message.rb
construi-0.2.0 vendor/bundle/ruby/1.9.1/gems/codeclimate-test-reporter-0.4.6/lib/code_climate/test_reporter/exception_message.rb
construi-0.1.0 vendor/bundle/ruby/1.9.1/gems/codeclimate-test-reporter-0.4.6/lib/code_climate/test_reporter/exception_message.rb
codeclimate-test-reporter-0.4.7 lib/code_climate/test_reporter/exception_message.rb
codeclimate-test-reporter-0.4.6 lib/code_climate/test_reporter/exception_message.rb
codeclimate-test-reporter-0.4.5 lib/code_climate/test_reporter/exception_message.rb
codeclimate-test-reporter-0.4.4 lib/code_climate/test_reporter/exception_message.rb
codeclimate-test-reporter-0.4.3 lib/code_climate/test_reporter/exception_message.rb
codeclimate-test-reporter-0.4.2 lib/code_climate/test_reporter/exception_message.rb
codeclimate-test-reporter-0.4.1 lib/code_climate/test_reporter/exception_message.rb
codeclimate-test-reporter-0.4.0 lib/code_climate/test_reporter/exception_message.rb
codeclimate-test-reporter-0.3.0 lib/code_climate/test_reporter/exception_message.rb
codeclimate-test-reporter-0.2.0 lib/code_climate/test_reporter/exception_message.rb