codeclimate/ruby-test-reporter

View on GitHub
lib/code_climate/test_reporter/exception_message.rb

Summary

Maintainability
A
0 mins
Test Coverage
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".freeze => VCRMessage,
"WebMock::NetConnectNotAllowedError".freeze => WebMockMessage,
}.freeze
 
def initialize(exception)
@exception = exception
end
 
Method has too many lines. [18/10]
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