mutant 0.7.9 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +11 -1
  3. data/README.md +5 -12
  4. data/bin/mutant +17 -1
  5. data/config/flay.yml +1 -1
  6. data/config/flog.yml +1 -1
  7. data/config/reek.yml +4 -4
  8. data/config/rubocop.yml +21 -3
  9. data/lib/mutant.rb +15 -61
  10. data/lib/mutant/cli.rb +1 -7
  11. data/lib/mutant/color.rb +2 -2
  12. data/lib/mutant/config.rb +1 -1
  13. data/lib/mutant/expression/method.rb +1 -1
  14. data/lib/mutant/expression/methods.rb +1 -1
  15. data/lib/mutant/expression/namespace.rb +1 -1
  16. data/lib/mutant/mutator/node/send.rb +18 -18
  17. data/lib/mutant/reporter/cli.rb +1 -6
  18. data/lib/mutant/reporter/cli/format.rb +2 -2
  19. data/lib/mutant/reporter/cli/printer.rb +5 -500
  20. data/lib/mutant/reporter/cli/printer/config.rb +32 -0
  21. data/lib/mutant/reporter/cli/printer/env_progress.rb +66 -0
  22. data/lib/mutant/reporter/cli/printer/env_result.rb +23 -0
  23. data/lib/mutant/reporter/cli/printer/mutation_progress_result.rb +37 -0
  24. data/lib/mutant/reporter/cli/printer/mutation_result.rb +151 -0
  25. data/lib/mutant/reporter/cli/printer/status.rb +60 -0
  26. data/lib/mutant/reporter/cli/printer/status_progressive.rb +52 -0
  27. data/lib/mutant/reporter/cli/printer/subject_progress.rb +90 -0
  28. data/lib/mutant/reporter/cli/printer/subject_result.rb +28 -0
  29. data/lib/mutant/reporter/cli/printer/test_result.rb +33 -0
  30. data/lib/mutant/require_highjack.rb +11 -50
  31. data/lib/mutant/version.rb +1 -1
  32. data/lib/mutant/zombifier.rb +79 -37
  33. data/meta/send.rb +1 -1
  34. data/mutant-rspec.gemspec +1 -1
  35. data/mutant.gemspec +3 -3
  36. data/spec/integration/mutant/corpus_spec.rb +2 -2
  37. data/spec/integration/mutant/rspec_spec.rb +5 -15
  38. data/spec/integrations.yml +3 -3
  39. data/spec/spec_helper.rb +1 -0
  40. data/spec/support/corpus.rb +233 -220
  41. data/spec/support/file_system.rb +60 -0
  42. data/spec/support/rb_bug.rb +1 -1
  43. data/spec/support/ruby_vm.rb +82 -0
  44. data/spec/support/shared_context.rb +19 -10
  45. data/spec/unit/mutant/ast_spec.rb +2 -2
  46. data/spec/unit/mutant/cache_spec.rb +22 -0
  47. data/spec/unit/mutant/cli_spec.rb +1 -30
  48. data/spec/unit/mutant/context_spec.rb +1 -0
  49. data/spec/unit/mutant/expression/method_spec.rb +6 -4
  50. data/spec/unit/mutant/parallel/master_spec.rb +1 -1
  51. data/spec/unit/mutant/reporter/cli/printer/config_spec.rb +33 -0
  52. data/spec/unit/mutant/reporter/cli/printer/env_progress_spec.rb +76 -0
  53. data/spec/unit/mutant/reporter/cli/printer/env_result_spec.rb +35 -0
  54. data/spec/unit/mutant/reporter/cli/printer/mutation_progress_result_spec.rb +23 -0
  55. data/spec/unit/mutant/reporter/cli/printer/mutation_result_spec.rb +110 -0
  56. data/spec/unit/mutant/reporter/cli/printer/status_progressive_spec.rb +51 -0
  57. data/spec/unit/mutant/reporter/cli/printer/status_spec.rb +145 -0
  58. data/spec/unit/mutant/reporter/cli/printer/subject_progress_spec.rb +37 -0
  59. data/spec/unit/mutant/reporter/cli/printer/subject_result_spec.rb +37 -0
  60. data/spec/unit/mutant/reporter/cli/printer/test_result_spec.rb +14 -0
  61. data/spec/unit/mutant/reporter/cli/printer_spec.rb +140 -0
  62. data/spec/unit/mutant/reporter/cli_spec.rb +69 -313
  63. data/spec/unit/mutant/reporter/trace_spec.rb +12 -0
  64. data/spec/unit/mutant/require_highjack_spec.rb +25 -28
  65. data/spec/unit/mutant/warning_filter_spec.rb +7 -0
  66. data/spec/unit/mutant/zombifier_spec.rb +120 -0
  67. data/spec/unit/mutant_spec.rb +0 -43
  68. data/test_app/Gemfile.rspec3.3 +6 -0
  69. metadata +46 -17
  70. data/.travis.yml +0 -20
  71. data/lib/mutant/zombifier/file.rb +0 -100
  72. data/spec/integration/mutant/zombie_spec.rb +0 -6
