Skip to content

Commit 5f2ff6e

Browse files
authored
Merge pull request #938 from mbj/fix/empty-subjects
Fix empty subjects
2 parents ae1515e + daeba8d commit 5f2ff6e

File tree

2 files changed

+17
-6
lines changed

2 files changed

+17
-6
lines changed

lib/mutant/env.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,8 @@ def amount_selected_tests
118118
#
119119
# @return [Rational]
120120
def test_subject_ratio
121+
return Rational(0) if amount_subjects.zero?
122+
121123
Rational(amount_selected_tests, amount_subjects)
122124
end
123125
memoize :test_subject_ratio

spec/unit/mutant/env_spec.rb

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
matchable_scopes: [],
99
mutations: [],
1010
selector: selector,
11-
subjects: [subject_a, subject_b],
11+
subjects: subjects,
1212
parser: Mutant::Parser.new,
1313
world: world
1414
)
@@ -17,10 +17,11 @@
1717
let(:integration_class) { Mutant::Integration::Null }
1818
let(:isolation) { Mutant::Isolation::None.new }
1919
let(:kernel) { instance_double(Object, 'kernel') }
20-
let(:subject_a) { instance_double(Mutant::Subject, :a) }
21-
let(:subject_b) { instance_double(Mutant::Subject, :b) }
2220
let(:reporter) { instance_double(Mutant::Reporter) }
2321
let(:selector) { instance_double(Mutant::Selector) }
22+
let(:subject_a) { instance_double(Mutant::Subject, :a) }
23+
let(:subject_b) { instance_double(Mutant::Subject, :b) }
24+
let(:subjects) { [subject_a, subject_b] }
2425
let(:test_a) { instance_double(Mutant::Test, :a) }
2526
let(:test_b) { instance_double(Mutant::Test, :b) }
2627
let(:test_c) { instance_double(Mutant::Test, :c) }
@@ -190,10 +191,18 @@ def apply
190191
subject.test_subject_ratio
191192
end
192193

193-
let(:subjects) { [subject_a, instance_double(Mutant::Subject)] }
194+
context 'on empty subjects' do
195+
let(:subjects) { [] }
194196

195-
it 'returns expected value' do
196-
expect(apply).to eql(Rational(3, 2))
197+
it 'returns expected value' do
198+
expect(apply).to eql(Rational(0))
199+
end
200+
end
201+
202+
context 'on non empty subjects' do
203+
it 'returns expected value' do
204+
expect(apply).to eql(Rational(3, 2))
205+
end
197206
end
198207
end
199208

0 commit comments

Comments
 (0)