diff --git a/capybara-rails-log-inspection.gemspec b/capybara-rails-log-inspection.gemspec index 1371b9d..ae3c496 100644 --- a/capybara-rails-log-inspection.gemspec +++ b/capybara-rails-log-inspection.gemspec @@ -13,7 +13,7 @@ Gem::Specification.new do |gem| gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n") gem.name = "capybara-rails-log-inspection" gem.require_paths = ["lib"] - gem.version = Capybara::Rails::LogInspection::VERSION + gem.version = Capybara::RailsLogInspection::VERSION gem.add_runtime_dependency 'term-ansicolor' end diff --git a/lib/capybara-rails-log-inspection/version.rb b/lib/capybara-rails-log-inspection/version.rb index 00f150c..665f21a 100644 --- a/lib/capybara-rails-log-inspection/version.rb +++ b/lib/capybara-rails-log-inspection/version.rb @@ -1,8 +1,6 @@ module Capybara - module Rails - module LogInspection - VERSION = "0.0.1" - end + module RailsLogInspection + VERSION = "0.0.1" end end diff --git a/lib/capybara/rails-log-inspection.rb b/lib/capybara/rails-log-inspection.rb index 0723739..a9dddaa 100644 --- a/lib/capybara/rails-log-inspection.rb +++ b/lib/capybara/rails-log-inspection.rb @@ -13,27 +13,34 @@ module Capybara logger end - attr_writer :backtrace_clean_patterns, :default_log_level, :rack_log_level + attr_writer :backtrace_clean_patterns, :default_log_level, :rack_log_level, :filter_request_starts def default_log_level - Logger::WARN + Logger::INFO end def rack_log_level Logger::WARN end + def filter_request_starts + @filter_request_starts ||= true + end + + def clean_rack_output(lines) + lines.collect(&:strip).reject { |line| line.empty? || (filter_request_starts && line[%r{^Started }]) } + end + def backtrace_clean_patterns @backtrace_clean_patterns ||= [ %r{/gems/}, %r{/ruby/1} ] end def clean_backtrace(exception) - exception.backtrace.reject { |line| line.empty? || backtrace_clean_patterns.any? { |pattern| line[pattern] } } + exception.backtrace.collect(&:strip).reject { |line| line.empty? || backtrace_clean_patterns.any? { |pattern| line[pattern] } } end def add_backtrace(exception) - clean_backtrace(exception).each { |line| logger_target << " #{line}\n" } - logger_target << "\n" + clean_backtrace(exception).each { |line| logger_target << " #{line}" } end end @@ -45,8 +52,11 @@ module Capybara def output_logs(target = $stderr) Capybara::RailsLogInspection.logger_target.rewind - data = Capybara::RailsLogInspection.logger_target.read - target.print(Term::ANSIColor.red, data, Term::ANSIColor.reset) if !data.empty? + lines = Capybara::RailsLogInspection.logger_target.read.lines + + Capybara::RailsLogInspection.clean_rack_output(lines).each do |line| + target.puts(Term::ANSIColor.red, line, Term::ANSIColor.reset) + end reset_logs end