Sha256: 857169540e804fdc83d0cbc815e5222717e57e27874108249fdb0fbd28905deb
Contents?: true
Size: 1.96 KB
Versions: 1
Compression:
Stored size: 1.96 KB
Contents
require 'httplog' require 'minitest' module HttpLogMinitest class << self attr_accessor :current_test def init HttpLog.configure do |config| config.logger = create_logger_decorator(config.logger) end end def create_logger_decorator(logger) Class.new do def initialize(logger) @logger = logger end def add(severity, message = nil, progname = nil, &block) process_message(message) @logger.add(severity, message, progname, &block) end def log(severity, message = nil, progname = nil, &block) process_message(message) @logger.log(severity, message, progname, &block) end def method_missing(method, *args, &block) @logger.send(method, *args, &block) end def respond_to_missing?(method, include_private = false) @logger.respond_to?(method, include_private) || super end private def process_message(message) if message && message.match(/\[httplog\]/) uri = extract_uri(message) method = extract_method(message) if uri && method full_message = "Unmocked HTTP request detected: #{method} #{uri} during test: #{HttpLogMinitest.current_test}" raise Minitest::Assertion, full_message end end end def extract_uri(message) match = message.match(/(http[s]?:\/\/[^\s]+)/) match ? match[1] : nil end def extract_method(message) match = message.match(/Sending: ([A-Z]+)/) match ? match[1] : nil end end.new(logger) end end end HttpLogMinitest.init module Minitest class Test alias_method :run_without_httplog, :run def run(*args, &block) HttpLogMinitest.current_test = self.name result = run_without_httplog(*args, &block) HttpLogMinitest.current_test = nil result end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
minitest_httplog-0.2.0 | lib/minitest_httplog.rb |