@@ -6,4 +6,16 @@ RSpec.describe Mutant::Reporter::Trace do
6
6
 
7
7
  it { should eql(0.0) }
8
8
  end
9
+
10
+ let(:reportable) { double('Reportable') }
11
+
12
+ %i[report start progress].each do |name|
13
+ describe "##{name}" do
14
+ subject { object.public_send(name, reportable) }
15
+
16
+ it 'logs the reportable' do
17
+ expect { subject }.to change { object.public_send("#{name}_calls") }.from([]).to([reportable])
18
+ end
19
+ end
20
+ end
9
21
  end
@@ -1,50 +1,47 @@
1
1
  RSpec.describe Mutant::RequireHighjack do
2
- let(:object) { described_class.new(target, highjacked_calls.method(:push)) }
3
-
4
2
  let(:highjacked_calls) { [] }
5
3
  let(:require_calls) { [] }
6
4
 
7
- let(:target) do
5
+ let(:target_module) do
8
6
  acc = require_calls
9
7
  Module.new do
10
8
  define_method(:require, &acc.method(:<<))
9
+
11
10
  module_function :require
11
+ public :require
12
12
  end
13
13
  end
14
14
 
15
- describe '#run' do
16
- let(:block) { -> {} }
15
+ def target_require(logical_name)
16
+ Object.new.extend(target_module).require(logical_name)
17
+ end
18
+
19
+ describe '.call' do
17
20
  let(:logical_name) { double('Logical Name') }
18
21
 
19
- subject do
20
- object.run(&block)
22
+ def apply
23
+ described_class.call(target_module, highjacked_calls.method(:<<))
21
24
  end
22
25
 
23
- context 'require calls before run' do
24
- it 'does not highjack anything' do
25
- target.require(logical_name)
26
- expect(require_calls).to eql([logical_name])
27
- expect(highjacked_calls).to eql([])
28
- end
26
+ it 'returns the original implementation from singleton' do
27
+ expect { apply.call(logical_name) }
28
+ .to change { require_calls }
29
+ .from([])
30
+ .to([logical_name])
29
31
  end
30
32
 
31
- context 'require calls during run' do
32
- let(:block) { -> { target.require(logical_name) } }
33
-
34
- it 'does highjack the calls' do
35
- expect { subject }.to change { highjacked_calls }.from([]).to([logical_name])
36
- expect(require_calls).to eql([])
37
- end
33
+ it 'does highjack target object #requires calls' do
34
+ apply
35
+ expect { target_require(logical_name) }
36
+ .to change { highjacked_calls }
37
+ .from([])
38
+ .to([logical_name])
38
39
  end
39
40
 
40
- context 'require calls after run' do
41
-
42
- it 'does not the calls anything' do
43
- subject
44
- target.require(logical_name)
45
- expect(require_calls).to eql([logical_name])
46
- expect(highjacked_calls).to eql([])
47
- end
41
+ it 'does not call original require' do
42
+ apply
43
+ expect { target_require(logical_name) }
44
+ .not_to change { require_calls }.from([])
48
45
  end
49
46
  end
50
47
  end
