mutant 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. data/.gitignore +5 -0
  2. data/.rvmrc +1 -1
  3. data/.travis.yml +6 -0
  4. data/Readme.md +13 -0
  5. data/exe/mutate +6 -0
  6. data/lib/mutant.rb +21 -0
  7. data/lib/mutant/extensions.rb +8 -0
  8. data/lib/mutant/formatter.rb +19 -0
  9. data/lib/mutant/implementation.rb +70 -0
  10. data/lib/mutant/literal.rb +134 -0
  11. data/lib/mutant/method.rb +31 -0
  12. data/lib/mutant/mutatee.rb +61 -0
  13. data/lib/mutant/mutation.rb +24 -0
  14. data/lib/mutant/mutator.rb +49 -0
  15. data/lib/mutant/node.rb +26 -0
  16. data/lib/mutant/random.rb +37 -0
  17. data/lib/mutant/reporter.rb +38 -0
  18. data/lib/mutant/runners/rspec.rb +26 -4
  19. data/lib/mutant/version.rb +1 -1
  20. data/mutant.gemspec +5 -3
  21. data/spec/functional/class_spec.rb +46 -0
  22. data/spec/functional/instance_method/array_spec.rb +53 -0
  23. data/spec/functional/instance_method/boolean_spec.rb +101 -0
  24. data/spec/functional/instance_method/call_spec.rb +161 -0
  25. data/spec/functional/instance_method/fixnum_spec.rb +53 -0
  26. data/spec/functional/instance_method/float_spec.rb +53 -0
  27. data/spec/functional/instance_method/hash_spec.rb +53 -0
  28. data/spec/functional/instance_method/if_spec.rb +57 -0
  29. data/spec/functional/instance_method/range_spec.rb +53 -0
  30. data/spec/functional/instance_method/regex_spec.rb +55 -0
  31. data/spec/functional/instance_method/string_spec.rb +53 -0
  32. data/spec/functional/instance_method/symbol_spec.rb +53 -0
  33. data/spec/functional/reporter/method_loaded_spec.rb +62 -0
  34. data/spec/functional/reporter/running_mutations_spec.rb +60 -0
  35. data/spec/functional/runners/rspec_spec.rb +26 -0
  36. data/spec/functional/singleton_method/array_spec.rb +53 -0
  37. data/spec/functional/singleton_method/boolean_spec.rb +101 -0
  38. data/spec/functional/singleton_method/call_spec.rb +161 -0
  39. data/spec/functional/singleton_method/fixnum_spec.rb +53 -0
  40. data/spec/functional/singleton_method/float_spec.rb +53 -0
  41. data/spec/functional/singleton_method/hash_spec.rb +53 -0
  42. data/spec/functional/singleton_method/if_spec.rb +57 -0
  43. data/spec/functional/singleton_method/range_spec.rb +53 -0
  44. data/spec/functional/singleton_method/regex_spec.rb +55 -0
  45. data/spec/functional/singleton_method/string_spec.rb +53 -0
  46. data/spec/functional/singleton_method/symbol_spec.rb +53 -0
  47. data/spec/mutant/extensions_spec.rb +13 -0
  48. data/spec/mutant/implementation_spec.rb +223 -0
  49. data/spec/mutant/literal_spec.rb +129 -0
  50. data/spec/mutant/mutatee_spec.rb +28 -0
  51. data/spec/mutant/node_spec.rb +41 -0
  52. data/spec/mutant/random_spec.rb +33 -0
  53. data/spec/mutant/reporter_spec.rb +17 -0
  54. data/spec/mutant_spec.rb +28 -0
  55. data/spec/spec_helper.rb +11 -3
  56. data/spec/support/example_group_helpers.rb +11 -0
  57. data/spec/support/example_helpers.rb +5 -0
  58. metadata +149 -81
  59. data/spec/functional/boolean_spec.rb +0 -49
