Merge pull request #798 from mbj/refactor/fail-fast

Change fail fast computation to reduce scope
This commit is contained in:
Markus Schirp 2018-12-04 14:41:43 +00:00 committed by GitHub
commit a31bc375d0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 60 additions and 5 deletions

View file

@ -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

View file

@ -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

View file

@ -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