Sha256: 5f7df03ca599dc2f1c308a7b0b614df6c1b4e7f3f3c281e89d6440200564f14f

Contents?: true

Size: 1.91 KB

Versions: 46

Compression:

Stored size: 1.91 KB

Contents

require 'hiera/fallback_logger'

describe Hiera::FallbackLogger do
  before :each do
    InMemoryLogger.reset
    SuitableLogger.reset
  end

  it "delegates #warn to the logger implemenation" do
    logger = Hiera::FallbackLogger.new(InMemoryLogger)

    logger.warn("the message")

    expect(InMemoryLogger.warnings).to eq(["the message"])
  end

  it "delegates #debug to the logger implemenation" do
    logger = Hiera::FallbackLogger.new(InMemoryLogger)

    logger.debug("the message")

    expect(InMemoryLogger.debugs).to eq(["the message"])
  end

  it "chooses the first logger that is suitable" do
    logger = Hiera::FallbackLogger.new(UnsuitableLogger, SuitableLogger)

    logger.warn("for the suitable logger")

    expect(SuitableLogger.warnings).to include("for the suitable logger")
  end

  it "raises an error if no implementation is suitable" do
    expect do
      Hiera::FallbackLogger.new(UnsuitableLogger)
    end.to raise_error "No suitable logging implementation found."
  end

  it "issues a warning for each implementation that is not suitable" do
    Hiera::FallbackLogger.new(UnsuitableLogger, UnsuitableLogger, SuitableLogger)

    expect(SuitableLogger.warnings).to eq([
      "Not using UnsuitableLogger. It does not report itself to be suitable.",
      "Not using UnsuitableLogger. It does not report itself to be suitable."])
  end

  # Preserves log messages in memory
  # and also serves as a "legacy" logger that has no
  # suitable? method
  class InMemoryLogger
    class << self
      attr_accessor :warnings, :debugs
    end

    def self.reset
      self.warnings = []
      self.debugs = []
    end

    def self.warn(message)
      self.warnings << message
    end

    def self.debug(message)
      self.debugs << message
    end
  end

  class UnsuitableLogger
    def self.suitable?
      false
    end
  end

  class SuitableLogger < InMemoryLogger
    def self.suitable?
      true
    end
  end
end

Version data entries

46 entries across 46 versions & 1 rubygems

Version Path
hiera-3.12.0 spec/unit/fallback_logger_spec.rb
hiera-3.11.0 spec/unit/fallback_logger_spec.rb
hiera-3.10.0 spec/unit/fallback_logger_spec.rb
hiera-3.9.0 spec/unit/fallback_logger_spec.rb
hiera-3.8.0 spec/unit/fallback_logger_spec.rb
hiera-3.7.0 spec/unit/fallback_logger_spec.rb
hiera-3.6.0 spec/unit/fallback_logger_spec.rb
hiera-3.4.6 spec/unit/fallback_logger_spec.rb
hiera-3.5.0 spec/unit/fallback_logger_spec.rb
hiera-3.4.5 spec/unit/fallback_logger_spec.rb
hiera-3.4.4 spec/unit/fallback_logger_spec.rb
hiera-3.3.3 spec/unit/fallback_logger_spec.rb
hiera-3.4.3 spec/unit/fallback_logger_spec.rb
hiera-3.4.2 spec/unit/fallback_logger_spec.rb
hiera-3.4.1 spec/unit/fallback_logger_spec.rb
hiera-3.4.0 spec/unit/fallback_logger_spec.rb
hiera-3.3.1 spec/unit/fallback_logger_spec.rb
hiera-3.3.1-x86-mingw32 spec/unit/fallback_logger_spec.rb
hiera-3.3.1-x64-mingw32 spec/unit/fallback_logger_spec.rb
hiera-3.3.0 spec/unit/fallback_logger_spec.rb