spec/support/debug_failure_helper.rb in ably-0.8.15 vs spec/support/debug_failure_helper.rb in ably-1.0.0

- old
+ new

@@ -1,16 +1,32 @@ RSpec.configure do |config| - config.before(:example) do + config.before(:example) do |example| + next if example.metadata[:prevent_log_stubbing] + @log_output = [] %w(fatal error warn info debug).each do |method_name| - allow_any_instance_of(Ably::Logger).to receive(method_name.to_sym).and_wrap_original do |method, *args| - @log_output << "#{Time.now.strftime('%H:%M:%S.%L')} [\e[33m#{method_name}\e[0m] #{args[0]}" - method.call(*args) + allow_any_instance_of(Ably::Logger).to receive(method_name.to_sym).and_wrap_original do |method, *args, &block| + # Don't log shutdown sequence to keep log noise to a minimum + next if RSpec.const_defined?(:EventMachine) && RSpec::EventMachine.reactor_stopping? + + prefix = "#{Time.now.strftime('%H:%M:%S.%L')} [\e[33m#{method_name}\e[0m] " + + begin + args << block.call unless block.nil? + @log_output << "#{prefix}#{args.compact.join(' ')}" + rescue StandardError => e + @log_output << "#{prefix}Failed to log block - #{e.class}: #{e.message}\n#{e.backtrace.join("\n")}}" + end + + # Call original + method.call(*args, &block) end end end config.after(:example) do |example| + next if example.metadata[:prevent_log_stubbing] + exception = example.exception puts "\n#{'-'*34}\n\e[36mVerbose Ably log from test failure\e[0m\n#{'-'*34}\n#{@log_output.join("\n")}\n\n" if exception end end