Improve verbose mode output formatting

This commit is contained in:
Thibault Jouan 2014-05-24 20:07:57 +00:00
parent 8291f1bcfd
commit 332bb1a416
6 changed files with 50 additions and 3 deletions

View File

@ -31,3 +31,12 @@ Feature: CLI verbose option
"""
When I successfully execute the recipe with option -v
Then the output must match /say_hello.+ action: echo/
Scenario: formats message with our simple logger
Given a recipe with:
"""
task :say_hello do
end
"""
When I successfully execute the recipe with option -v
Then the output must match /\ATask:.+say_hello.*\n.*condition/

View File

@ -28,6 +28,7 @@ require 'producer/core/condition'
require 'producer/core/condition/dsl'
require 'producer/core/env'
require 'producer/core/errors'
require 'producer/core/logger_formatter'
require 'producer/core/prompter'
require 'producer/core/recipe'
require 'producer/core/recipe/dsl'

View File

@ -9,9 +9,6 @@ module Producer
@output = output
@registry = registry
@remote = remote
@logger = Logger.new(output)
self.log_level = Logger::ERROR
end
def remote
@ -26,6 +23,15 @@ module Producer
@registry[key] = value
end
def logger
@logger ||= begin
logger = Logger.new(output)
logger.level = Logger::ERROR
logger.formatter = LoggerFormatter.new
logger
end
end
def log(message)
logger.info message
end

View File

@ -0,0 +1,9 @@
module Producer
module Core
class LoggerFormatter < Logger::Formatter
def call(severity, datetime, progname, message)
message + "\n"
end
end
end
end

View File

@ -75,6 +75,10 @@ module Producer::Core
it 'has a log level of ERROR' do
expect(env.log_level).to eq Logger::ERROR
end
it 'uses our formatter' do
expect(env.logger.formatter).to be_a LoggerFormatter
end
end
describe '#remote' do

View File

@ -0,0 +1,18 @@
require 'spec_helper'
module Producer::Core
describe LoggerFormatter do
describe '#call' do
let(:severity) { double 'severity' }
let(:datetime) { double 'datetime' }
let(:progname) { double 'progname' }
let(:message) { 'some message' }
subject { described_class.new.call(severity, datetime, progname, message) }
it 'returns the given message with a line separator' do
expect(subject).to eq "#{message}\n"
end
end
end
end