mutant 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
data/Changelog.md
CHANGED
@@ -1,4 +1,10 @@
|
|
1
|
-
# v0.2.
|
1
|
+
# v0.2.2 2012-12-07
|
2
|
+
|
3
|
+
* [feature] Add a shitload of operator expansions for dm2 strategy
|
4
|
+
|
5
|
+
[Compare v0.2.1..v0.2.2](https://github.com/mbj/mutant/compare/v0.2.1...v0.2.2)
|
6
|
+
|
7
|
+
# v0.2.1 2012-12-07
|
2
8
|
|
3
9
|
* [fixed] Crash on unavailable source location
|
4
10
|
* [fixed] Incorrect handling of if and unless statements
|
@@ -56,6 +56,42 @@ module Mutant
|
|
56
56
|
mutation.subject.matcher
|
57
57
|
end
|
58
58
|
|
59
|
+
MAPPING = {
|
60
|
+
:<=> => :spaceship_operator,
|
61
|
+
:=== => :case_equality_operator,
|
62
|
+
:[]= => :element_writer,
|
63
|
+
:[] => :element_reader,
|
64
|
+
:<= => :less_than_or_equal_to_operator,
|
65
|
+
:>= => :greater_than_or_equal_to_operator,
|
66
|
+
:~@ => :unary_match_operator,
|
67
|
+
:+@ => :unary_addition_operator,
|
68
|
+
:-@ => :unary_substraction_operator,
|
69
|
+
:== => :equality_operator,
|
70
|
+
:!~ => :nomatch_operator,
|
71
|
+
:!= => :inequality_operator,
|
72
|
+
:=~ => :match_operator,
|
73
|
+
:<< => :left_shift_operator,
|
74
|
+
:>> => :right_shift_operator,
|
75
|
+
:** => :exponentation_operator,
|
76
|
+
:* => :multiplication_operator,
|
77
|
+
:% => :modulo_operator,
|
78
|
+
:/ => :division_operator,
|
79
|
+
:| => :bitwise_or_operator,
|
80
|
+
:! => :negation_operator,
|
81
|
+
:^ => :bitwise_xor_operator,
|
82
|
+
:& => :bitwise_and_operator,
|
83
|
+
:< => :less_than_operator,
|
84
|
+
:> => :greater_than_operator,
|
85
|
+
:+ => :addition_operator,
|
86
|
+
:- => :substraction_operator
|
87
|
+
}
|
88
|
+
|
89
|
+
EXPANSIONS = {
|
90
|
+
/\?\z/ => '_predicate',
|
91
|
+
/=\z/ => '_writer',
|
92
|
+
/!\z/ => '_bang'
|
93
|
+
}
|
94
|
+
|
59
95
|
# Return spec file
|
60
96
|
#
|
61
97
|
# @return [String]
|
@@ -63,15 +99,34 @@ module Mutant
|
|
63
99
|
# @api private
|
64
100
|
#
|
65
101
|
def spec_file
|
66
|
-
|
67
|
-
gsub(/\A\[\]\z/, 'element_reader').
|
68
|
-
gsub(/\A\[\]=\z/, 'element_writer').
|
69
|
-
gsub(/\?\z/, '_predicate').
|
70
|
-
gsub(/=\z/, '_writer').
|
71
|
-
gsub(/!\z/, '_bang') + '_spec.rb'
|
102
|
+
"#{mapped_name || expanded_name}_spec.rb"
|
72
103
|
end
|
73
104
|
memoize :spec_file
|
74
105
|
|
106
|
+
# Return mapped name
|
107
|
+
#
|
108
|
+
# @return [Symbol]
|
109
|
+
# if name was mapped
|
110
|
+
#
|
111
|
+
# @return [nil]
|
112
|
+
# otherwise
|
113
|
+
#
|
114
|
+
def mapped_name
|
115
|
+
MAPPING[method_name]
|
116
|
+
end
|
117
|
+
|
118
|
+
# Return expanded name
|
119
|
+
#
|
120
|
+
# @return [Symbol]
|
121
|
+
#
|
122
|
+
# @api private
|
123
|
+
#
|
124
|
+
def expanded_name
|
125
|
+
EXPANSIONS.inject(method_name) do |name, (regexp, expansion)|
|
126
|
+
name.to_s.gsub(regexp, expansion)
|
127
|
+
end.to_sym
|
128
|
+
end
|
129
|
+
|
75
130
|
# Return method name
|
76
131
|
#
|
77
132
|
# @return [Symbol]
|
data/mutant.gemspec
CHANGED
@@ -16,15 +16,190 @@ describe Mutant::Strategy::Rspec::ExampleLookup, '#spec_file' do
|
|
16
16
|
it { should be_frozen }
|
17
17
|
end
|
18
18
|
|
19
|
+
context 'negation operator' do
|
20
|
+
let(:method_name) { :! }
|
21
|
+
let(:expected_spec_file) { 'negation_operator_spec.rb' }
|
22
|
+
|
23
|
+
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'with unary match method' do
|
27
|
+
let(:method_name) { :~@ }
|
28
|
+
let(:expected_spec_file) { 'unary_match_operator_spec.rb' }
|
29
|
+
|
30
|
+
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'with unary substraction method' do
|
34
|
+
let(:method_name) { :-@ }
|
35
|
+
let(:expected_spec_file) { 'unary_substraction_operator_spec.rb' }
|
36
|
+
|
37
|
+
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
38
|
+
end
|
39
|
+
|
40
|
+
context 'with unary addition method' do
|
41
|
+
let(:method_name) { :+@ }
|
42
|
+
let(:expected_spec_file) { 'unary_addition_operator_spec.rb' }
|
43
|
+
|
44
|
+
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
45
|
+
end
|
46
|
+
|
47
|
+
context 'with bitwise xor method' do
|
48
|
+
let(:method_name) { :^ }
|
49
|
+
let(:expected_spec_file) { 'bitwise_xor_operator_spec.rb' }
|
50
|
+
|
51
|
+
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
52
|
+
end
|
53
|
+
|
54
|
+
context 'with bitwise or method' do
|
55
|
+
let(:method_name) { :| }
|
56
|
+
let(:expected_spec_file) { 'bitwise_or_operator_spec.rb' }
|
57
|
+
|
58
|
+
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
59
|
+
end
|
60
|
+
|
61
|
+
context 'with bitwise and method' do
|
62
|
+
let(:method_name) { :& }
|
63
|
+
let(:expected_spec_file) { 'bitwise_and_operator_spec.rb' }
|
64
|
+
|
65
|
+
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
66
|
+
end
|
67
|
+
|
68
|
+
context 'with spaceship method' do
|
69
|
+
let(:method_name) { :<=> }
|
70
|
+
let(:expected_spec_file) { 'spaceship_operator_spec.rb' }
|
71
|
+
|
72
|
+
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
73
|
+
end
|
74
|
+
|
75
|
+
context 'with case equality operator method' do
|
76
|
+
let(:method_name) { :=== }
|
77
|
+
let(:expected_spec_file) { 'case_equality_operator_spec.rb' }
|
78
|
+
|
79
|
+
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
80
|
+
end
|
81
|
+
|
82
|
+
context 'with modulo operator method' do
|
83
|
+
let(:method_name) { :% }
|
84
|
+
let(:expected_spec_file) { 'modulo_operator_spec.rb' }
|
85
|
+
|
86
|
+
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
87
|
+
end
|
88
|
+
|
89
|
+
context 'with exponentation operator method' do
|
90
|
+
let(:method_name) { :** }
|
91
|
+
let(:expected_spec_file) { 'exponentation_operator_spec.rb' }
|
92
|
+
|
93
|
+
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
94
|
+
end
|
95
|
+
|
96
|
+
context 'with substraction operator method' do
|
97
|
+
let(:method_name) { :- }
|
98
|
+
let(:expected_spec_file) { 'substraction_operator_spec.rb' }
|
99
|
+
|
100
|
+
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
101
|
+
end
|
102
|
+
|
103
|
+
context 'with addition operator method' do
|
104
|
+
let(:method_name) { :+ }
|
105
|
+
let(:expected_spec_file) { 'addition_operator_spec.rb' }
|
106
|
+
|
107
|
+
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
108
|
+
end
|
109
|
+
|
110
|
+
context 'with greater than or equal to operator method' do
|
111
|
+
let(:method_name) { :>= }
|
112
|
+
let(:expected_spec_file) { 'greater_than_or_equal_to_operator_spec.rb' }
|
113
|
+
|
114
|
+
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
115
|
+
end
|
116
|
+
|
117
|
+
context 'with less than or equal to operator method' do
|
118
|
+
let(:method_name) { :<= }
|
119
|
+
let(:expected_spec_file) { 'less_than_or_equal_to_operator_spec.rb' }
|
120
|
+
|
121
|
+
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
122
|
+
end
|
123
|
+
|
124
|
+
context 'with greater than operator method' do
|
125
|
+
let(:method_name) { :> }
|
126
|
+
let(:expected_spec_file) { 'greater_than_operator_spec.rb' }
|
127
|
+
|
128
|
+
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
129
|
+
end
|
130
|
+
|
131
|
+
context 'with less than operator method' do
|
132
|
+
let(:method_name) { :< }
|
133
|
+
let(:expected_spec_file) { 'less_than_operator_spec.rb' }
|
134
|
+
|
135
|
+
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
136
|
+
end
|
137
|
+
|
138
|
+
context 'with right shift operator method' do
|
139
|
+
let(:method_name) { :>> }
|
140
|
+
let(:expected_spec_file) { 'right_shift_operator_spec.rb' }
|
141
|
+
|
142
|
+
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
143
|
+
end
|
144
|
+
|
145
|
+
context 'with left shift operator method' do
|
146
|
+
let(:method_name) { :<< }
|
147
|
+
let(:expected_spec_file) { 'left_shift_operator_spec.rb' }
|
148
|
+
|
149
|
+
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
150
|
+
end
|
151
|
+
|
152
|
+
context 'with division operator method' do
|
153
|
+
let(:method_name) { :/ }
|
154
|
+
let(:expected_spec_file) { 'division_operator_spec.rb' }
|
155
|
+
|
156
|
+
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
157
|
+
end
|
158
|
+
|
159
|
+
context 'with multiplication operator method' do
|
160
|
+
let(:method_name) { :* }
|
161
|
+
let(:expected_spec_file) { 'multiplication_operator_spec.rb' }
|
162
|
+
|
163
|
+
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
164
|
+
end
|
165
|
+
|
166
|
+
context 'with nomatch operator method' do
|
167
|
+
let(:method_name) { :!~ }
|
168
|
+
let(:expected_spec_file) { 'nomatch_operator_spec.rb' }
|
169
|
+
|
170
|
+
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
171
|
+
end
|
172
|
+
|
173
|
+
context 'with match operator method' do
|
174
|
+
let(:method_name) { :=~ }
|
175
|
+
let(:expected_spec_file) { 'match_operator_spec.rb' }
|
176
|
+
|
177
|
+
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
178
|
+
end
|
179
|
+
|
180
|
+
context 'with inequality operator method' do
|
181
|
+
let(:method_name) { :!= }
|
182
|
+
let(:expected_spec_file) { 'inequality_operator_spec.rb' }
|
183
|
+
|
184
|
+
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
185
|
+
end
|
186
|
+
|
187
|
+
context 'with equality operator method' do
|
188
|
+
let(:method_name) { :== }
|
189
|
+
let(:expected_spec_file) { 'equality_operator_spec.rb' }
|
190
|
+
|
191
|
+
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
192
|
+
end
|
193
|
+
|
19
194
|
context 'with element reader method' do
|
20
|
-
let(:method_name) {
|
195
|
+
let(:method_name) { :[] }
|
21
196
|
let(:expected_spec_file) { 'element_reader_spec.rb' }
|
22
197
|
|
23
198
|
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
24
199
|
end
|
25
200
|
|
26
201
|
context 'with element writer method' do
|
27
|
-
let(:method_name) {
|
202
|
+
let(:method_name) { :[]= }
|
28
203
|
|
29
204
|
let(:expected_spec_file) { 'element_writer_spec.rb' }
|
30
205
|
|
@@ -32,28 +207,28 @@ describe Mutant::Strategy::Rspec::ExampleLookup, '#spec_file' do
|
|
32
207
|
end
|
33
208
|
|
34
209
|
context 'with writer method' do
|
35
|
-
let(:method_name) {
|
210
|
+
let(:method_name) { :foo= }
|
36
211
|
let(:expected_spec_file) { 'foo_writer_spec.rb' }
|
37
212
|
|
38
213
|
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
39
214
|
end
|
40
215
|
|
41
216
|
context 'with bang method' do
|
42
|
-
let(:method_name) {
|
217
|
+
let(:method_name) { :foo! }
|
43
218
|
let(:expected_spec_file) { 'foo_bang_spec.rb' }
|
44
219
|
|
45
220
|
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
46
221
|
end
|
47
222
|
|
48
223
|
context 'with predicate method' do
|
49
|
-
let(:method_name) {
|
224
|
+
let(:method_name) { :foo? }
|
50
225
|
let(:expected_spec_file) { 'foo_predicate_spec.rb' }
|
51
226
|
|
52
227
|
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
53
228
|
end
|
54
229
|
|
55
230
|
context 'with regular method' do
|
56
|
-
let(:method_name) {
|
231
|
+
let(:method_name) { :foo }
|
57
232
|
let(:expected_spec_file) { 'foo_spec.rb' }
|
58
233
|
|
59
234
|
it_should_behave_like 'Mutant::Strategy::Rspec::ExampleLookup#spec_file'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mutant
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-12-
|
12
|
+
date: 2012-12-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: to_source
|