Sha256: b30be9e981f3680a1fccff86f10f9e4ba2e6550971172302b9c4424f16ea2f03

Contents?: true

Size: 1.28 KB

Versions: 1

Compression:

Stored size: 1.28 KB

Contents

require 'active_support/concern'
require 'active_support/core_ext/module/delegation'

module SpecHelpers
  module LoggerHelpers
    extend ActiveSupport::Concern

    included do
      attr_reader :default_logger, :use_logger

      around :each do |example|
        @default_logger = Circuit.logger

        if clean_logger?
          Circuit.logger = nil
        elsif !default_logger?
          @logger_sio = StringIO.new
          Circuit.logger = Logger.new(@logger_sio)
        end

        example.run

        if clean_logger?
          clean_logger!(false)
        elsif !default_logger?
          @logger_sio.close
          @logger_sio = nil
        end

        Circuit.logger = @default_logger
      end
    end

    def use_logger!(key)
      @use_logger = (key ? key.to_sym : nil)
    end

    def use_logger?(key)
      @use_logger == key.to_sym
    end

    def clean_logger!(val=true)
      use_logger!(val ? :clean : false)
    end
    def clean_logger?() use_logger?(:clean); end

    def default_logger!(val=true)
      use_logger!(val ? :default : false)
    end
    def default_logger?() use_logger?(:default); end

    def logger_output
      raise "Clean logger used" if clean_logger?
      raise "Default logger used" if default_logger?
      @logger_sio.string
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
circuit-0.2.0 spec/support/spec_helpers/logger_helpers.rb