@@ -88,6 +88,13 @@ RSpec.describe Mutant::WarningFilter do
88
88
  )
89
89
  end
90
90
 
91
+ it 'passes through non warning writes' do
92
+ expect($stderr).to receive(:write).with('foo')
93
+ object.use do
94
+ $stderr.write('foo')
95
+ end
96
+ end
97
+
91
98
  it 'resets to original stderr after execution' do
92
99
  original = $stderr
93
100
  object.use {}
@@ -0,0 +1,120 @@
1
+ RSpec.describe Mutant::Zombifier do
2
+ let(:root_require) { Pathname.new('project') }
3
+
4
+ let(:pathname) do
5
+ instance_double(::Pathname.singleton_class)
6
+ end
7
+
8
+ let(:require_highjack) do
9
+ lambda do |block|
10
+ original = ruby_vm.method(:require)
11
+ allow(ruby_vm).to receive(:require, &block)
12
+ original
13
+ end
14
+ end
15
+
16
+ let(:options) do
17
+ {
18
+ load_path: %w[a b],
19
+ includes: %w[project bar],
20
+ namespace: :Zombie,
21
+ require_highjack: require_highjack,
22
+ root_require: root_require,
23
+ pathname: pathname,
24
+ kernel: ruby_vm
25
+ }
26
+ end
27
+
28
+ let(:ruby_vm) do
29
+ MutantSpec::RubyVM.new(
30
+ [
31
+ MutantSpec::RubyVM::EventExpectation::Require.new(
32
+ expected_payload: {
33
+ logical_name: 'project'
34
+ }
35
+ ),
36
+ MutantSpec::RubyVM::EventExpectation::Eval.new(
37
+ expected_payload: {
38
+ binding: TOPLEVEL_BINDING,
39
+ source: "module Zombie\n module Project\n end\nend",
40
+ source_location: 'a/project.rb'
41
+ },
42
+ trigger_requires: %w[foo bar]
43
+ ),
44
+ MutantSpec::RubyVM::EventExpectation::Require.new(
45
+ expected_payload: {
46
+ logical_name: 'foo'
47
+ },
48
+ trigger_requires: %w[bar]
49
+ ),
50
+ MutantSpec::RubyVM::EventExpectation::Require.new(
51
+ expected_payload: {
52
+ logical_name: 'bar'
53
+ }
54
+ ),
55
+ MutantSpec::RubyVM::EventExpectation::Eval.new(
56
+ expected_payload: {
57
+ binding: TOPLEVEL_BINDING,
58
+ source: "module Zombie\n module Bar\n end\nend",
59
+ source_location: 'b/bar.rb'
60
+ },
61
+ trigger_requires: %w[]
62
+ ),
63
+ MutantSpec::RubyVM::EventExpectation::Require.new(
64
+ expected_payload: {
65
+ logical_name: 'bar'
66
+ }
67
+ )
68
+ ]
69
+ )
70
+ end
71
+
72
+ let(:require_effects) do
73
+ {
74
+ 'project' => { requires: [] }
75
+ }
76
+ end
77
+
78
+ let(:file_entries) do
79
+ {
80
+ 'a/project.rb' => { file: true, contents: 'module Project; end' },
81
+ 'b/bar.rb' => { file: true, contents: 'module Bar; end' }
82
+ }
83
+ end
84
+
85
+ let(:file_system) do
86
+ MutantSpec::FileSystem.new(
87
+ Hash[
88
+ file_entries.map { |key, attributes| [key, MutantSpec::FileState.new(attributes)] }
89
+ ]
90
+ )
91
+ end
92
+
93
+ describe '.call' do
94
+ def apply
95
+ described_class.call(options)
96
+ end
97
+
98
+ before do
99
+ allow(pathname).to receive(:new, &file_system.method(:path))
100
+ end
101
+
102
+ it 'returns self' do
103
+ expect(apply).to be(described_class)
104
+ end
105
+
106
+ it 'consumes walks the VM through expected steps' do
107
+ expect { apply }.to change(ruby_vm, :done?).from(false).to(true)
108
+ end
109
+
110
+ context 'when zombifier require fails' do
111
+ let(:file_entries) do
112
+ {}
113
+ end
114
+
115
+ it 'raises zombifier specific load error' do
116
+ expect { apply }.to raise_error(described_class::LoadError, 'Cannot find file "project.rb" in load path')
117
+ end
118
+ end
119
+ end
120
+ end
@@ -12,47 +12,4 @@ RSpec.describe Mutant do
12
12
 
