Merge pull request #798 from mbj/refactor/fail-fast
Change fail fast computation to reduce scope
This commit is contained in:
commit
a31bc375d0
3 changed files with 60 additions and 5 deletions
|
@ -108,6 +108,14 @@ module Mutant
|
|||
env.subjects.length
|
||||
end
|
||||
|
||||
# Test if processing needs to stop
|
||||
#
|
||||
# @return [Boolean]
|
||||
#
|
||||
def stop?
|
||||
env.config.fail_fast && !subject_results.all?(&:success?)
|
||||
end
|
||||
|
||||
end # Env
|
||||
|
||||
# Test result
|
||||
|
|
|
@ -29,7 +29,7 @@ module Mutant
|
|||
#
|
||||
# @return [Boolean]
|
||||
def stop?
|
||||
env.config.fail_fast && !status.subject_results.all?(&:success?)
|
||||
status.stop?
|
||||
end
|
||||
|
||||
# Handle mutation finish
|
||||
|
|
|
@ -5,13 +5,16 @@ RSpec.describe Mutant::Result::Env do
|
|||
described_class.new(
|
||||
runtime: instance_double(Float),
|
||||
env: env,
|
||||
subject_results: [subject_result]
|
||||
subject_results: subject_results
|
||||
)
|
||||
end
|
||||
|
||||
let(:subject_results) { [subject_result] }
|
||||
|
||||
let(:env) do
|
||||
instance_double(
|
||||
Mutant::Env,
|
||||
config: instance_double(Mutant::Config, fail_fast: fail_fast),
|
||||
subjects: [instance_double(Mutant::Subject)],
|
||||
mutations: [instance_double(Mutant::Mutation)]
|
||||
)
|
||||
|
@ -22,12 +25,14 @@ RSpec.describe Mutant::Result::Env do
|
|||
Mutant::Result::Subject,
|
||||
amount_mutation_results: results,
|
||||
amount_mutations_killed: killed,
|
||||
success?: true
|
||||
success?: subject_success?
|
||||
)
|
||||
end
|
||||
|
||||
let(:results) { 1 }
|
||||
let(:killed) { 0 }
|
||||
let(:fail_fast) { false }
|
||||
let(:killed) { 0 }
|
||||
let(:results) { 1 }
|
||||
let(:subject_success?) { true }
|
||||
|
||||
describe '#success?' do
|
||||
subject { object.success? }
|
||||
|
@ -81,4 +86,46 @@ RSpec.describe Mutant::Result::Env do
|
|||
|
||||
it { should eql(1) }
|
||||
end
|
||||
|
||||
describe '#stop?' do
|
||||
subject { object.stop? }
|
||||
|
||||
context 'without fail fast' do
|
||||
context 'on empty subjects' do
|
||||
let(:subject_results) { [] }
|
||||
|
||||
it { should be(false) }
|
||||
end
|
||||
|
||||
context 'on failed subject' do
|
||||
let(:subject_success?) { false }
|
||||
|
||||
it { should be(false) }
|
||||
end
|
||||
|
||||
context 'on successful subject' do
|
||||
it { should be(false) }
|
||||
end
|
||||
end
|
||||
|
||||
context 'with fail fast' do
|
||||
let(:fail_fast) { true }
|
||||
|
||||
context 'on empty subjects' do
|
||||
let(:subject_results) { [] }
|
||||
|
||||
it { should be(false) }
|
||||
end
|
||||
|
||||
context 'on failed subject' do
|
||||
let(:subject_success?) { false }
|
||||
|
||||
it { should be(true) }
|
||||
end
|
||||
|
||||
context 'on successful subject' do
|
||||
it { should be(false) }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Reference in a new issue