Remove Mutant::Delegator
* And inline its semantics into the only inclusion side * Add mutation covered specs
This commit is contained in:
parent
0542728818
commit
132aa8d99c
4 changed files with 52 additions and 51 deletions
|
@ -61,7 +61,6 @@ require 'mutant/actor/sender'
|
||||||
require 'mutant/actor/mailbox'
|
require 'mutant/actor/mailbox'
|
||||||
require 'mutant/actor/env'
|
require 'mutant/actor/env'
|
||||||
require 'mutant/parser'
|
require 'mutant/parser'
|
||||||
require 'mutant/delegator'
|
|
||||||
require 'mutant/isolation'
|
require 'mutant/isolation'
|
||||||
require 'mutant/parallel'
|
require 'mutant/parallel'
|
||||||
require 'mutant/parallel/master'
|
require 'mutant/parallel/master'
|
||||||
|
|
|
@ -1,43 +0,0 @@
|
||||||
module Mutant
|
|
||||||
# A simple delegator with opinions
|
|
||||||
module Delegator
|
|
||||||
# Class level mixins
|
|
||||||
module ClassMethods
|
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
# Create delegators to object
|
|
||||||
#
|
|
||||||
# @return [undefined]
|
|
||||||
def delegate(*names)
|
|
||||||
names.each(&method(:define_delegator))
|
|
||||||
end
|
|
||||||
|
|
||||||
# Create delegator to object
|
|
||||||
#
|
|
||||||
# @param [Symbol] name
|
|
||||||
#
|
|
||||||
# @return [undefined]
|
|
||||||
def define_delegator(name)
|
|
||||||
fail "method #{name} already defined" if instance_methods.include?(name)
|
|
||||||
define_method(name) do
|
|
||||||
object.public_send(name)
|
|
||||||
end
|
|
||||||
private name
|
|
||||||
end
|
|
||||||
|
|
||||||
end # ClassMethods
|
|
||||||
|
|
||||||
# Hook called when module is included
|
|
||||||
#
|
|
||||||
# @param [Class,Module] host
|
|
||||||
#
|
|
||||||
# @return [undefined]
|
|
||||||
def self.included(host)
|
|
||||||
super
|
|
||||||
|
|
||||||
host.extend(ClassMethods)
|
|
||||||
end
|
|
||||||
|
|
||||||
end # Delegator
|
|
||||||
end # Mutant
|
|
|
@ -3,10 +3,34 @@ module Mutant
|
||||||
class CLI
|
class CLI
|
||||||
# CLI runner status printer base class
|
# CLI runner status printer base class
|
||||||
class Printer
|
class Printer
|
||||||
include AbstractType, Delegator, Adamantium::Flat, Concord.new(:output, :object), Procto.call(:run)
|
include AbstractType,
|
||||||
|
Adamantium::Flat,
|
||||||
|
Concord.new(:output, :object),
|
||||||
|
Procto.call(:run)
|
||||||
|
|
||||||
private_class_method :new
|
private_class_method :new
|
||||||
|
|
||||||
|
# Create delegators to object
|
||||||
|
#
|
||||||
|
# @return [undefined]
|
||||||
|
def self.delegate(*names)
|
||||||
|
names.each(&method(:define_delegator))
|
||||||
|
end
|
||||||
|
private_class_method :delegate
|
||||||
|
|
||||||
|
# Create delegator to object
|
||||||
|
#
|
||||||
|
# @param [Symbol] name
|
||||||
|
#
|
||||||
|
# @return [undefined]
|
||||||
|
def self.define_delegator(name)
|
||||||
|
define_method(name) do
|
||||||
|
object.public_send(name)
|
||||||
|
end
|
||||||
|
private(name)
|
||||||
|
end
|
||||||
|
private_class_method :define_delegator
|
||||||
|
|
||||||
delegate :success?
|
delegate :success?
|
||||||
|
|
||||||
NL = "\n".freeze
|
NL = "\n".freeze
|
||||||
|
|
|
@ -16,7 +16,7 @@ RSpec.describe Mutant::Reporter::CLI::Printer do
|
||||||
let(:tty?) { true }
|
let(:tty?) { true }
|
||||||
let(:success?) { true }
|
let(:success?) { true }
|
||||||
|
|
||||||
context '.call' do
|
describe '.call' do
|
||||||
let(:class_under_test) do
|
let(:class_under_test) do
|
||||||
Class.new(described_class) do
|
Class.new(described_class) do
|
||||||
def run
|
def run
|
||||||
|
@ -30,7 +30,28 @@ RSpec.describe Mutant::Reporter::CLI::Printer do
|
||||||
it_reports "foo\n"
|
it_reports "foo\n"
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#status' do
|
describe '.delegate' do
|
||||||
|
let(:reportable) { double(foo: :bar, baz: :boz) }
|
||||||
|
|
||||||
|
let(:class_under_test) do
|
||||||
|
Class.new(described_class) do
|
||||||
|
delegate :foo, :baz
|
||||||
|
|
||||||
|
def run
|
||||||
|
puts(foo)
|
||||||
|
puts(baz)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it_reports "bar\nboz\n"
|
||||||
|
|
||||||
|
it 'sets delegation methods to private visibility' do
|
||||||
|
expect(class_under_test.private_instance_methods).to include(:foo, :baz)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#status' do
|
||||||
let(:class_under_test) do
|
let(:class_under_test) do
|
||||||
Class.new(described_class) do
|
Class.new(described_class) do
|
||||||
def run
|
def run
|
||||||
|
@ -65,7 +86,7 @@ RSpec.describe Mutant::Reporter::CLI::Printer do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#visit_collection' do
|
describe '#visit_collection' do
|
||||||
let(:class_under_test) do
|
let(:class_under_test) do
|
||||||
reporter = nested_reporter
|
reporter = nested_reporter
|
||||||
Class.new(described_class) do
|
Class.new(described_class) do
|
||||||
|
@ -86,7 +107,7 @@ RSpec.describe Mutant::Reporter::CLI::Printer do
|
||||||
it_reports "foo\nbar\n"
|
it_reports "foo\nbar\n"
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#visit' do
|
describe '#visit' do
|
||||||
let(:class_under_test) do
|
let(:class_under_test) do
|
||||||
reporter = nested_reporter
|
reporter = nested_reporter
|
||||||
Class.new(described_class) do
|
Class.new(described_class) do
|
||||||
|
@ -107,7 +128,7 @@ RSpec.describe Mutant::Reporter::CLI::Printer do
|
||||||
it_reports "foo\n"
|
it_reports "foo\n"
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#info' do
|
describe '#info' do
|
||||||
let(:class_under_test) do
|
let(:class_under_test) do
|
||||||
Class.new(described_class) do
|
Class.new(described_class) do
|
||||||
def run
|
def run
|
||||||
|
@ -119,7 +140,7 @@ RSpec.describe Mutant::Reporter::CLI::Printer do
|
||||||
it_reports "foo - bar\n"
|
it_reports "foo - bar\n"
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#colorize' do
|
describe '#colorize' do
|
||||||
let(:class_under_test) do
|
let(:class_under_test) do
|
||||||
Class.new(described_class) do
|
Class.new(described_class) do
|
||||||
def run
|
def run
|
||||||
|
|
Loading…
Add table
Reference in a new issue