mutant 0.6.7 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +10 -0
  3. data/README.md +1 -1
  4. data/config/flay.yml +1 -1
  5. data/config/reek.yml +11 -40
  6. data/config/rubocop.yml +1 -1
  7. data/lib/mutant.rb +10 -2
  8. data/lib/mutant/actor.rb +64 -0
  9. data/lib/mutant/actor/actor.rb +50 -0
  10. data/lib/mutant/actor/env.rb +35 -0
  11. data/lib/mutant/actor/mailbox.rb +53 -0
  12. data/lib/mutant/actor/receiver.rb +48 -0
  13. data/lib/mutant/actor/sender.rb +27 -0
  14. data/lib/mutant/ast/types.rb +1 -1
  15. data/lib/mutant/cli.rb +2 -0
  16. data/lib/mutant/config.rb +2 -1
  17. data/lib/mutant/env.rb +6 -2
  18. data/lib/mutant/expression/methods.rb +1 -1
  19. data/lib/mutant/integration.rb +11 -1
  20. data/lib/mutant/isolation.rb +1 -2
  21. data/lib/mutant/meta/example.rb +1 -1
  22. data/lib/mutant/mutation.rb +47 -21
  23. data/lib/mutant/mutator/node.rb +1 -1
  24. data/lib/mutant/mutator/node/literal/symbol.rb +1 -1
  25. data/lib/mutant/mutator/node/send.rb +4 -3
  26. data/lib/mutant/reporter/cli.rb +2 -0
  27. data/lib/mutant/reporter/cli/format.rb +23 -36
  28. data/lib/mutant/reporter/cli/printer.rb +66 -27
  29. data/lib/mutant/result.rb +45 -58
  30. data/lib/mutant/runner.rb +47 -154
  31. data/lib/mutant/runner/master.rb +174 -0
  32. data/lib/mutant/runner/scheduler.rb +141 -0
  33. data/lib/mutant/runner/worker.rb +93 -0
  34. data/lib/mutant/subject/method/instance.rb +1 -15
  35. data/lib/mutant/test.rb +2 -15
  36. data/lib/mutant/version.rb +1 -1
  37. data/meta/send.rb +16 -0
  38. data/mutant-rspec.gemspec +1 -1
  39. data/mutant.gemspec +1 -1
  40. data/spec/integration/mutant/rspec_spec.rb +0 -6
  41. data/spec/spec_helper.rb +9 -1
  42. data/spec/support/fake_actor.rb +93 -0
  43. data/spec/support/shared_context.rb +135 -0
  44. data/spec/unit/mutant/actor/actor_spec.rb +35 -0
  45. data/spec/unit/mutant/actor/binding_spec.rb +32 -0
  46. data/spec/unit/mutant/actor/env_spec.rb +49 -0
  47. data/spec/unit/mutant/actor/message_spec.rb +23 -0
  48. data/spec/unit/mutant/actor/receiver_spec.rb +60 -0
  49. data/spec/unit/mutant/actor/sender_spec.rb +22 -0
  50. data/spec/unit/mutant/cli_spec.rb +17 -4
  51. data/spec/unit/mutant/env_spec.rb +2 -2
  52. data/spec/unit/mutant/mailbox_spec.rb +33 -0
  53. data/spec/unit/mutant/mutation_spec.rb +52 -18
  54. data/spec/unit/mutant/mutator/registry_spec.rb +4 -4
  55. data/spec/unit/mutant/reporter/cli_spec.rb +131 -249
  56. data/spec/unit/mutant/result/env_spec.rb +55 -0
  57. data/spec/unit/mutant/result/subject_spec.rb +43 -0
  58. data/spec/unit/mutant/runner/master_spec.rb +199 -0
  59. data/spec/unit/mutant/runner/scheduler_spec.rb +161 -0
  60. data/spec/unit/mutant/runner/worker_spec.rb +73 -0
  61. data/spec/unit/mutant/runner_spec.rb +60 -118
  62. data/spec/unit/mutant/subject/method/instance_spec.rb +18 -31
  63. data/spec/unit/mutant/warning_filter_spec.rb +1 -1
  64. metadata +39 -14
  65. data/lib/mutant/runner/collector.rb +0 -133
  66. data/lib/mutant/warning_expectation.rb +0 -47
  67. data/spec/unit/mutant/runner/collector_spec.rb +0 -198
  68. data/spec/unit/mutant/test_spec.rb +0 -23
  69. data/spec/unit/mutant/warning_expectation_spec.rb +0 -80
  70. data/test_app/Gemfile.rspec2 +0 -6
