mutant 0.14.2 → 0.15.1
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.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/bin/mutant +0 -7
- data/lib/mutant/ast/named_children.rb +0 -4
- data/lib/mutant/ast/nodes.rb +5 -0
- data/lib/mutant/ast/pattern/lexer.rb +0 -1
- data/lib/mutant/ast/structure.rb +10 -0
- data/lib/mutant/context.rb +2 -6
- data/lib/mutant/env.rb +8 -27
- data/lib/mutant/hooks.rb +2 -6
- data/lib/mutant/integration/null.rb +1 -3
- data/lib/mutant/integration.rb +2 -6
- data/lib/mutant/isolation/fork.rb +0 -2
- data/lib/mutant/matcher/method/instance.rb +2 -2
- data/lib/mutant/matcher/method.rb +0 -1
- data/lib/mutant/meta/example/verification.rb +0 -1
- data/lib/mutant/mutation/operators.rb +141 -44
- data/lib/mutant/mutation.rb +6 -18
- data/lib/mutant/mutator/node/and_asgn.rb +1 -0
- data/lib/mutant/mutator/node/binary.rb +5 -0
- data/lib/mutant/mutator/node/block.rb +10 -0
- data/lib/mutant/mutator/node/case_match.rb +46 -0
- data/lib/mutant/mutator/node/conditional_loop.rb +30 -1
- data/lib/mutant/mutator/node/define.rb +26 -0
- data/lib/mutant/mutator/node/defined.rb +1 -0
- data/lib/mutant/mutator/node/ensure.rb +24 -0
- data/lib/mutant/mutator/node/guard.rb +23 -0
- data/lib/mutant/mutator/node/in_pattern.rb +25 -0
- data/lib/mutant/mutator/node/literal/complex.rb +31 -0
- data/lib/mutant/mutator/node/literal/rational.rb +31 -0
- data/lib/mutant/mutator/node/literal/string.rb +1 -0
- data/lib/mutant/mutator/node/match_alt.rb +26 -0
- data/lib/mutant/mutator/node/match_pattern_p.rb +25 -0
- data/lib/mutant/mutator/node/op_asgn.rb +21 -1
- data/lib/mutant/mutator/node/or_asgn.rb +1 -4
- data/lib/mutant/mutator/node/regopt.rb +4 -6
- data/lib/mutant/mutator/node/rescue.rb +27 -0
- data/lib/mutant/mutator/node/send/binary.rb +45 -0
- data/lib/mutant/mutator/node/send.rb +23 -7
- data/lib/mutant/mutator/node/super.rb +2 -0
- data/lib/mutant/mutator/node/zsuper.rb +17 -0
- data/lib/mutant/mutator/node.rb +3 -9
- data/lib/mutant/mutator.rb +1 -3
- data/lib/mutant/parallel/connection.rb +9 -23
- data/lib/mutant/parallel/driver.rb +1 -5
- data/lib/mutant/parallel/source.rb +2 -1
- data/lib/mutant/parallel/worker.rb +8 -14
- data/lib/mutant/registry.rb +2 -1
- data/lib/mutant/reporter/cli/format.rb +4 -12
- data/lib/mutant/reporter/cli/printer/env_result.rb +9 -0
- data/lib/mutant/reporter/cli/printer.rb +2 -6
- data/lib/mutant/reporter/cli/progress_bar.rb +4 -12
- data/lib/mutant/reporter/cli.rb +6 -23
- data/lib/mutant/reporter/sequence.rb +1 -3
- data/lib/mutant/repository/diff.rb +1 -3
- data/lib/mutant/result.rb +16 -48
- data/lib/mutant/scope.rb +2 -6
- data/lib/mutant/segment.rb +1 -3
- data/lib/mutant/subject/method/instance.rb +3 -9
- data/lib/mutant/subject/method/metaclass.rb +1 -4
- data/lib/mutant/subject/method/singleton.rb +2 -8
- data/lib/mutant/subject/method.rb +3 -9
- data/lib/mutant/subject.rb +6 -18
- data/lib/mutant/timer.rb +2 -6
- data/lib/mutant/transform.rb +11 -33
- data/lib/mutant/usage.rb +6 -18
- data/lib/mutant/variable.rb +2 -6
- data/lib/mutant/version.rb +8 -14
- data/lib/mutant/world.rb +1 -3
- data/lib/mutant/zombifier.rb +3 -1
- data/lib/mutant.rb +8 -0
- metadata +39 -13
data/lib/mutant/transform.rb
CHANGED
|
@@ -7,9 +7,7 @@ module Mutant
|
|
|
7
7
|
# Default slug
|
|
8
8
|
#
|
|
9
9
|
# @return [String]
|
|
10
|
-
def slug
|
|
11
|
-
self.class.to_s
|
|
12
|
-
end
|
|
10
|
+
def slug = self.class.to_s
|
|
13
11
|
|
|
14
12
|
# Apply transformation to input
|
|
15
13
|
#
|
|
@@ -34,24 +32,18 @@ module Mutant
|
|
|
34
32
|
# Compact error message
|
|
35
33
|
#
|
|
36
34
|
# @return [String]
|
|
37
|
-
def compact_message
|
|
38
|
-
COMPACT % { path:, message: trace.last.message }
|
|
39
|
-
end
|
|
35
|
+
def compact_message = COMPACT % { path:, message: trace.last.message }
|
|
40
36
|
memoize :compact_message
|
|
41
37
|
|
|
42
38
|
# Error path trace
|
|
43
39
|
#
|
|
44
40
|
# @return [Array<Error>]
|
|
45
|
-
def trace
|
|
46
|
-
[self, *cause&.trace]
|
|
47
|
-
end
|
|
41
|
+
def trace = [self, *cause&.trace]
|
|
48
42
|
memoize :trace
|
|
49
43
|
|
|
50
44
|
private
|
|
51
45
|
|
|
52
|
-
def path
|
|
53
|
-
trace.map { |error| error.transform.slug }.reject(&:empty?).join('/')
|
|
54
|
-
end
|
|
46
|
+
def path = trace.map { |error| error.transform.slug }.reject(&:empty?).join('/')
|
|
55
47
|
end # Error
|
|
56
48
|
|
|
57
49
|
# Wrapper adding a name to a transformation
|
|
@@ -68,9 +60,7 @@ module Mutant
|
|
|
68
60
|
# Named slug
|
|
69
61
|
#
|
|
70
62
|
# @return [String]
|
|
71
|
-
def slug
|
|
72
|
-
name
|
|
73
|
-
end
|
|
63
|
+
def slug = name
|
|
74
64
|
end # Named
|
|
75
65
|
|
|
76
66
|
class Block < self
|
|
@@ -93,9 +83,7 @@ module Mutant
|
|
|
93
83
|
end
|
|
94
84
|
end
|
|
95
85
|
|
|
96
|
-
def slug
|
|
97
|
-
name
|
|
98
|
-
end
|
|
86
|
+
def slug = name
|
|
99
87
|
end
|
|
100
88
|
|
|
101
89
|
private
|
|
@@ -158,9 +146,7 @@ module Mutant
|
|
|
158
146
|
# Rendering slug
|
|
159
147
|
#
|
|
160
148
|
# @return [Array<String>]
|
|
161
|
-
def slug
|
|
162
|
-
'%<index>d' % { index: }
|
|
163
|
-
end
|
|
149
|
+
def slug = '%<index>d' % { index: }
|
|
164
150
|
memoize :slug
|
|
165
151
|
end # Index
|
|
166
152
|
|
|
@@ -193,9 +179,7 @@ module Mutant
|
|
|
193
179
|
# Rendering slug
|
|
194
180
|
#
|
|
195
181
|
# @return [String]
|
|
196
|
-
def slug
|
|
197
|
-
primitive.to_s
|
|
198
|
-
end
|
|
182
|
+
def slug = primitive.to_s
|
|
199
183
|
memoize :slug
|
|
200
184
|
end # Primitive
|
|
201
185
|
|
|
@@ -298,9 +282,7 @@ module Mutant
|
|
|
298
282
|
# Rendering slug
|
|
299
283
|
#
|
|
300
284
|
# @return [String]
|
|
301
|
-
def slug
|
|
302
|
-
'[%<key>s]' % { key: value.inspect }
|
|
303
|
-
end
|
|
285
|
+
def slug = '[%<key>s]' % { key: value.inspect }
|
|
304
286
|
memoize :slug
|
|
305
287
|
|
|
306
288
|
# Apply transformation to input
|
|
@@ -388,14 +370,10 @@ module Mutant
|
|
|
388
370
|
end
|
|
389
371
|
# rubocop:enable Metrics/MethodLength
|
|
390
372
|
|
|
391
|
-
def allowed_keys
|
|
392
|
-
required_keys + optional.map(&:value)
|
|
393
|
-
end
|
|
373
|
+
def allowed_keys = required_keys + optional.map(&:value)
|
|
394
374
|
memoize :allowed_keys
|
|
395
375
|
|
|
396
|
-
def required_keys
|
|
397
|
-
required.map(&:value)
|
|
398
|
-
end
|
|
376
|
+
def required_keys = required.map(&:value)
|
|
399
377
|
memoize :required_keys
|
|
400
378
|
end # Hash
|
|
401
379
|
|
data/lib/mutant/usage.rb
CHANGED
|
@@ -4,21 +4,13 @@ module Mutant
|
|
|
4
4
|
class Usage
|
|
5
5
|
include Adamantium, Equalizer.new
|
|
6
6
|
|
|
7
|
-
def value
|
|
8
|
-
self.class::VALUE
|
|
9
|
-
end
|
|
7
|
+
def value = self.class::VALUE
|
|
10
8
|
|
|
11
|
-
def verify
|
|
12
|
-
Either::Right.new(nil)
|
|
13
|
-
end
|
|
9
|
+
def verify = Either::Right.new(nil)
|
|
14
10
|
|
|
15
|
-
def message
|
|
16
|
-
self.class::MESSAGE
|
|
17
|
-
end
|
|
11
|
+
def message = self.class::MESSAGE
|
|
18
12
|
|
|
19
|
-
def merge(_other)
|
|
20
|
-
self
|
|
21
|
-
end
|
|
13
|
+
def merge(_other) = self
|
|
22
14
|
|
|
23
15
|
class Commercial < self
|
|
24
16
|
VALUE = 'commercial'
|
|
@@ -81,13 +73,9 @@ module Mutant
|
|
|
81
73
|
License gem is gone entirely.
|
|
82
74
|
MESSAGE
|
|
83
75
|
|
|
84
|
-
def merge(other)
|
|
85
|
-
other
|
|
86
|
-
end
|
|
76
|
+
def merge(other) = other
|
|
87
77
|
|
|
88
|
-
def verify
|
|
89
|
-
Either::Left.new(MESSAGE)
|
|
90
|
-
end
|
|
78
|
+
def verify = Either::Left.new(MESSAGE)
|
|
91
79
|
end
|
|
92
80
|
|
|
93
81
|
def self.parse(value)
|
data/lib/mutant/variable.rb
CHANGED
|
@@ -197,9 +197,7 @@ module Mutant
|
|
|
197
197
|
# Wait till mvar is full
|
|
198
198
|
#
|
|
199
199
|
# @return [undefined]
|
|
200
|
-
def wait_full
|
|
201
|
-
wait(@full, &method(:full?))
|
|
202
|
-
end
|
|
200
|
+
def wait_full = wait(@full, &method(:full?))
|
|
203
201
|
|
|
204
202
|
# Test if state is full
|
|
205
203
|
#
|
|
@@ -262,9 +260,7 @@ module Mutant
|
|
|
262
260
|
# Perform take operation
|
|
263
261
|
#
|
|
264
262
|
# @return [Object]
|
|
265
|
-
def perform_take
|
|
266
|
-
@value
|
|
267
|
-
end
|
|
263
|
+
def perform_take = @value
|
|
268
264
|
end # IVar
|
|
269
265
|
|
|
270
266
|
# Shared variable that can be written multiple times
|
data/lib/mutant/version.rb
CHANGED
|
@@ -4,19 +4,13 @@ require 'pathname'
|
|
|
4
4
|
|
|
5
5
|
module Mutant
|
|
6
6
|
# Current mutant version
|
|
7
|
-
#
|
|
8
|
-
# See RUST.md for documentation on version loading behavior.
|
|
9
7
|
VERSION =
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
.read
|
|
19
|
-
.chomp
|
|
20
|
-
.freeze
|
|
21
|
-
end
|
|
8
|
+
Pathname
|
|
9
|
+
.new(__dir__)
|
|
10
|
+
.parent
|
|
11
|
+
.parent
|
|
12
|
+
.join('VERSION')
|
|
13
|
+
.read
|
|
14
|
+
.chomp
|
|
15
|
+
.freeze
|
|
22
16
|
end # Mutant
|
data/lib/mutant/world.rb
CHANGED
data/lib/mutant/zombifier.rb
CHANGED
data/lib/mutant.rb
CHANGED
|
@@ -117,6 +117,7 @@ module Mutant
|
|
|
117
117
|
require 'mutant/mutator/util/symbol'
|
|
118
118
|
require 'mutant/mutator/node'
|
|
119
119
|
require 'mutant/mutator/node/generic'
|
|
120
|
+
require 'mutant/mutator/node/guard'
|
|
120
121
|
require 'mutant/mutator/node/literal'
|
|
121
122
|
require 'mutant/mutator/node/literal/boolean'
|
|
122
123
|
require 'mutant/mutator/node/literal/range'
|
|
@@ -124,6 +125,8 @@ module Mutant
|
|
|
124
125
|
require 'mutant/mutator/node/literal/string'
|
|
125
126
|
require 'mutant/mutator/node/literal/integer'
|
|
126
127
|
require 'mutant/mutator/node/literal/float'
|
|
128
|
+
require 'mutant/mutator/node/literal/rational'
|
|
129
|
+
require 'mutant/mutator/node/literal/complex'
|
|
127
130
|
require 'mutant/mutator/node/literal/array'
|
|
128
131
|
require 'mutant/mutator/node/literal/hash'
|
|
129
132
|
require 'mutant/mutator/node/literal/regex'
|
|
@@ -166,10 +169,15 @@ module Mutant
|
|
|
166
169
|
require 'mutant/mutator/node/block_pass'
|
|
167
170
|
require 'mutant/mutator/node/if'
|
|
168
171
|
require 'mutant/mutator/node/case'
|
|
172
|
+
require 'mutant/mutator/node/case_match'
|
|
169
173
|
require 'mutant/mutator/node/splat'
|
|
170
174
|
require 'mutant/mutator/node/regopt'
|
|
175
|
+
require 'mutant/mutator/node/in_pattern'
|
|
176
|
+
require 'mutant/mutator/node/match_alt'
|
|
177
|
+
require 'mutant/mutator/node/match_pattern_p'
|
|
171
178
|
require 'mutant/mutator/node/resbody'
|
|
172
179
|
require 'mutant/mutator/node/rescue'
|
|
180
|
+
require 'mutant/mutator/node/ensure'
|
|
173
181
|
require 'mutant/mutator/node/match_current_line'
|
|
174
182
|
require 'mutant/mutator/node/index'
|
|
175
183
|
require 'mutant/mutator/node/procarg_zero'
|
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.
|
|
4
|
+
version: 0.15.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Markus Schirp
|
|
@@ -13,16 +13,22 @@ dependencies:
|
|
|
13
13
|
name: diff-lcs
|
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
|
15
15
|
requirements:
|
|
16
|
-
- - "
|
|
16
|
+
- - ">="
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '1.6'
|
|
19
|
+
- - "<"
|
|
17
20
|
- !ruby/object:Gem::Version
|
|
18
|
-
version: '
|
|
21
|
+
version: '3'
|
|
19
22
|
type: :runtime
|
|
20
23
|
prerelease: false
|
|
21
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
22
25
|
requirements:
|
|
23
|
-
- - "
|
|
26
|
+
- - ">="
|
|
24
27
|
- !ruby/object:Gem::Version
|
|
25
|
-
version: '1.
|
|
28
|
+
version: '1.6'
|
|
29
|
+
- - "<"
|
|
30
|
+
- !ruby/object:Gem::Version
|
|
31
|
+
version: '3'
|
|
26
32
|
- !ruby/object:Gem::Dependency
|
|
27
33
|
name: irb
|
|
28
34
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -43,14 +49,14 @@ dependencies:
|
|
|
43
49
|
requirements:
|
|
44
50
|
- - "~>"
|
|
45
51
|
- !ruby/object:Gem::Version
|
|
46
|
-
version: 3.3.
|
|
52
|
+
version: 3.3.10
|
|
47
53
|
type: :runtime
|
|
48
54
|
prerelease: false
|
|
49
55
|
version_requirements: !ruby/object:Gem::Requirement
|
|
50
56
|
requirements:
|
|
51
57
|
- - "~>"
|
|
52
58
|
- !ruby/object:Gem::Version
|
|
53
|
-
version: 3.3.
|
|
59
|
+
version: 3.3.10
|
|
54
60
|
- !ruby/object:Gem::Dependency
|
|
55
61
|
name: regexp_parser
|
|
56
62
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -85,42 +91,54 @@ dependencies:
|
|
|
85
91
|
requirements:
|
|
86
92
|
- - "~>"
|
|
87
93
|
- !ruby/object:Gem::Version
|
|
88
|
-
version: 0.8.
|
|
94
|
+
version: 0.8.2
|
|
89
95
|
type: :runtime
|
|
90
96
|
prerelease: false
|
|
91
97
|
version_requirements: !ruby/object:Gem::Requirement
|
|
92
98
|
requirements:
|
|
93
99
|
- - "~>"
|
|
94
100
|
- !ruby/object:Gem::Version
|
|
95
|
-
version: 0.8.
|
|
101
|
+
version: 0.8.2
|
|
96
102
|
- !ruby/object:Gem::Dependency
|
|
97
103
|
name: rspec
|
|
98
104
|
requirement: !ruby/object:Gem::Requirement
|
|
99
105
|
requirements:
|
|
100
|
-
- - "
|
|
106
|
+
- - ">="
|
|
101
107
|
- !ruby/object:Gem::Version
|
|
102
108
|
version: '3.10'
|
|
109
|
+
- - "<"
|
|
110
|
+
- !ruby/object:Gem::Version
|
|
111
|
+
version: '5'
|
|
103
112
|
type: :development
|
|
104
113
|
prerelease: false
|
|
105
114
|
version_requirements: !ruby/object:Gem::Requirement
|
|
106
115
|
requirements:
|
|
107
|
-
- - "
|
|
116
|
+
- - ">="
|
|
108
117
|
- !ruby/object:Gem::Version
|
|
109
118
|
version: '3.10'
|
|
119
|
+
- - "<"
|
|
120
|
+
- !ruby/object:Gem::Version
|
|
121
|
+
version: '5'
|
|
110
122
|
- !ruby/object:Gem::Dependency
|
|
111
123
|
name: rspec-core
|
|
112
124
|
requirement: !ruby/object:Gem::Requirement
|
|
113
125
|
requirements:
|
|
114
|
-
- - "
|
|
126
|
+
- - ">="
|
|
115
127
|
- !ruby/object:Gem::Version
|
|
116
128
|
version: '3.10'
|
|
129
|
+
- - "<"
|
|
130
|
+
- !ruby/object:Gem::Version
|
|
131
|
+
version: '5'
|
|
117
132
|
type: :development
|
|
118
133
|
prerelease: false
|
|
119
134
|
version_requirements: !ruby/object:Gem::Requirement
|
|
120
135
|
requirements:
|
|
121
|
-
- - "
|
|
136
|
+
- - ">="
|
|
122
137
|
- !ruby/object:Gem::Version
|
|
123
138
|
version: '3.10'
|
|
139
|
+
- - "<"
|
|
140
|
+
- !ruby/object:Gem::Version
|
|
141
|
+
version: '5'
|
|
124
142
|
- !ruby/object:Gem::Dependency
|
|
125
143
|
name: rspec-its
|
|
126
144
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -247,6 +265,7 @@ files:
|
|
|
247
265
|
- lib/mutant/mutator/node/block_pass.rb
|
|
248
266
|
- lib/mutant/mutator/node/break.rb
|
|
249
267
|
- lib/mutant/mutator/node/case.rb
|
|
268
|
+
- lib/mutant/mutator/node/case_match.rb
|
|
250
269
|
- lib/mutant/mutator/node/class.rb
|
|
251
270
|
- lib/mutant/mutator/node/conditional_loop.rb
|
|
252
271
|
- lib/mutant/mutator/node/const.rb
|
|
@@ -254,24 +273,31 @@ files:
|
|
|
254
273
|
- lib/mutant/mutator/node/define.rb
|
|
255
274
|
- lib/mutant/mutator/node/defined.rb
|
|
256
275
|
- lib/mutant/mutator/node/dynamic_literal.rb
|
|
276
|
+
- lib/mutant/mutator/node/ensure.rb
|
|
257
277
|
- lib/mutant/mutator/node/generic.rb
|
|
278
|
+
- lib/mutant/mutator/node/guard.rb
|
|
258
279
|
- lib/mutant/mutator/node/if.rb
|
|
280
|
+
- lib/mutant/mutator/node/in_pattern.rb
|
|
259
281
|
- lib/mutant/mutator/node/index.rb
|
|
260
282
|
- lib/mutant/mutator/node/kwargs.rb
|
|
261
283
|
- lib/mutant/mutator/node/kwbegin.rb
|
|
262
284
|
- lib/mutant/mutator/node/literal.rb
|
|
263
285
|
- lib/mutant/mutator/node/literal/array.rb
|
|
264
286
|
- lib/mutant/mutator/node/literal/boolean.rb
|
|
287
|
+
- lib/mutant/mutator/node/literal/complex.rb
|
|
265
288
|
- lib/mutant/mutator/node/literal/float.rb
|
|
266
289
|
- lib/mutant/mutator/node/literal/hash.rb
|
|
267
290
|
- lib/mutant/mutator/node/literal/integer.rb
|
|
268
291
|
- lib/mutant/mutator/node/literal/nil.rb
|
|
269
292
|
- lib/mutant/mutator/node/literal/range.rb
|
|
293
|
+
- lib/mutant/mutator/node/literal/rational.rb
|
|
270
294
|
- lib/mutant/mutator/node/literal/regex.rb
|
|
271
295
|
- lib/mutant/mutator/node/literal/string.rb
|
|
272
296
|
- lib/mutant/mutator/node/literal/symbol.rb
|
|
273
297
|
- lib/mutant/mutator/node/masgn.rb
|
|
298
|
+
- lib/mutant/mutator/node/match_alt.rb
|
|
274
299
|
- lib/mutant/mutator/node/match_current_line.rb
|
|
300
|
+
- lib/mutant/mutator/node/match_pattern_p.rb
|
|
275
301
|
- lib/mutant/mutator/node/mlhs.rb
|
|
276
302
|
- lib/mutant/mutator/node/module.rb
|
|
277
303
|
- lib/mutant/mutator/node/named_value/access.rb
|