13
13
  it { should be(result) }
14
14
  end
15
-
16
- describe '.zombify' do
17
- subject { object.zombify }
18
-
19
- it 'calls the zombifier' do
20
- expect(Mutant::Zombifier).to receive(:run).with('mutant', :Zombie)
21
- subject
22
- end
23
- end
24
-
25
- describe '.singleton_subclass_instance' do
26
- subject { object.singleton_subclass_instance(name, superclass, &block) }
27
-
28
- before { subject }
29
-
30
- let(:name) { 'Test' }
31
- let(:block) { proc { def foo; end } }
32
- let(:superclass) { Class.new }
33
-
34
- let(:generated) { superclass.const_get(:Test) }
35
-
36
- it_should_behave_like 'a command method'
37
-
38
- it 'sets expected name' do
39
- name = generated.class.name
40
- expect(name).to eql("::#{self.name}")
41
- expect(name).to be_frozen
42
- end
43
-
44
- it 'stores instance of subclass' do
45
- expect(generated).to be_kind_of(superclass)
46
- end
47
-
48
- it 'evaluates the context of proc inside subclass' do
49
- expect(generated).to respond_to(:foo)
50
- end
51
-
52
- it 'generates nice #inspect' do
53
- inspect = generated.inspect
54
- expect(inspect).to eql("::#{self.name}")
55
- expect(inspect).to be_frozen
56
- end
57
- end
58
15
  end
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+ gem 'rspec', '~> 3.3.0'
3
+ gem 'rspec-core', '~> 3.3.0'
4
+ gem 'mutant', path: '../'
5
+ gem 'mutant-rspec', path: '../'
6
+ gem 'adamantium'
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.7.9
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Markus Schirp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-30 00:00:00.000000000 Z
11
+ date: 2015-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser
@@ -16,20 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.2'
20
- - - ">="
21
- - !ruby/object:Gem::Version
22
- version: 2.2.0.2
19
+ version: 2.2.2
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
24
  - - "~>"
28
25
  - !ruby/object:Gem::Version
29
- version: '2.2'
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- version: 2.2.0.2
26
+ version: 2.2.2
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: ast
35
29
  requirement: !ruby/object:Gem::Requirement
@@ -120,14 +114,14 @@ dependencies:
120
114
  requirements:
121
115
  - - "~>"
122
116
  - !ruby/object:Gem::Version
123
- version: 0.2.2
117
+ version: 0.2.4
124
118
  type: :runtime
125
119
  prerelease: false
126
120
  version_requirements: !ruby/object:Gem::Requirement
127
121
  requirements:
128
122
  - - "~>"
129
123
  - !ruby/object:Gem::Version
130
- version: 0.2.2
124
+ version: 0.2.4
131
125
  - !ruby/object:Gem::Dependency
132
126
  name: ice_nine
133
127
  requirement: !ruby/object:Gem::Requirement
@@ -260,7 +254,6 @@ files:
260
254
  - ".rspec"
261
255
  - ".rubocop.yml"
262
256
  - ".ruby-gemset"
263
- - ".travis.yml"
264
257
  - Changelog.md
265
258
  - Gemfile
266
259
  - Guardfile
@@ -391,6 +384,16 @@ files:
391
384
  - lib/mutant/reporter/cli.rb
392
385
  - lib/mutant/reporter/cli/format.rb
393
386
  - lib/mutant/reporter/cli/printer.rb
387
+ - lib/mutant/reporter/cli/printer/config.rb
388
+ - lib/mutant/reporter/cli/printer/env_progress.rb
389
+ - lib/mutant/reporter/cli/printer/env_result.rb
390
+ - lib/mutant/reporter/cli/printer/mutation_progress_result.rb
391
+ - lib/mutant/reporter/cli/printer/mutation_result.rb
392
+ - lib/mutant/reporter/cli/printer/status.rb
393
+ - lib/mutant/reporter/cli/printer/status_progressive.rb
394
+ - lib/mutant/reporter/cli/printer/subject_progress.rb
395
+ - lib/mutant/reporter/cli/printer/subject_result.rb
396
+ - lib/mutant/reporter/cli/printer/test_result.rb
394
397
  - lib/mutant/reporter/cli/tput.rb
395
398
  - lib/mutant/reporter/null.rb
396
399
  - lib/mutant/reporter/trace.rb
@@ -408,7 +411,6 @@ files:
408
411
  - lib/mutant/version.rb
409
412
  - lib/mutant/warning_filter.rb
410
413
  - lib/mutant/zombifier.rb
411
- - lib/mutant/zombifier/file.rb
412
414
  - meta/and.rb
413
415
  - meta/and_asgn.rb
414
416
  - meta/array.rb
@@ -469,7 +471,6 @@ files:
469
471
  - spec/integration/mutant/null_spec.rb
470
472
  - spec/integration/mutant/rspec_spec.rb
471
473
  - spec/integration/mutant/test_mutator_handles_types_spec.rb
472
- - spec/integration/mutant/zombie_spec.rb
473
474
  - spec/integrations.yml
474
475
  - spec/rcov.opts
475
476
  - spec/shared/framework_integration_behavior.rb
@@ -478,10 +479,12 @@ files:
478
479
  - spec/support/compress_helper.rb
479
480
  - spec/support/corpus.rb
480
481
  - spec/support/fake_actor.rb
482
+ - spec/support/file_system.rb
481
483
  - spec/support/ice_nine_config.rb
482
484
  - spec/support/mutation_verifier.rb
483
485
  - spec/support/rb_bug.rb
484
486
  - spec/support/rspec.rb
487
+ - spec/support/ruby_vm.rb
485
488
  - spec/support/shared_context.rb
486
489
  - spec/support/test_app.rb
487
490
  - spec/unit/mutant/actor/binding_spec.rb
@@ -491,6 +494,7 @@ files:
491
494
  - spec/unit/mutant/actor/receiver_spec.rb
492
495
  - spec/unit/mutant/actor/sender_spec.rb
493
496
  - spec/unit/mutant/ast_spec.rb
497
+ - spec/unit/mutant/cache_spec.rb
494
498
  - spec/unit/mutant/cli_spec.rb
495
499
  - spec/unit/mutant/context/root_spec.rb
496
500
  - spec/unit/mutant/context/scope/root_spec.rb
@@ -525,6 +529,17 @@ files:
525
529
  - spec/unit/mutant/parallel/source/array_spec.rb
526
530
  - spec/unit/mutant/parallel/worker_spec.rb
527
531
  - spec/unit/mutant/parallel_spec.rb
532
+ - spec/unit/mutant/reporter/cli/printer/config_spec.rb
533
+ - spec/unit/mutant/reporter/cli/printer/env_progress_spec.rb
534
+ - spec/unit/mutant/reporter/cli/printer/env_result_spec.rb
535
+ - spec/unit/mutant/reporter/cli/printer/mutation_progress_result_spec.rb
536
+ - spec/unit/mutant/reporter/cli/printer/mutation_result_spec.rb
537
+ - spec/unit/mutant/reporter/cli/printer/status_progressive_spec.rb
538
+ - spec/unit/mutant/reporter/cli/printer/status_spec.rb
539
+ - spec/unit/mutant/reporter/cli/printer/subject_progress_spec.rb
540
+ - spec/unit/mutant/reporter/cli/printer/subject_result_spec.rb
541
+ - spec/unit/mutant/reporter/cli/printer/test_result_spec.rb
542
+ - spec/unit/mutant/reporter/cli/printer_spec.rb
528
543
  - spec/unit/mutant/reporter/cli/tput_spec.rb
529
544
  - spec/unit/mutant/reporter/cli_spec.rb
530
545
  - spec/unit/mutant/reporter/null_spec.rb
@@ -540,11 +555,13 @@ files:
540
555
  - spec/unit/mutant/subject/method/singleton_spec.rb
541
556
  - spec/unit/mutant/subject_spec.rb
542
557
  - spec/unit/mutant/warning_filter_spec.rb
558
+ - spec/unit/mutant/zombifier_spec.rb
543
559
  - spec/unit/mutant_spec.rb
544
560
  - test_app/.rspec
545
561
  - test_app/Gemfile.rspec3.0
546
562
  - test_app/Gemfile.rspec3.1
547
563
  - test_app/Gemfile.rspec3.2
564
+ - test_app/Gemfile.rspec3.3
548
565
  - test_app/lib/test_app.rb
549
566
  - test_app/lib/test_app/literal.rb
550
567
  - test_app/spec/spec_helper.rb
@@ -561,7 +578,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
561
578
  requirements:
562
579
  - - ">="
563
580
  - !ruby/object:Gem::Version
564
- version: 1.9.3
581
+ version: '2.1'
565
582
  required_rubygems_version: !ruby/object:Gem::Requirement
566
583
  requirements:
567
584
  - - ">="
@@ -578,7 +595,6 @@ test_files:
578
595
  - spec/integration/mutant/null_spec.rb
579
596
  - spec/integration/mutant/rspec_spec.rb
580
597
  - spec/integration/mutant/test_mutator_handles_types_spec.rb
581
- - spec/integration/mutant/zombie_spec.rb
582
598
  - spec/unit/mutant/actor/binding_spec.rb
583
599
  - spec/unit/mutant/actor/env_spec.rb
584
600
  - spec/unit/mutant/actor/mailbox_spec.rb
@@ -586,6 +602,7 @@ test_files:
586
602
  - spec/unit/mutant/actor/receiver_spec.rb
587
603
  - spec/unit/mutant/actor/sender_spec.rb
588
604
  - spec/unit/mutant/ast_spec.rb
605
+ - spec/unit/mutant/cache_spec.rb
589
606
  - spec/unit/mutant/cli_spec.rb
590
607
  - spec/unit/mutant/context/root_spec.rb
591
608
  - spec/unit/mutant/context/scope/root_spec.rb
@@ -620,6 +637,17 @@ test_files:
620
637
  - spec/unit/mutant/parallel/source/array_spec.rb
621
638
  - spec/unit/mutant/parallel/worker_spec.rb
622
639
  - spec/unit/mutant/parallel_spec.rb
640
+ - spec/unit/mutant/reporter/cli/printer/config_spec.rb
641
+ - spec/unit/mutant/reporter/cli/printer/env_progress_spec.rb
642
+ - spec/unit/mutant/reporter/cli/printer/env_result_spec.rb
643
+ - spec/unit/mutant/reporter/cli/printer/mutation_progress_result_spec.rb
644
+ - spec/unit/mutant/reporter/cli/printer/mutation_result_spec.rb
645
+ - spec/unit/mutant/reporter/cli/printer/status_progressive_spec.rb
646
+ - spec/unit/mutant/reporter/cli/printer/status_spec.rb
647
+ - spec/unit/mutant/reporter/cli/printer/subject_progress_spec.rb
648
+ - spec/unit/mutant/reporter/cli/printer/subject_result_spec.rb
649
+ - spec/unit/mutant/reporter/cli/printer/test_result_spec.rb
650
+ - spec/unit/mutant/reporter/cli/printer_spec.rb
623
651
  - spec/unit/mutant/reporter/cli/tput_spec.rb
624
652
  - spec/unit/mutant/reporter/cli_spec.rb
625
653
  - spec/unit/mutant/reporter/null_spec.rb
@@ -635,5 +663,6 @@ test_files:
635
663
  - spec/unit/mutant/subject/method/singleton_spec.rb
636
664
  - spec/unit/mutant/subject_spec.rb
637
665
  - spec/unit/mutant/warning_filter_spec.rb
666
+ - spec/unit/mutant/zombifier_spec.rb
638
667
  - spec/unit/mutant_spec.rb
639
668
  has_rdoc: