Merge pull request #504 from mbj/feature/sequence-reporter
Add sequence reporter
This commit is contained in:
commit
6d8f28e1cf
5 changed files with 58 additions and 16 deletions
|
@ -1,3 +1,3 @@
|
|||
---
|
||||
threshold: 18
|
||||
total_score: 1169
|
||||
total_score: 1175
|
||||
|
|
|
@ -168,6 +168,7 @@ require 'mutant/runner/sink'
|
|||
require 'mutant/result'
|
||||
require 'mutant/reporter'
|
||||
require 'mutant/reporter/null'
|
||||
require 'mutant/reporter/sequence'
|
||||
require 'mutant/reporter/cli'
|
||||
require 'mutant/reporter/cli/printer'
|
||||
require 'mutant/reporter/cli/printer/config'
|
||||
|
|
22
lib/mutant/reporter/sequence.rb
Normal file
22
lib/mutant/reporter/sequence.rb
Normal file
|
@ -0,0 +1,22 @@
|
|||
module Mutant
|
||||
class Reporter
|
||||
class Sequence < self
|
||||
include Concord.new(:reporters)
|
||||
|
||||
%i[warn progress report start].each do |name|
|
||||
define_method(name) do |value|
|
||||
reporters.each do |reporter|
|
||||
reporter.public_send(name, value)
|
||||
end
|
||||
|
||||
self
|
||||
end
|
||||
end
|
||||
|
||||
def delay
|
||||
reporters.map(&:delay).min
|
||||
end
|
||||
|
||||
end # Sequence
|
||||
end # Reporter
|
||||
end # Mutant
|
|
@ -2,21 +2,11 @@ RSpec.describe Mutant::Reporter::Null do
|
|||
let(:object) { described_class.new }
|
||||
let(:value) { instance_double(Object) }
|
||||
|
||||
describe '#report' do
|
||||
subject { object.report(value) }
|
||||
|
||||
it_should_behave_like 'a command method'
|
||||
end
|
||||
|
||||
describe '#warn' do
|
||||
subject { object.warn(value) }
|
||||
|
||||
it_should_behave_like 'a command method'
|
||||
end
|
||||
|
||||
describe '#progress' do
|
||||
subject { object.progress(value) }
|
||||
%i[progress report start warn].each do |name|
|
||||
describe "##{name}" do
|
||||
subject { object.public_send(name, value) }
|
||||
|
||||
it_should_behave_like 'a command method'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
29
spec/unit/mutant/reporter/sequence_spec.rb
Normal file
29
spec/unit/mutant/reporter/sequence_spec.rb
Normal file
|
@ -0,0 +1,29 @@
|
|||
RSpec.describe Mutant::Reporter::Sequence do
|
||||
let(:object) { described_class.new([reporter_a, reporter_b]) }
|
||||
let(:value) { instance_double(Object) }
|
||||
let(:reporter_a) { instance_double(Mutant::Reporter, delay: 1.0) }
|
||||
let(:reporter_b) { instance_double(Mutant::Reporter, delay: 2.0) }
|
||||
|
||||
%i[report progress warn start].each do |name|
|
||||
describe "##{name}" do
|
||||
subject { object.public_send(name, value) }
|
||||
|
||||
before do
|
||||
[reporter_a, reporter_b].each do |receiver|
|
||||
expect(receiver).to receive(name)
|
||||
.ordered
|
||||
.with(value)
|
||||
.and_return(receiver)
|
||||
end
|
||||
end
|
||||
|
||||
it_should_behave_like 'a command method'
|
||||
end
|
||||
end
|
||||
|
||||
describe '#delay' do
|
||||
it 'returns the lowest value' do
|
||||
expect(object.delay).to eql(1.0)
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Reference in a new issue