mutant 0.10.21 → 0.10.26
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/lib/mutant.rb +32 -13
- data/lib/mutant/ast/find_metaclass_containing.rb +1 -1
- data/lib/mutant/ast/regexp.rb +54 -0
- data/lib/mutant/ast/regexp/transformer.rb +150 -0
- data/lib/mutant/ast/regexp/transformer/direct.rb +121 -0
- data/lib/mutant/ast/regexp/transformer/named_group.rb +50 -0
- data/lib/mutant/ast/regexp/transformer/options_group.rb +68 -0
- data/lib/mutant/ast/regexp/transformer/quantifier.rb +92 -0
- data/lib/mutant/ast/regexp/transformer/recursive.rb +56 -0
- data/lib/mutant/ast/regexp/transformer/root.rb +28 -0
- data/lib/mutant/ast/regexp/transformer/text.rb +58 -0
- data/lib/mutant/ast/types.rb +115 -2
- data/lib/mutant/bootstrap.rb +1 -1
- data/lib/mutant/cli/command.rb +4 -0
- data/lib/mutant/cli/command/environment.rb +9 -3
- data/lib/mutant/cli/command/environment/subject.rb +0 -4
- data/lib/mutant/cli/command/environment/test.rb +36 -0
- data/lib/mutant/cli/command/root.rb +1 -1
- data/lib/mutant/config.rb +9 -55
- data/lib/mutant/config/coverage_criteria.rb +61 -0
- data/lib/mutant/context.rb +1 -1
- data/lib/mutant/env.rb +2 -2
- data/lib/mutant/expression.rb +0 -12
- data/lib/mutant/expression/method.rb +4 -4
- data/lib/mutant/expression/methods.rb +5 -4
- data/lib/mutant/expression/namespace.rb +1 -1
- data/lib/mutant/integration.rb +8 -2
- data/lib/mutant/isolation/fork.rb +4 -11
- data/lib/mutant/loader.rb +1 -1
- data/lib/mutant/matcher.rb +3 -3
- data/lib/mutant/matcher/config.rb +30 -8
- data/lib/mutant/matcher/method.rb +10 -9
- data/lib/mutant/matcher/method/instance.rb +6 -2
- data/lib/mutant/matcher/method/metaclass.rb +1 -1
- data/lib/mutant/matcher/methods.rb +2 -4
- data/lib/mutant/meta/example.rb +1 -1
- data/lib/mutant/meta/example/dsl.rb +6 -1
- data/lib/mutant/meta/example/verification.rb +1 -1
- data/lib/mutant/mutation.rb +1 -1
- data/lib/mutant/mutator.rb +8 -1
- data/lib/mutant/mutator/node/argument.rb +2 -2
- data/lib/mutant/mutator/node/block.rb +5 -1
- data/lib/mutant/mutator/node/dynamic_literal.rb +1 -1
- data/lib/mutant/mutator/node/kwargs.rb +44 -0
- data/lib/mutant/mutator/node/literal/regex.rb +12 -0
- data/lib/mutant/mutator/node/named_value/variable_assignment.rb +3 -3
- data/lib/mutant/mutator/node/regexp.rb +20 -0
- data/lib/mutant/mutator/node/regexp/alternation_meta.rb +20 -0
- data/lib/mutant/mutator/node/regexp/beginning_of_line_anchor.rb +20 -0
- data/lib/mutant/mutator/node/regexp/capture_group.rb +25 -0
- data/lib/mutant/mutator/node/regexp/character_type.rb +31 -0
- data/lib/mutant/mutator/node/regexp/end_of_line_anchor.rb +20 -0
- data/lib/mutant/mutator/node/regexp/end_of_string_or_before_end_of_line_anchor.rb +20 -0
- data/lib/mutant/mutator/node/regexp/named_group.rb +39 -0
- data/lib/mutant/mutator/node/regexp/zero_or_more.rb +34 -0
- data/lib/mutant/mutator/node/regopt.rb +1 -1
- data/lib/mutant/mutator/node/sclass.rb +1 -1
- data/lib/mutant/mutator/node/send.rb +55 -6
- data/lib/mutant/parallel.rb +2 -2
- data/lib/mutant/parallel/driver.rb +1 -1
- data/lib/mutant/parallel/worker.rb +1 -1
- data/lib/mutant/parser.rb +1 -1
- data/lib/mutant/pipe.rb +1 -1
- data/lib/mutant/procto.rb +23 -0
- data/lib/mutant/reporter/cli/printer.rb +10 -4
- data/lib/mutant/reporter/cli/printer/env.rb +3 -3
- data/lib/mutant/reporter/cli/printer/env_progress.rb +2 -2
- data/lib/mutant/selector.rb +1 -1
- data/lib/mutant/subject.rb +2 -4
- data/lib/mutant/subject/method/instance.rb +6 -45
- data/lib/mutant/timer.rb +2 -2
- data/lib/mutant/transform.rb +25 -0
- data/lib/mutant/variable.rb +322 -0
- data/lib/mutant/version.rb +1 -1
- data/lib/mutant/world.rb +2 -3
- metadata +39 -151
- data/lib/mutant/warnings.rb +0 -106
data/lib/mutant/version.rb
CHANGED
data/lib/mutant/world.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
module Mutant
|
4
4
|
# The outer world IO objects mutant does interact with
|
5
5
|
class World
|
6
|
-
include Adamantium
|
6
|
+
include Adamantium, Anima.new(
|
7
7
|
:condition_variable,
|
8
8
|
:gem,
|
9
9
|
:gem_method,
|
@@ -20,8 +20,7 @@ module Mutant
|
|
20
20
|
:stderr,
|
21
21
|
:stdout,
|
22
22
|
:thread,
|
23
|
-
:timer
|
24
|
-
:warnings
|
23
|
+
:timer
|
25
24
|
)
|
26
25
|
|
27
26
|
INSPECT = '#<Mutant::World>'
|
metadata
CHANGED
@@ -1,85 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mutant
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.10.
|
4
|
+
version: 0.10.26
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Markus Schirp
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: abstract_type
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 0.0.7
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 0.0.7
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: adamantium
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 0.2.0
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 0.2.0
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: anima
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: 0.3.1
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: 0.3.1
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: ast
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '2.2'
|
62
|
-
type: :runtime
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '2.2'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: concord
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: 0.1.5
|
76
|
-
type: :runtime
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: 0.1.5
|
83
13
|
- !ruby/object:Gem::Dependency
|
84
14
|
name: diff-lcs
|
85
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,117 +25,53 @@ dependencies:
|
|
95
25
|
- !ruby/object:Gem::Version
|
96
26
|
version: '1.3'
|
97
27
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
28
|
+
name: parser
|
99
29
|
requirement: !ruby/object:Gem::Requirement
|
100
30
|
requirements:
|
101
31
|
- - "~>"
|
102
32
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0.0
|
33
|
+
version: 3.0.0
|
104
34
|
type: :runtime
|
105
35
|
prerelease: false
|
106
36
|
version_requirements: !ruby/object:Gem::Requirement
|
107
37
|
requirements:
|
108
38
|
- - "~>"
|
109
39
|
- !ruby/object:Gem::Version
|
110
|
-
version: 0.0
|
40
|
+
version: 3.0.0
|
111
41
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
42
|
+
name: regexp_parser
|
113
43
|
requirement: !ruby/object:Gem::Requirement
|
114
44
|
requirements:
|
115
45
|
- - "~>"
|
116
46
|
- !ruby/object:Gem::Version
|
117
|
-
version: 0
|
118
|
-
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - "~>"
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: 0.11.1
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: memoizable
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - "~>"
|
47
|
+
version: '2.0'
|
48
|
+
- - ">="
|
130
49
|
- !ruby/object:Gem::Version
|
131
|
-
version: 0.
|
50
|
+
version: 2.0.3
|
132
51
|
type: :runtime
|
133
52
|
prerelease: false
|
134
53
|
version_requirements: !ruby/object:Gem::Requirement
|
135
54
|
requirements:
|
136
55
|
- - "~>"
|
137
56
|
- !ruby/object:Gem::Version
|
138
|
-
version: 0
|
139
|
-
-
|
140
|
-
name: mprelude
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
142
|
-
requirements:
|
143
|
-
- - "~>"
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
version: 0.1.0
|
146
|
-
type: :runtime
|
147
|
-
prerelease: false
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
149
|
-
requirements:
|
150
|
-
- - "~>"
|
57
|
+
version: '2.0'
|
58
|
+
- - ">="
|
151
59
|
- !ruby/object:Gem::Version
|
152
|
-
version: 0.
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: parser
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
156
|
-
requirements:
|
157
|
-
- - "~>"
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
version: 2.7.1
|
160
|
-
type: :runtime
|
161
|
-
prerelease: false
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
163
|
-
requirements:
|
164
|
-
- - "~>"
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: 2.7.1
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: procto
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - "~>"
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: 0.0.2
|
174
|
-
type: :runtime
|
175
|
-
prerelease: false
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - "~>"
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: 0.0.2
|
60
|
+
version: 2.0.3
|
181
61
|
- !ruby/object:Gem::Dependency
|
182
62
|
name: unparser
|
183
63
|
requirement: !ruby/object:Gem::Requirement
|
184
64
|
requirements:
|
185
65
|
- - "~>"
|
186
66
|
- !ruby/object:Gem::Version
|
187
|
-
version: 0.
|
188
|
-
type: :runtime
|
189
|
-
prerelease: false
|
190
|
-
version_requirements: !ruby/object:Gem::Requirement
|
191
|
-
requirements:
|
192
|
-
- - "~>"
|
193
|
-
- !ruby/object:Gem::Version
|
194
|
-
version: 0.5.4
|
195
|
-
- !ruby/object:Gem::Dependency
|
196
|
-
name: variable
|
197
|
-
requirement: !ruby/object:Gem::Requirement
|
198
|
-
requirements:
|
199
|
-
- - "~>"
|
200
|
-
- !ruby/object:Gem::Version
|
201
|
-
version: 0.0.1
|
67
|
+
version: 0.6.0
|
202
68
|
type: :runtime
|
203
69
|
prerelease: false
|
204
70
|
version_requirements: !ruby/object:Gem::Requirement
|
205
71
|
requirements:
|
206
72
|
- - "~>"
|
207
73
|
- !ruby/object:Gem::Version
|
208
|
-
version: 0.0
|
74
|
+
version: 0.6.0
|
209
75
|
- !ruby/object:Gem::Dependency
|
210
76
|
name: parallel
|
211
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -268,14 +134,14 @@ dependencies:
|
|
268
134
|
requirements:
|
269
135
|
- - "~>"
|
270
136
|
- !ruby/object:Gem::Version
|
271
|
-
version: '1.
|
137
|
+
version: '1.7'
|
272
138
|
type: :development
|
273
139
|
prerelease: false
|
274
140
|
version_requirements: !ruby/object:Gem::Requirement
|
275
141
|
requirements:
|
276
142
|
- - "~>"
|
277
143
|
- !ruby/object:Gem::Version
|
278
|
-
version: '1.
|
144
|
+
version: '1.7'
|
279
145
|
description: Mutation Testing for Ruby.
|
280
146
|
email:
|
281
147
|
- mbj@schirp-dso.com
|
@@ -299,6 +165,15 @@ files:
|
|
299
165
|
- lib/mutant/ast/named_children.rb
|
300
166
|
- lib/mutant/ast/node_predicates.rb
|
301
167
|
- lib/mutant/ast/nodes.rb
|
168
|
+
- lib/mutant/ast/regexp.rb
|
169
|
+
- lib/mutant/ast/regexp/transformer.rb
|
170
|
+
- lib/mutant/ast/regexp/transformer/direct.rb
|
171
|
+
- lib/mutant/ast/regexp/transformer/named_group.rb
|
172
|
+
- lib/mutant/ast/regexp/transformer/options_group.rb
|
173
|
+
- lib/mutant/ast/regexp/transformer/quantifier.rb
|
174
|
+
- lib/mutant/ast/regexp/transformer/recursive.rb
|
175
|
+
- lib/mutant/ast/regexp/transformer/root.rb
|
176
|
+
- lib/mutant/ast/regexp/transformer/text.rb
|
302
177
|
- lib/mutant/ast/sexp.rb
|
303
178
|
- lib/mutant/ast/types.rb
|
304
179
|
- lib/mutant/bootstrap.rb
|
@@ -308,9 +183,11 @@ files:
|
|
308
183
|
- lib/mutant/cli/command/environment/run.rb
|
309
184
|
- lib/mutant/cli/command/environment/show.rb
|
310
185
|
- lib/mutant/cli/command/environment/subject.rb
|
186
|
+
- lib/mutant/cli/command/environment/test.rb
|
311
187
|
- lib/mutant/cli/command/root.rb
|
312
188
|
- lib/mutant/cli/command/subscription.rb
|
313
189
|
- lib/mutant/config.rb
|
190
|
+
- lib/mutant/config/coverage_criteria.rb
|
314
191
|
- lib/mutant/context.rb
|
315
192
|
- lib/mutant/env.rb
|
316
193
|
- lib/mutant/expression.rb
|
@@ -366,6 +243,7 @@ files:
|
|
366
243
|
- lib/mutant/mutator/node/generic.rb
|
367
244
|
- lib/mutant/mutator/node/if.rb
|
368
245
|
- lib/mutant/mutator/node/index.rb
|
246
|
+
- lib/mutant/mutator/node/kwargs.rb
|
369
247
|
- lib/mutant/mutator/node/kwbegin.rb
|
370
248
|
- lib/mutant/mutator/node/literal.rb
|
371
249
|
- lib/mutant/mutator/node/literal/array.rb
|
@@ -390,6 +268,15 @@ files:
|
|
390
268
|
- lib/mutant/mutator/node/op_asgn.rb
|
391
269
|
- lib/mutant/mutator/node/or_asgn.rb
|
392
270
|
- lib/mutant/mutator/node/procarg_zero.rb
|
271
|
+
- lib/mutant/mutator/node/regexp.rb
|
272
|
+
- lib/mutant/mutator/node/regexp/alternation_meta.rb
|
273
|
+
- lib/mutant/mutator/node/regexp/beginning_of_line_anchor.rb
|
274
|
+
- lib/mutant/mutator/node/regexp/capture_group.rb
|
275
|
+
- lib/mutant/mutator/node/regexp/character_type.rb
|
276
|
+
- lib/mutant/mutator/node/regexp/end_of_line_anchor.rb
|
277
|
+
- lib/mutant/mutator/node/regexp/end_of_string_or_before_end_of_line_anchor.rb
|
278
|
+
- lib/mutant/mutator/node/regexp/named_group.rb
|
279
|
+
- lib/mutant/mutator/node/regexp/zero_or_more.rb
|
393
280
|
- lib/mutant/mutator/node/regopt.rb
|
394
281
|
- lib/mutant/mutator/node/resbody.rb
|
395
282
|
- lib/mutant/mutator/node/rescue.rb
|
@@ -413,6 +300,7 @@ files:
|
|
413
300
|
- lib/mutant/parallel/worker.rb
|
414
301
|
- lib/mutant/parser.rb
|
415
302
|
- lib/mutant/pipe.rb
|
303
|
+
- lib/mutant/procto.rb
|
416
304
|
- lib/mutant/range.rb
|
417
305
|
- lib/mutant/registry.rb
|
418
306
|
- lib/mutant/reporter.rb
|
@@ -450,8 +338,8 @@ files:
|
|
450
338
|
- lib/mutant/timer.rb
|
451
339
|
- lib/mutant/transform.rb
|
452
340
|
- lib/mutant/util.rb
|
341
|
+
- lib/mutant/variable.rb
|
453
342
|
- lib/mutant/version.rb
|
454
|
-
- lib/mutant/warnings.rb
|
455
343
|
- lib/mutant/world.rb
|
456
344
|
- lib/mutant/zombifier.rb
|
457
345
|
homepage: https://github.com/mbj/mutant
|
data/lib/mutant/warnings.rb
DELETED
@@ -1,106 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Mutant
|
4
|
-
# Class to capture warnings generated by Kernel#warn and Ruby itself.
|
5
|
-
#
|
6
|
-
# @example
|
7
|
-
# capture = Mutant::Warnings.new(Warning)
|
8
|
-
#
|
9
|
-
# # Note that this test case shows we can capture warnings generated from C
|
10
|
-
# def ruby_warning
|
11
|
-
# Class.new do
|
12
|
-
# undef :initialize
|
13
|
-
# end
|
14
|
-
# end
|
15
|
-
#
|
16
|
-
# messages = capture.call do
|
17
|
-
# ruby_warning
|
18
|
-
# end
|
19
|
-
#
|
20
|
-
# messages # => ["some_file.rb:44: warning: undefining `initialize' may cause serious problems\n"]
|
21
|
-
#
|
22
|
-
# Note this API is fundamentally impure:
|
23
|
-
#
|
24
|
-
# * Unlike almost all of classes in the mutant code base it has internal
|
25
|
-
# mutable state
|
26
|
-
# * Its therefore NOT thread safe
|
27
|
-
# * And worst: Each instance, even after its not referenced anymore by user
|
28
|
-
# code: Leaks permanent global state as instances of this class hook
|
29
|
-
# itself into the `Warning` module.
|
30
|
-
#
|
31
|
-
# So ideally only make *one* instance, and re-use it.
|
32
|
-
#
|
33
|
-
# Also note, a more canonical implementation would prepend modules and simply
|
34
|
-
# call `super` in the event the capture is disabled. This sadly does not
|
35
|
-
# work as it would inference with various bad players in the ruby ecosystem
|
36
|
-
# that do not adhere to the semantics outlined in the documentation.
|
37
|
-
#
|
38
|
-
# See: https://ruby-doc.org/core-2.6.3/Warning.html
|
39
|
-
#
|
40
|
-
# For example in case rubygems is active it adds its own hook to warnings,
|
41
|
-
# that would in case of the super implementation cause infinite recursion.
|
42
|
-
#
|
43
|
-
# Reproduction for this case is as simple as:
|
44
|
-
#
|
45
|
-
# ```
|
46
|
-
# require 'rubygems'
|
47
|
-
#
|
48
|
-
# module Warning
|
49
|
-
# def warn(*)
|
50
|
-
# super
|
51
|
-
# end
|
52
|
-
# end
|
53
|
-
# ```
|
54
|
-
#
|
55
|
-
# For that reason we do have to use the original method capture to dispatch
|
56
|
-
# in disabled state.
|
57
|
-
#
|
58
|
-
class Warnings
|
59
|
-
# Error raised when warning capture is used recursively
|
60
|
-
class RecursiveUseError < RuntimeError; end
|
61
|
-
|
62
|
-
# Initialize object
|
63
|
-
#
|
64
|
-
# @param [Module] warning
|
65
|
-
# the module to integrate against
|
66
|
-
#
|
67
|
-
# @return [undefined]
|
68
|
-
def initialize(warning)
|
69
|
-
@disabled = true
|
70
|
-
@messages = []
|
71
|
-
@original = warning.public_method(:warn)
|
72
|
-
|
73
|
-
capture = method(:capture)
|
74
|
-
warning.module_eval do
|
75
|
-
module_function define_method(:warn, &capture)
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
# Run a block with warning collection enabled
|
80
|
-
#
|
81
|
-
# @return [Array<String>]
|
82
|
-
def call
|
83
|
-
assert_no_recursion
|
84
|
-
@disabled = nil
|
85
|
-
yield
|
86
|
-
IceNine.deep_freeze(@messages.dup)
|
87
|
-
ensure
|
88
|
-
@disabled = true
|
89
|
-
@messages.clear
|
90
|
-
end
|
91
|
-
|
92
|
-
private
|
93
|
-
|
94
|
-
def capture(*arguments)
|
95
|
-
if @disabled
|
96
|
-
@original.call(*arguments)
|
97
|
-
else
|
98
|
-
@messages << arguments
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
def assert_no_recursion
|
103
|
-
fail RecursiveUseError unless @disabled
|
104
|
-
end
|
105
|
-
end # Warnings
|
106
|
-
end # Mutant
|