@@ -0,0 +1,129 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mutant::Literal do
4
+ describe '.literal_class' do
5
+ context 'given an instance of Rubinius::AST::TrueLiteral' do
6
+ let(:true_literal) { Rubinius::AST::TrueLiteral.new(1) }
7
+
8
+ it 'returns the Mutant::Rbx::Literal::TrueLiteral class' do
9
+ Mutant::Literal.literal_class(true_literal).should eq(
10
+ Mutant::Literal::TrueLiteral
11
+ )
12
+ end
13
+ end
14
+ end
15
+
16
+ describe '#swap' do
17
+ context 'initialized with an instance of Rubinius::AST::TrueLiteral' do
18
+ let(:true_literal) { Rubinius::AST::TrueLiteral.new(1) }
19
+
20
+ it 'calls Mutant::Rbx::Literal::TrueLiteral#swap' do
21
+ Mutant::Literal::TrueLiteral.should_receive(:new).with(true_literal) {
22
+ double(Mutant::Literal::TrueLiteral, :swap => true)
23
+ }
24
+ Mutant::Literal.new(true_literal).swap
25
+ end
26
+ end
27
+ end
28
+
29
+ describe Mutant::Literal::FalseLiteral do
30
+ describe '#swap' do
31
+ let(:node) { double('node', :line => 1) }
32
+
33
+ it 'returns an instance of Rubinius::AST::TrueLiteral' do
34
+ Mutant::Literal::FalseLiteral.new(node).swap.should be_an_instance_of(
35
+ Rubinius::AST::TrueLiteral
36
+ )
37
+ end
38
+ end
39
+ end
40
+
41
+ describe Mutant::Literal::TrueLiteral do
42
+ describe '#swap' do
43
+ let(:node) { double('node', :line => 1) }
44
+
45
+ it 'returns an instance of Rubinius::AST::FalseLiteral' do
46
+ Mutant::Literal::TrueLiteral.new(node).swap.should be_an_instance_of(
47
+ Rubinius::AST::FalseLiteral
48
+ )
49
+ end
50
+ end
51
+ end
52
+
53
+ describe Mutant::Literal::SymbolLiteral do
54
+ describe '#swap' do
55
+ let(:node) { double('node') }
56
+
57
+ it "sets the node's value to a random symbol" do
58
+ node.should_receive(:value=).with(instance_of(Symbol))
59
+ Mutant::Literal::SymbolLiteral.new(node).swap.should eq(node)
60
+ end
61
+ end
62
+ end
63
+
64
+ describe Mutant::Literal::StringLiteral do
65
+ describe '#swap' do
66
+ let(:node) { double('node') }
67
+
68
+ it "sets the node's string to a random string" do
69
+ node.should_receive(:string=).with(instance_of(String))
70
+ Mutant::Literal::StringLiteral.new(node).swap.should eq(node)
71
+ end
72
+ end
73
+ end
74
+
75
+ describe Mutant::Literal::FixnumLiteral do
76
+ describe '#swap' do
77
+ let(:node) { double('node') }
78
+
79
+ it "sets the node's value to a random fixnum" do
80
+ node.should_receive(:value=).with(instance_of(Fixnum))
81
+ Mutant::Literal::FixnumLiteral.new(node).swap.should eq(node)
82
+ end
83
+ end
84
+ end
85
+
86
+ describe Mutant::Literal::FloatLiteral do
87
+ describe '#swap' do
88
+ let(:node) { double('node') }
89
+
90
+ it "sets the node's value to a random float" do
91
+ node.should_receive(:value=).with(instance_of(Float))
92
+ Mutant::Literal::FloatLiteral.new(node).swap.should eq(node)
93
+ end
94
+ end
95
+ end
96
+
97
+ describe Mutant::Literal::Range do
98
+ describe '#swap' do
99
+ let(:node) { double('node', :line => 1) }
100
+
101
+ it "sets the node's start and finish to an instance of Rubinius::AST::FixnumLiteral" do
102
+ node.should_receive(:start=).with(
103
+ instance_of(Rubinius::AST::FixnumLiteral)
104
+ )
105
+ node.should_receive(:finish=).with(
106
+ instance_of(Rubinius::AST::FixnumLiteral)
107
+ )
108
+ Mutant::Literal::Range.new(node).swap.should eq(node)
109
+ end
110
+ end
111
+ end
112
+
113
+ describe Mutant::Literal::LocalVariableAssignment do
114
+ describe '#swap' do
115
+ context "with the node's value set to an instance of Rubinius::AST::TrueLiteral" do
116
+ let(:node) do
117
+ double('node', :value => Rubinius::AST::TrueLiteral.new(1))
118
+ end
119
+
120
+ it "sets the node's value to an instance of Rubinius::AST::FalseLiteral" do
121
+ node.should_receive(:value=).with(
122
+ instance_of(Rubinius::AST::FalseLiteral)
123
+ )
124
+ Mutant::Literal::LocalVariableAssignment.new(node).swap.should eq(node)
125
+ end
126
+ end
127
+ end
128
+ end
129
+ end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mutant::Mutatee do
4
+ describe '#rbx_method' do
5
+ setup_thing do
6
+ def self.bar; end
7
+ def bar; end
8
+ end
9
+
10
+ context 'given an implementation for a singleton method' do
11
+ let(:implementation) { Mutant::Implementation.new('Thing.bar') }
12
+ let(:mutatee) { Mutant::Mutatee.new(implementation) }
13
+
14
+ it 'returns a SingletonMethod' do
15
+ mutatee.rbx_method.should be_an_instance_of(Mutant::SingletonMethod)
16
+ end
17
+ end
18
+
19
+ context 'given an implementation for an instance method' do
20
+ let(:implementation) { Mutant::Implementation.new('Thing#bar') }
21
+ let(:mutatee) { Mutant::Mutatee.new(implementation) }
22
+
23
+ it 'returns an InstanceMethod' do
24
+ mutatee.rbx_method.should be_an_instance_of(Mutant::InstanceMethod)
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mutant::Node do
4
+ let(:item) { double('item', :line => 1) }
5
+ let(:node) { Mutant::Node.new(item) }
6
+
7
+ describe '#line' do
8
+ it "returns the item's line" do
9
+ Mutant::Node.new(item).line.should eq 1
10
+ end
11
+ end
12
+
13
+ describe '#from' do
14
+ it "returns a Formatter instance with its item set to the node's item" do
15
+ formatter = node.from
16
+ formatter.should be_an_instance_of(Mutant::Formatter)
17
+ formatter.item.should eq(item)
18
+ end
19
+ end
20
+
21
+ describe '#to' do
22
+ it "returns a Formatter instance with its item set to the node's copy" do
23
+ formatter = node.to
24
+ formatter.should be_an_instance_of(Mutant::Formatter)
25
+ formatter.item.should eq(node.copy)
26
+ end
27
+ end
28
+
29
+ describe '#swap' do
30
+ let(:swap) { double('swap') }
31
+ let(:literal) { double('literal', :swap => swap) }
32
+
33
+ before do
34
+ Mutant::Literal.should_receive(:new).with(node.copy).and_return(literal)
35
+ end
36
+
37
+ it "sets the node's copy to a different Literal" do
38
+ expect { node.swap }.to change { node.copy }.to swap
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mutant::Random do
4
+ describe '.string' do
5
+ it 'returns a random string' do
6
+ Mutant::Random.string.should be_a(String)
7
+ end
8
+ end
9
+
10
+ describe '.symbol' do
11
+ it 'returns a random symbol' do
12
+ Mutant::Random.symbol.should be_a(Symbol)
13
+ end
14
+ end
15
+
16
+ describe '.fixnum' do
17
+ it 'returns a random fixnum' do
18
+ Mutant::Random.fixnum.should be_a(Fixnum)
19
+ end
20
+ end
21
+
22
+ describe '.float' do
23
+ it 'returns a random float' do
24
+ Mutant::Random.float.should be_a(Float)
25
+ end
26
+ end
27
+
28
+ describe '.range' do
29
+ it 'returns a random range' do
30
+ Mutant::Random.range.should be_a(Range)
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mutant::Reporter do
4
+ describe '.pluralize' do
5
+ context 'given "mutant" with a count of 1' do
6
+ it 'returns "mutant"' do
7
+ Mutant::Reporter.pluralize(1, 'mutant').should eq('mutant')
8
+ end
9
+ end
10
+
11
+ context 'given "mutant" with a count of 0' do
12
+ it 'returns "mutants"' do
13
+ Mutant::Reporter.pluralize(0, 'mutant').should eq('mutants')
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mutant do
4
+ describe '.run' do
5
+ it 'runs the RSpec runner with the given arguments' do
6
+ Mutant::Runners::RSpec.should_receive(:run).with(:foo)
7
+ Mutant.run(:foo)
8
+ end
9
+ end
10
+
11
+ describe '.mutate' do
12
+ context 'given an implementation' do
13
+ let(:mutatee) { double('mutatee') }
14
+ let(:implementation) { double('implementation') }
15
+ let(:mutator) { double('mutator') }
16
+
17
+ before do
18
+ mutator.should_receive(:mutate)
19
+ implementation.should_receive(:mutatees).and_return([mutatee])
20
+ end
21
+
22
+ it "mutates each of the implementation's mutatees" do
23
+ Mutant::Mutator.should_receive(:new).with(mutatee).and_return(mutator)
24
+ Mutant.mutate(implementation)
25
+ end
26
+ end
27
+ end
28
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,10 +1,18 @@
1
1
  require 'mutant'
2
2
  require 'aruba/api'
3
3
 
4
+ Dir['./spec/support/*.rb'].map {|f| require f }
5
+
4
6
  RSpec.configure do |config|
5
7
  config.treat_symbols_as_metadata_keys_with_true_values = true
6
8
  config.filter_run :focus
7
- config.include Aruba::Api, :example_group => {
8
- :file_path => /spec\/functional/
9
- }
9
+ config.run_all_when_everything_filtered = true
10
+ config.extend ExampleGroupHelpers
11
+ config.include ExampleHelpers
12
+
13
+ {:example_group => {:file_path => /spec\/functional/}}.tap do |options|
14
+ config.include Aruba::Api, options
15
+ config.before(:suite, options) { @aruba_timeout_seconds = 5 }
16
+ config.after(:each, options) { FileUtils.remove_dir('tmp/aruba') }
17
+ end
10
18
  end
@@ -0,0 +1,11 @@
1
+ module ExampleGroupHelpers
2
+ def setup_thing(&block)
3
+ before do
4
+ Object.const_set(:Thing, Class.new(&block))
5
+ end
6
+
7
+ after do
8
+ Object.send(:remove_const, :Thing) if Object.const_defined?(:Thing)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ module ExampleHelpers
2
+ def mutate(cmd, fail_on_error = true)
3
+ run_simple "../../exe/mutate #{cmd}", fail_on_error
4
+ end
5
+ end
metadata CHANGED
@@ -1,121 +1,189 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: mutant
3
- version: !ruby/object:Gem::Version
4
- hash: 856480538658449761
3
+ version: !ruby/object:Gem::Version
5
4
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 1
10
- version: 0.0.1
5
+ version: 0.1.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Justin Ko
9
+ - Josep M. Bach
14
10
  autorequire:
15
- bindir: bin
11
+ bindir: exe
16
12
  cert_chain: []
17
-
18
- date: 2011-10-31 00:00:00 -06:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- type: :development
23
- version_requirements: &id001 !ruby/object:Gem::Requirement
13
+ date: 2012-02-26 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ version_requirements: &7328 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 2002549777813010636
29
- segments:
30
- - 0
31
- version: "0"
32
- name: rake
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
33
22
  prerelease: false
34
- requirement: *id001
35
- - !ruby/object:Gem::Dependency
23
+ requirement: *7328
24
+ name: to_source
25
+ type: :runtime
26
+ - !ruby/object:Gem::Dependency
27
+ version_requirements: &7392 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ prerelease: false
34
+ requirement: *7392
35
+ name: rake
36
36
  type: :development
37
- version_requirements: &id002 !ruby/object:Gem::Requirement
37
+ - !ruby/object:Gem::Dependency
38
+ version_requirements: &7436 !ruby/object:Gem::Requirement
38
39
  none: false
39
- requirements:
40
+ requirements:
40
41
  - - ~>
41
- - !ruby/object:Gem::Version
42
- hash: 3833757605560877050
43
- segments:
44
- - 2
45
- - 7
46
- version: "2.7"
47
- name: rspec
42
+ - !ruby/object:Gem::Version
43
+ version: '2.7'
48
44
  prerelease: false
49
- requirement: *id002
50
- - !ruby/object:Gem::Dependency
45
+ requirement: *7436
46
+ name: rspec
51
47
  type: :development
52
- version_requirements: &id003 !ruby/object:Gem::Requirement
48
+ - !ruby/object:Gem::Dependency
49
+ version_requirements: &7480 !ruby/object:Gem::Requirement
53
50
  none: false
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- hash: 2002549777813010636
58
- segments:
59
- - 0
60
- version: "0"
61
- name: aruba
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
62
55
  prerelease: false
63
- requirement: *id003
56
+ requirement: *7480
57
+ name: aruba
58
+ type: :development
64
59
  description: Mutation tester
65
- email:
66
- - jko170@gmail.com
67
- executables: []
68
-
60
+ email:
61
+ - justin@kospecinc.com
62
+ - josep.m.bach@gmail.com
63
+ executables:
64
+ - mutate
69
65
  extensions: []
70
-
71
66
  extra_rdoc_files: []
72
-
73
- files:
67
+ files:
74
68
  - .gitignore
75
69
  - .rspec
76
70
  - .rvmrc
71
+ - .travis.yml
77
72
  - Gemfile
78
73
  - Rakefile
74
+ - Readme.md
75
+ - exe/mutate
79
76
  - lib/mutant.rb
77
+ - lib/mutant/extensions.rb
78
+ - lib/mutant/formatter.rb
79
+ - lib/mutant/implementation.rb
80
+ - lib/mutant/literal.rb
81
+ - lib/mutant/method.rb
82
+ - lib/mutant/mutatee.rb
83
+ - lib/mutant/mutation.rb
84
+ - lib/mutant/mutator.rb
85
+ - lib/mutant/node.rb
86
+ - lib/mutant/random.rb
87
+ - lib/mutant/reporter.rb
80
88
  - lib/mutant/runners/rspec.rb
81
89
  - lib/mutant/version.rb
82
90
  - mutant.gemspec
83
- - spec/functional/boolean_spec.rb
91
+ - spec/functional/class_spec.rb
92
+ - spec/functional/instance_method/array_spec.rb
93
+ - spec/functional/instance_method/boolean_spec.rb
94
+ - spec/functional/instance_method/call_spec.rb
95
+ - spec/functional/instance_method/fixnum_spec.rb
96
+ - spec/functional/instance_method/float_spec.rb
97
+ - spec/functional/instance_method/hash_spec.rb
98
+ - spec/functional/instance_method/if_spec.rb
99
+ - spec/functional/instance_method/range_spec.rb
100
+ - spec/functional/instance_method/regex_spec.rb
101
+ - spec/functional/instance_method/string_spec.rb
102
+ - spec/functional/instance_method/symbol_spec.rb
103
+ - spec/functional/reporter/method_loaded_spec.rb
104
+ - spec/functional/reporter/running_mutations_spec.rb
105
+ - spec/functional/runners/rspec_spec.rb
106
+ - spec/functional/singleton_method/array_spec.rb
107
+ - spec/functional/singleton_method/boolean_spec.rb
108
+ - spec/functional/singleton_method/call_spec.rb
109
+ - spec/functional/singleton_method/fixnum_spec.rb
110
+ - spec/functional/singleton_method/float_spec.rb
111
+ - spec/functional/singleton_method/hash_spec.rb
112
+ - spec/functional/singleton_method/if_spec.rb
113
+ - spec/functional/singleton_method/range_spec.rb
114
+ - spec/functional/singleton_method/regex_spec.rb
115
+ - spec/functional/singleton_method/string_spec.rb
116
+ - spec/functional/singleton_method/symbol_spec.rb
117
+ - spec/mutant/extensions_spec.rb
118
+ - spec/mutant/implementation_spec.rb
119
+ - spec/mutant/literal_spec.rb
120
+ - spec/mutant/mutatee_spec.rb
121
+ - spec/mutant/node_spec.rb
122
+ - spec/mutant/random_spec.rb
123
+ - spec/mutant/reporter_spec.rb
124
+ - spec/mutant_spec.rb
84
125
  - spec/spec_helper.rb
85
- has_rdoc: true
86
- homepage: ""
126
+ - spec/support/example_group_helpers.rb
127
+ - spec/support/example_helpers.rb
128
+ homepage: ''
87
129
  licenses: []
88
-
89
130
  post_install_message:
90
131
  rdoc_options: []
91
-
92
- require_paths:
132
+ require_paths:
93
133
  - lib
94
- required_ruby_version: !ruby/object:Gem::Requirement
134
+ required_ruby_version: !ruby/object:Gem::Requirement
95
135
  none: false
96
- requirements:
97
- - - ">="
98
- - !ruby/object:Gem::Version
99
- hash: 2002549777813010636
100
- segments:
101
- - 0
102
- version: "0"
103
- required_rubygems_version: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ! '>='
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ required_rubygems_version: !ruby/object:Gem::Requirement
104
141
  none: false
105
- requirements:
106
- - - ">="
107
- - !ruby/object:Gem::Version
108
- hash: 2002549777813010636
109
- segments:
110
- - 0
111
- version: "0"
142
+ requirements:
143
+ - - ! '>='
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
112
146
  requirements: []
113
-
114
147
  rubyforge_project: mutant
115
- rubygems_version: 1.5.2
148
+ rubygems_version: 1.8.12
116
149
  signing_key:
117
150
  specification_version: 3
118
151
  summary: Mutation tester
119
- test_files:
120
- - spec/functional/boolean_spec.rb
152
+ test_files:
153
+ - spec/functional/class_spec.rb
154
+ - spec/functional/instance_method/array_spec.rb
155
+ - spec/functional/instance_method/boolean_spec.rb
156
+ - spec/functional/instance_method/call_spec.rb
157
+ - spec/functional/instance_method/fixnum_spec.rb
158
+ - spec/functional/instance_method/float_spec.rb
159
+ - spec/functional/instance_method/hash_spec.rb
160
+ - spec/functional/instance_method/if_spec.rb
161
+ - spec/functional/instance_method/range_spec.rb
162
+ - spec/functional/instance_method/regex_spec.rb
163
+ - spec/functional/instance_method/string_spec.rb
164
+ - spec/functional/instance_method/symbol_spec.rb
165
+ - spec/functional/reporter/method_loaded_spec.rb
166
+ - spec/functional/reporter/running_mutations_spec.rb
167
+ - spec/functional/runners/rspec_spec.rb
168
+ - spec/functional/singleton_method/array_spec.rb
169
+ - spec/functional/singleton_method/boolean_spec.rb
170
+ - spec/functional/singleton_method/call_spec.rb
171
+ - spec/functional/singleton_method/fixnum_spec.rb
172
+ - spec/functional/singleton_method/float_spec.rb
173
+ - spec/functional/singleton_method/hash_spec.rb
174
+ - spec/functional/singleton_method/if_spec.rb
175
+ - spec/functional/singleton_method/range_spec.rb
176
+ - spec/functional/singleton_method/regex_spec.rb
177
+ - spec/functional/singleton_method/string_spec.rb
178
+ - spec/functional/singleton_method/symbol_spec.rb
179
+ - spec/mutant/extensions_spec.rb
180
+ - spec/mutant/implementation_spec.rb
181
+ - spec/mutant/literal_spec.rb
182
+ - spec/mutant/mutatee_spec.rb
183
+ - spec/mutant/node_spec.rb
184
+ - spec/mutant/random_spec.rb
185
+ - spec/mutant/reporter_spec.rb
186
+ - spec/mutant_spec.rb
121
187
  - spec/spec_helper.rb
188
+ - spec/support/example_group_helpers.rb
189
+ - spec/support/example_helpers.rb