@@ -0,0 +1,73 @@
1
+ RSpec.describe Mutant::Runner::Worker do
2
+ setup_shared_context
3
+
4
+ let(:actor) { actor_env.actor(:worker) }
5
+ let(:parent) { actor_env.actor(:parent).sender }
6
+
7
+ before do
8
+ message_sequence.add(:parent, :ready, actor.sender)
9
+ end
10
+
11
+ let(:attributes) do
12
+ {
13
+ config: config,
14
+ parent: parent,
15
+ id: 1
16
+ }
17
+ end
18
+
19
+ describe '.run' do
20
+ subject { described_class.run(attributes) }
21
+
22
+ let(:actor_names) { [:worker] }
23
+
24
+ context 'when receving :job command' do
25
+
26
+ let(:test_result) { double('Test Result') }
27
+
28
+ before do
29
+ expect(mutation).to receive(:kill).with(config.isolation, config.integration).and_return(test_result).ordered
30
+
31
+ message_sequence.add(:worker, :job, job)
32
+ message_sequence.add(:parent, :result, job_result)
33
+ message_sequence.add(:parent, :ready, actor.sender)
34
+ message_sequence.add(:worker, :stop)
35
+ end
36
+
37
+ let(:test) { double('Test') }
38
+ let(:index) { double('Index') }
39
+ let(:test_result) { double('Test Result') }
40
+ let(:mutation) { double('Mutation') }
41
+ let(:job_result) { Mutant::Runner::JobResult.new(job: job, result: mutation_result) }
42
+ let(:job) { Mutant::Runner::Job.new(index: index, mutation: mutation) }
43
+
44
+ let(:mutation_result) do
45
+ Mutant::Result::Mutation.new(
46
+ mutation: mutation,
47
+ index: job.index,
48
+ test_result: test_result
49
+ )
50
+ end
51
+
52
+ it 'signals ready and status to parent' do
53
+ subject
54
+ end
55
+
56
+ it { should eql(actor.sender) }
57
+
58
+ it 'consumes all messages' do
59
+ expect { subject }.to change(&message_sequence.method(:consumed?)).from(false).to(true)
60
+ end
61
+ end
62
+
63
+ context 'when receiving unknown command' do
64
+ before do
65
+ message_sequence.add(:worker, :other)
66
+ end
67
+
68
+ it 'raises error' do
69
+ expect { subject }.to raise_error(Mutant::Actor::ProtocolError, 'Unknown command: :other')
70
+ end
71
+ end
72
+ end
73
+ end
@@ -1,143 +1,85 @@
1
- class Double
2
- include Concord.new(:name, :attributes)
3
-
4
- def self.new(name, attributes = {})
5
- super
6
- end
7
-
8
- def update(_attributes)
9
- self
10
- end
11
-
12
- def method_missing(name, *arguments)
13
- super unless attributes.key?(name)
14
- fail "Arguments provided for #{name}" if arguments.any?
15
- attributes.fetch(name)
16
- end
17
- end
18
-
19
- # FIXME: This is not even close to a mutation covering spec.
20
1
  RSpec.describe Mutant::Runner do
21
- let(:object) { described_class.new(env) }
2
+ setup_shared_context
22
3
 
23
- let(:reporter) { Mutant::Reporter::Trace.new }
24
- let(:config) { Mutant::Config::DEFAULT.update(reporter: reporter, isolation: Mutant::Isolation::None) }
25
- let(:subjects) { [subject_a, subject_b] }
4
+ let(:integration) { double('Integration') }
5
+ let(:master_sender) { actor_env.spawn }
6
+ let(:runner_actor) { actor_env.actor(:runner) }
26
7
 
27
- let(:subject_a) { Double.new('Subject A', mutations: mutations_a, tests: subject_a_tests) }
28
- let(:subject_b) { Double.new('Subject B', mutations: mutations_b) }
29
-
30
- let(:subject_a_tests) { [test_a1, test_a2] }
31
-
32
- let(:env) do
33
- subjects = self.subjects
34
- Class.new(Mutant::Env) do
35
- define_method(:subjects) { subjects }
36
- end.new(config)
8
+ before do
9
+ expect(integration).to receive(:setup).ordered
10
+ expect(Mutant::Runner::Master).to receive(:call).with(env).and_return(master_sender).ordered
37
11
  end
38
12
 
39
- let(:mutations_a) { [mutation_a1, mutation_a2] }
40
- let(:mutations_b) { [] }
13
+ describe '.call' do
14
+ update(:config) { { integration: integration } }
15
+ let(:actor_names) { [:runner, :master] }
41
16
 
42
- let(:mutation_a1) { Double.new('Mutation A1') }
43
- let(:mutation_a2) { Double.new('Mutation A2') }
17
+ subject { described_class.call(env) }
44
18
 
45
- let(:test_a1) { Double.new('Test A1') }
46
- let(:test_a2) { Double.new('Test A2') }
19
+ context 'when status done gets returned immediately' do
20
+ before do
21
+ message_sequence.add(:runner, :status, actor_env.actor(:current).sender)
22
+ message_sequence.add(:current, :status, status)
23
+ message_sequence.add(:runner, :stop, actor_env.actor(:current).sender)
24
+ message_sequence.add(:current, :stop)
25
+ end
47
26
 
48
- let(:test_report_a1) { Double.new('Test Report A1') }
27
+ it 'returns env result' do
28
+ should be(status.env_result)
29
+ end
49
30
 
50
- before do
51
- allow(mutation_a1).to receive(:subject).and_return(subject_a)
52
- allow(mutation_a1).to receive(:insert)
53
- allow(mutation_a2).to receive(:subject).and_return(subject_a)
54
- allow(mutation_a2).to receive(:insert)
55
- allow(test_a1).to receive(:run).and_return(test_report_a1)
56
- allow(mutation_a1).to receive(:killed_by?).with(test_report_a1).and_return(true)
57
- allow(mutation_a2).to receive(:killed_by?).with(test_report_a1).and_return(true)
58
- end
31
+ it 'logs start' do
32
+ expect { subject }.to change { config.reporter.start_calls }.from([]).to([env])
33
+ end
59
34
 
60
- before do
61
- time = Time.at(0)
62
- allow(Time).to receive(:now).and_return(time)
63
- end
35
+ it 'logs process' do
36
+ expect { subject }.to change { config.reporter.progress_calls }.from([]).to([status])
37
+ end
64
38
 
65
- let(:expected_subject_results) do
66
- [
67
- Mutant::Result::Subject.new(
68
- subject: subject_a,
69
- mutation_results: [
70
- Mutant::Result::Mutation.new(
71
- index: 0,
72
- mutation: mutation_a1,
73
- runtime: 0.0,
74
- test_results: [test_report_a1]
75
- ),
76
- Mutant::Result::Mutation.new(
77
- index: 1,
78
- mutation: mutation_a2,
79
- runtime: 0.0,
80
- test_results: [test_report_a1]
81
- )
82
- ],
83
- runtime: 0.0
84
- ),
85
- Mutant::Result::Subject.new(
86
- subject: subject_b,
87
- mutation_results: [],
88
- runtime: 0.0
89
- )
90
- ]
91
- end
39
+ it 'logs result' do
40
+ expect { subject }.to change { config.reporter.report_calls }.from([]).to([status.env_result])
41
+ end
92
42
 
93
- describe '#result' do
94
- let(:expected_result) do
95
- Mutant::Result::Env.new(
96
- env: env,
97
- runtime: 0.0,
98
- subject_results: expected_subject_results
99
- )
43
+ it 'consumes all messages' do
44
+ expect { subject }.to change(&message_sequence.method(:consumed?)).from(false).to(true)
45
+ end
100
46
  end
101
47
 
102
- context 'on error free execution' do
103
- subject { object.result }
104
-
105
- its(:env) { should be(env) }
48
+ context 'when status done gets returned immediately' do
49
+ let(:incomplete_status) { status.update(done: false) }
106
50
 
107
- it 'reports result' do
108
- expect { subject }.to change { config.reporter.report_calls }.from([]).to([expected_result])
51
+ before do
52
+ expect(Kernel).to receive(:sleep).with(1 / 20.0).exactly(2).times.ordered
53
+ message_sequence.add(:runner, :status, actor_env.actor(:current).sender)
54
+ message_sequence.add(:current, :status, incomplete_status)
55
+ message_sequence.add(:runner, :status, actor_env.actor(:current).sender)
56
+ message_sequence.add(:current, :status, incomplete_status)
57
+ message_sequence.add(:runner, :status, actor_env.actor(:current).sender)
58
+ message_sequence.add(:current, :status, status)
59
+ message_sequence.add(:runner, :stop, actor_env.actor(:current).sender)
60
+ message_sequence.add(:current, :stop)
109
61
  end
110
- end
111
62
 
112
- context 'when isolation raises error' do
113
- subject { object.result }
63
+ it 'returns env result' do
64
+ should be(status.env_result)
65
+ end
114
66
 
115
- its(:env) { should be(env) }
116
- its(:subject_results) { should eql(expected_subject_results) }
67
+ it 'logs start' do
68
+ expect { subject }.to change { config.reporter.start_calls }.from([]).to([env])
69
+ end
117
70
 
118
- it { should eql(expected_result) }
71
+ it 'logs result' do
72
+ expect { subject }.to change { config.reporter.report_calls }.from([]).to([status.env_result])
73
+ end
119
74
 
120
- before do
121
- expect(Mutant::Isolation::None).to receive(:call)
122
- .twice
123
- .and_raise(Mutant::Isolation::Error.new('test-exception-message'))
124
-
125
- expect(Mutant::Result::Test).to receive(:new).with(
126
- test: test_a1,
127
- mutation: mutation_a1,
128
- runtime: 0.0,
129
- output: 'test-exception-message',
130
- passed: false
131
- ).and_return(test_report_a1)
132
- expect(Mutant::Result::Test).to receive(:new).with(
133
- test: test_a1,
134
- mutation: mutation_a2,
135
- runtime: 0.0,
136
- output: 'test-exception-message',
137
- passed: false
138
- ).and_return(test_report_a1)
75
+ it 'logs process' do
76
+ expected = [incomplete_status, incomplete_status, status]
77
+ expect { subject }.to change { config.reporter.progress_calls }.from([]).to(expected)
139
78
  end
140
79
 
80
+ it 'consumes all messages' do
81
+ expect { subject }.to change(&message_sequence.method(:consumed?)).from(false).to(true)
82
+ end
141
83
  end
142
84
  end
143
85
  end
@@ -48,36 +48,11 @@ RSpec.describe Mutant::Subject::Method::Instance do
48
48
 
49
49
  subject { object.prepare }
50
50
 
51
- context 'on non initialize methods' do
52
-
53
- it 'undefines method on scope' do
54
- expect { subject }.to change { scope.instance_methods.include?(:foo) }.from(true).to(false)
55
- end
56
-
57
- it_should_behave_like 'a command method'
58
-
51
+ it 'undefines method on scope' do
52
+ expect { subject }.to change { scope.instance_methods.include?(:foo) }.from(true).to(false)
59
53
  end
60
54
 
61
- context 'on initialize method' do
62
-
63
- let(:node) do
64
- s(:def, :initialize, s(:args))
65
- end
66
-
67
- it 'does not write warnings' do
68
- warnings = Mutant::WarningFilter.use do
69
- subject
70
- end
71
- expect(warnings).to eql([])
72
- end
73
-
74
- it 'undefines method on scope' do
75
- subject
76
- expect { scope.new }.to raise_error(NoMethodError)
77
- end
78
-
79
- it_should_behave_like 'a command method'
80
- end
55
+ it_should_behave_like 'a command method'
81
56
  end
82
57
 
83
58
  describe '#source' do
@@ -157,9 +132,21 @@ RSpec.describe Mutant::Subject::Method::Instance::Memoized do
157
132
 
158
133
  let(:expected) do
159
134
  [
160
- Mutant::Mutation::Neutral.new(object, s(:begin, s(:def, :foo, s(:args)), s(:send, nil, :memoize, s(:args, s(:sym, :foo))))),
161
- Mutant::Mutation::Evil.new(object, s(:begin, s(:def, :foo, s(:args), s(:send, nil, :raise)), s(:send, nil, :memoize, s(:args, s(:sym, :foo))))),
162
- Mutant::Mutation::Evil.new(object, s(:begin, s(:def, :foo, s(:args), nil), s(:send, nil, :memoize, s(:args, s(:sym, :foo))))),
135
+ Mutant::Mutation::Neutral.new(
136
+ object,
137
+ s(:begin,
138
+ s(:def, :foo, s(:args)), s(:send, nil, :memoize, s(:args, s(:sym, :foo))))
139
+ ),
140
+ Mutant::Mutation::Evil.new(
141
+ object,
142
+ s(:begin,
143
+ s(:def, :foo, s(:args), s(:send, nil, :raise)), s(:send, nil, :memoize, s(:args, s(:sym, :foo))))
144
+ ),
145
+ Mutant::Mutation::Evil.new(
146
+ object,
147
+ s(:begin,
148
+ s(:def, :foo, s(:args), nil), s(:send, nil, :memoize, s(:args, s(:sym, :foo))))
149
+ )
163
150
  ]
164
151
  end
165
152
 
@@ -59,7 +59,7 @@ RSpec.describe Mutant::WarningFilter do
59
59
  expect(found).to be(true)
60
60
  end
61
61
 
62
- it 'resets to original stderr after execution with exeception ' do
62
+ it 'resets to original stderr after execution with exception ' do
63
63
  original = $stderr
64
64
  begin
65
65
  object.use { fail }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mutant
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.7
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Markus Schirp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-17 00:00:00.000000000 Z
11
+ date: 2014-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser
@@ -128,14 +128,14 @@ dependencies:
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: 0.11.0
131
+ version: 0.11.1
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: 0.11.0
138
+ version: 0.11.1
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: adamantium
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -274,6 +274,12 @@ files:
274
274
  - config/triage.yml
275
275
  - config/yardstick.yml
276
276
  - lib/mutant.rb
277
+ - lib/mutant/actor.rb
278
+ - lib/mutant/actor/actor.rb
279
+ - lib/mutant/actor/env.rb
280
+ - lib/mutant/actor/mailbox.rb
281
+ - lib/mutant/actor/receiver.rb
282
+ - lib/mutant/actor/sender.rb
277
283
  - lib/mutant/ast.rb
278
284
  - lib/mutant/ast/meta.rb
279
285
  - lib/mutant/ast/named_children.rb
@@ -382,14 +388,15 @@ files:
382
388
  - lib/mutant/require_highjack.rb
383
389
  - lib/mutant/result.rb
384
390
  - lib/mutant/runner.rb
385
- - lib/mutant/runner/collector.rb
391
+ - lib/mutant/runner/master.rb
392
+ - lib/mutant/runner/scheduler.rb
393
+ - lib/mutant/runner/worker.rb
386
394
  - lib/mutant/subject.rb
387
395
  - lib/mutant/subject/method.rb
388
396
  - lib/mutant/subject/method/instance.rb
389
397
  - lib/mutant/subject/method/singleton.rb
390
398
  - lib/mutant/test.rb
391
399
  - lib/mutant/version.rb
392
- - lib/mutant/warning_expectation.rb
393
400
  - lib/mutant/warning_filter.rb
394
401
  - lib/mutant/zombifier.rb
395
402
  - lib/mutant/zombifier/file.rb
@@ -460,11 +467,19 @@ files:
460
467
  - spec/spec_helper.rb
461
468
  - spec/support/compress_helper.rb
462
469
  - spec/support/corpus.rb
470
+ - spec/support/fake_actor.rb
463
471
  - spec/support/ice_nine_config.rb
464
472
  - spec/support/mutation_verifier.rb
465
473
  - spec/support/rb_bug.rb
466
474
  - spec/support/rspec.rb
475
+ - spec/support/shared_context.rb
467
476
  - spec/support/test_app.rb
477
+ - spec/unit/mutant/actor/actor_spec.rb
478
+ - spec/unit/mutant/actor/binding_spec.rb
479
+ - spec/unit/mutant/actor/env_spec.rb
480
+ - spec/unit/mutant/actor/message_spec.rb
481
+ - spec/unit/mutant/actor/receiver_spec.rb
482
+ - spec/unit/mutant/actor/sender_spec.rb
468
483
  - spec/unit/mutant/ast_spec.rb
469
484
  - spec/unit/mutant/cli_spec.rb
470
485
  - spec/unit/mutant/context/root_spec.rb
@@ -481,6 +496,7 @@ files:
481
496
  - spec/unit/mutant/integration_spec.rb
482
497
  - spec/unit/mutant/isolation_spec.rb
483
498
  - spec/unit/mutant/loader/eval_spec.rb
499
+ - spec/unit/mutant/mailbox_spec.rb
484
500
  - spec/unit/mutant/matcher/chain_spec.rb
485
501
  - spec/unit/mutant/matcher/compiler/subject_prefix_spec.rb
486
502
  - spec/unit/mutant/matcher/compiler_spec.rb
@@ -497,19 +513,20 @@ files:
497
513
  - spec/unit/mutant/reporter/cli_spec.rb
498
514
  - spec/unit/mutant/reporter/null_spec.rb
499
515
  - spec/unit/mutant/require_highjack_spec.rb
500
- - spec/unit/mutant/runner/collector_spec.rb
516
+ - spec/unit/mutant/result/env_spec.rb
517
+ - spec/unit/mutant/result/subject_spec.rb
518
+ - spec/unit/mutant/runner/master_spec.rb
519
+ - spec/unit/mutant/runner/scheduler_spec.rb
520
+ - spec/unit/mutant/runner/worker_spec.rb
501
521
  - spec/unit/mutant/runner_spec.rb
502
522
  - spec/unit/mutant/subject/context_spec.rb
503
523
  - spec/unit/mutant/subject/method/instance_spec.rb
504
524
  - spec/unit/mutant/subject/method/singleton_spec.rb
505
525
  - spec/unit/mutant/subject_spec.rb
506
- - spec/unit/mutant/test_spec.rb
507
- - spec/unit/mutant/warning_expectation_spec.rb
508
526
  - spec/unit/mutant/warning_filter_spec.rb
509
527
  - spec/unit/mutant_spec.rb
510
528
  - test_app/.rspec
511
529
  - test_app/Gemfile.devtools
512
- - test_app/Gemfile.rspec2
513
530
  - test_app/Gemfile.rspec3.0
514
531
  - test_app/Gemfile.rspec3.1
515
532
  - test_app/lib/test_app.rb
@@ -547,6 +564,12 @@ test_files:
547
564
  - spec/integration/mutant/rspec_spec.rb
548
565
  - spec/integration/mutant/test_mutator_handles_types_spec.rb
549
566
  - spec/integration/mutant/zombie_spec.rb
567
+ - spec/unit/mutant/actor/actor_spec.rb
568
+ - spec/unit/mutant/actor/binding_spec.rb
569
+ - spec/unit/mutant/actor/env_spec.rb
570
+ - spec/unit/mutant/actor/message_spec.rb
571
+ - spec/unit/mutant/actor/receiver_spec.rb
572
+ - spec/unit/mutant/actor/sender_spec.rb
550
573
  - spec/unit/mutant/ast_spec.rb
551
574
  - spec/unit/mutant/cli_spec.rb
552
575
  - spec/unit/mutant/context/root_spec.rb
@@ -563,6 +586,7 @@ test_files:
563
586
  - spec/unit/mutant/integration_spec.rb
564
587
  - spec/unit/mutant/isolation_spec.rb
565
588
  - spec/unit/mutant/loader/eval_spec.rb
589
+ - spec/unit/mutant/mailbox_spec.rb
566
590
  - spec/unit/mutant/matcher/chain_spec.rb
567
591
  - spec/unit/mutant/matcher/compiler/subject_prefix_spec.rb
568
592
  - spec/unit/mutant/matcher/compiler_spec.rb
@@ -579,14 +603,15 @@ test_files:
579
603
  - spec/unit/mutant/reporter/cli_spec.rb
580
604
  - spec/unit/mutant/reporter/null_spec.rb
581
605
  - spec/unit/mutant/require_highjack_spec.rb
582
- - spec/unit/mutant/runner/collector_spec.rb
606
+ - spec/unit/mutant/result/env_spec.rb
607
+ - spec/unit/mutant/result/subject_spec.rb
608
+ - spec/unit/mutant/runner/master_spec.rb
609
+ - spec/unit/mutant/runner/scheduler_spec.rb
610
+ - spec/unit/mutant/runner/worker_spec.rb
583
611
  - spec/unit/mutant/runner_spec.rb
584
612
  - spec/unit/mutant/subject/context_spec.rb
585
613
  - spec/unit/mutant/subject/method/instance_spec.rb
586
614
  - spec/unit/mutant/subject/method/singleton_spec.rb
587
615
  - spec/unit/mutant/subject_spec.rb
588
- - spec/unit/mutant/test_spec.rb
589
- - spec/unit/mutant/warning_expectation_spec.rb
590
616
  - spec/unit/mutant/warning_filter_spec.rb
591
617
  - spec/unit/mutant_spec.rb
592
- has_rdoc: