mutant 0.9.8 → 0.9.9
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/.github/workflows/ci.yml +2 -2
- data/Changelog.md +6 -0
- data/README.md +63 -23
- data/config/reek.yml +1 -0
- data/lib/mutant.rb +4 -0
- data/lib/mutant/ast.rb +0 -9
- data/lib/mutant/ast/find_metaclass_containing.rb +48 -0
- data/lib/mutant/ast/meta/send.rb +0 -6
- data/lib/mutant/bootstrap.rb +0 -36
- data/lib/mutant/cli.rb +5 -49
- data/lib/mutant/color.rb +0 -3
- data/lib/mutant/config.rb +0 -8
- data/lib/mutant/context.rb +0 -3
- data/lib/mutant/diff.rb +0 -17
- data/lib/mutant/env.rb +0 -6
- data/lib/mutant/expression/method.rb +6 -6
- data/lib/mutant/expression/methods.rb +6 -6
- data/lib/mutant/expression/parser.rb +0 -6
- data/lib/mutant/integration.rb +0 -18
- data/lib/mutant/isolation/fork.rb +0 -22
- data/lib/mutant/license.rb +11 -0
- data/lib/mutant/matcher.rb +0 -14
- data/lib/mutant/matcher/config.rb +0 -11
- data/lib/mutant/matcher/method.rb +0 -31
- data/lib/mutant/matcher/method/instance.rb +0 -8
- data/lib/mutant/matcher/method/metaclass.rb +86 -0
- data/lib/mutant/matcher/method/singleton.rb +0 -25
- data/lib/mutant/matcher/methods.rb +17 -28
- data/lib/mutant/matcher/namespace.rb +0 -10
- data/lib/mutant/matcher/scope.rb +2 -4
- data/lib/mutant/meta/example/dsl.rb +0 -21
- data/lib/mutant/meta/example/verification.rb +0 -20
- data/lib/mutant/mutation.rb +0 -3
- data/lib/mutant/mutator.rb +1 -29
- data/lib/mutant/mutator/node.rb +1 -66
- data/lib/mutant/mutator/node/and_asgn.rb +0 -3
- data/lib/mutant/mutator/node/argument.rb +0 -15
- data/lib/mutant/mutator/node/arguments.rb +0 -20
- data/lib/mutant/mutator/node/begin.rb +0 -3
- data/lib/mutant/mutator/node/binary.rb +0 -23
- data/lib/mutant/mutator/node/block.rb +0 -15
- data/lib/mutant/mutator/node/break.rb +0 -3
- data/lib/mutant/mutator/node/case.rb +0 -9
- data/lib/mutant/mutator/node/class.rb +0 -3
- data/lib/mutant/mutator/node/conditional_loop.rb +0 -3
- data/lib/mutant/mutator/node/const.rb +0 -3
- data/lib/mutant/mutator/node/define.rb +0 -11
- data/lib/mutant/mutator/node/defined.rb +0 -3
- data/lib/mutant/mutator/node/dstr.rb +0 -3
- data/lib/mutant/mutator/node/dsym.rb +0 -3
- data/lib/mutant/mutator/node/generic.rb +0 -3
- data/lib/mutant/mutator/node/if.rb +0 -12
- data/lib/mutant/mutator/node/index.rb +0 -27
- data/lib/mutant/mutator/node/kwbegin.rb +0 -3
- data/lib/mutant/mutator/node/literal.rb +0 -3
- data/lib/mutant/mutator/node/literal/array.rb +0 -6
- data/lib/mutant/mutator/node/literal/boolean.rb +0 -4
- data/lib/mutant/mutator/node/literal/float.rb +0 -9
- data/lib/mutant/mutator/node/literal/hash.rb +0 -9
- data/lib/mutant/mutator/node/literal/integer.rb +0 -9
- data/lib/mutant/mutator/node/literal/nil.rb +0 -3
- data/lib/mutant/mutator/node/literal/range.rb +0 -6
- data/lib/mutant/mutator/node/literal/regex.rb +0 -6
- data/lib/mutant/mutator/node/literal/string.rb +0 -3
- data/lib/mutant/mutator/node/literal/symbol.rb +0 -3
- data/lib/mutant/mutator/node/masgn.rb +0 -3
- data/lib/mutant/mutator/node/match_current_line.rb +0 -3
- data/lib/mutant/mutator/node/mlhs.rb +0 -3
- data/lib/mutant/mutator/node/named_value/access.rb +2 -14
- data/lib/mutant/mutator/node/named_value/constant_assignment.rb +0 -9
- data/lib/mutant/mutator/node/named_value/variable_assignment.rb +0 -6
- data/lib/mutant/mutator/node/next.rb +0 -3
- data/lib/mutant/mutator/node/noop.rb +0 -3
- data/lib/mutant/mutator/node/nthref.rb +0 -3
- data/lib/mutant/mutator/node/op_asgn.rb +0 -3
- data/lib/mutant/mutator/node/or_asgn.rb +0 -3
- data/lib/mutant/mutator/node/procarg_zero.rb +0 -3
- data/lib/mutant/mutator/node/regopt.rb +0 -6
- data/lib/mutant/mutator/node/resbody.rb +0 -6
- data/lib/mutant/mutator/node/rescue.rb +2 -19
- data/lib/mutant/mutator/node/return.rb +0 -3
- data/lib/mutant/mutator/node/sclass.rb +20 -0
- data/lib/mutant/mutator/node/send.rb +2 -61
- data/lib/mutant/mutator/node/send/attribute_assignment.rb +0 -9
- data/lib/mutant/mutator/node/send/binary.rb +0 -11
- data/lib/mutant/mutator/node/send/conditional.rb +0 -3
- data/lib/mutant/mutator/node/splat.rb +0 -3
- data/lib/mutant/mutator/node/super.rb +0 -3
- data/lib/mutant/mutator/node/when.rb +0 -19
- data/lib/mutant/mutator/node/yield.rb +0 -3
- data/lib/mutant/mutator/node/zsuper.rb +0 -3
- data/lib/mutant/mutator/util/array.rb +0 -6
- data/lib/mutant/mutator/util/symbol.rb +0 -3
- data/lib/mutant/parallel.rb +0 -13
- data/lib/mutant/parallel/driver.rb +0 -10
- data/lib/mutant/parallel/worker.rb +0 -22
- data/lib/mutant/reporter/cli.rb +0 -5
- data/lib/mutant/reporter/cli/format.rb +0 -9
- data/lib/mutant/reporter/cli/printer.rb +0 -40
- data/lib/mutant/reporter/cli/printer/env_progress.rb +0 -15
- data/lib/mutant/reporter/cli/printer/isolation_result.rb +0 -18
- data/lib/mutant/reporter/cli/printer/mutation_progress_result.rb +0 -5
- data/lib/mutant/reporter/cli/printer/mutation_result.rb +0 -21
- data/lib/mutant/reporter/cli/printer/status_progressive.rb +0 -8
- data/lib/mutant/reporter/cli/printer/subject_progress.rb +0 -9
- data/lib/mutant/repository/diff.rb +1 -13
- data/lib/mutant/repository/diff/ranges.rb +0 -11
- data/lib/mutant/result.rb +0 -3
- data/lib/mutant/runner.rb +0 -18
- data/lib/mutant/runner/sink.rb +0 -5
- data/lib/mutant/subject.rb +0 -8
- data/lib/mutant/subject/method.rb +0 -3
- data/lib/mutant/subject/method/instance.rb +0 -5
- data/lib/mutant/subject/method/metaclass.rb +30 -0
- data/lib/mutant/transform.rb +0 -92
- data/lib/mutant/version.rb +1 -1
- data/lib/mutant/warnings.rb +0 -6
- data/lib/mutant/zombifier.rb +2 -34
- data/meta/and.rb +0 -2
- data/meta/array.rb +0 -3
- data/meta/begin.rb +0 -3
- data/meta/block.rb +0 -3
- data/meta/break.rb +0 -1
- data/meta/case.rb +0 -6
- data/meta/casgn.rb +0 -3
- data/meta/cvasgn.rb +0 -1
- data/meta/def.rb +0 -7
- data/meta/ensure.rb +0 -1
- data/meta/false.rb +0 -1
- data/meta/gvasgn.rb +0 -1
- data/meta/hash.rb +0 -4
- data/meta/if.rb +0 -5
- data/meta/ivasgn.rb +0 -1
- data/meta/kwbegin.rb +0 -1
- data/meta/lvasgn.rb +0 -1
- data/meta/match_current_line.rb +0 -1
- data/meta/next.rb +0 -1
- data/meta/or.rb +0 -2
- data/meta/regexp.rb +0 -1
- data/meta/rescue.rb +0 -6
- data/meta/sclass.rb +12 -0
- data/meta/send.rb +0 -4
- data/meta/true.rb +0 -1
- data/meta/until.rb +0 -1
- data/meta/while.rb +0 -2
- data/meta/yield.rb +0 -1
- data/mutant.sh +12 -0
- data/spec/unit/mutant/ast/find_metaclass_containing_spec.rb +64 -0
- data/spec/unit/mutant/expression/methods_spec.rb +7 -2
- data/spec/unit/mutant/license_spec.rb +15 -3
- data/spec/unit/mutant/matcher/method/metaclass_spec.rb +108 -0
- data/spec/unit/mutant/matcher/methods/metaclass_spec.rb +62 -0
- data/spec/unit/mutant/matcher/namespace_spec.rb +3 -1
- data/spec/unit/mutant/matcher/scope_spec.rb +11 -1
- data/spec/unit/mutant/meta/example_spec.rb +3 -3
- data/spec/unit/mutant/mutator/node_spec.rb +1 -6
- data/spec/unit/mutant/subject/method/metaclass_spec.rb +63 -0
- data/test_app/lib/test_app.rb +1 -0
- data/test_app/lib/test_app/metaclasses.rb +108 -0
- metadata +17 -2
|
@@ -11,9 +11,6 @@ module Mutant
|
|
|
11
11
|
|
|
12
12
|
private
|
|
13
13
|
|
|
14
|
-
# Emit mutations
|
|
15
|
-
#
|
|
16
|
-
# @return [undefined]
|
|
17
14
|
def dispatch
|
|
18
15
|
if body
|
|
19
16
|
mutate_body
|
|
@@ -23,9 +20,6 @@ module Mutant
|
|
|
23
20
|
mutate_conditions
|
|
24
21
|
end
|
|
25
22
|
|
|
26
|
-
# Emit condition mutations
|
|
27
|
-
#
|
|
28
|
-
# @return [undefined]
|
|
29
23
|
def mutate_conditions
|
|
30
24
|
conditions = children.length - 1
|
|
31
25
|
children[0..-2].each_index do |index|
|
|
@@ -34,27 +28,14 @@ module Mutant
|
|
|
34
28
|
end
|
|
35
29
|
end
|
|
36
30
|
|
|
37
|
-
# Emit body mutations
|
|
38
|
-
#
|
|
39
|
-
# @return [undefined]
|
|
40
31
|
def mutate_body
|
|
41
32
|
mutate_child(body_index)
|
|
42
33
|
end
|
|
43
34
|
|
|
44
|
-
# Body node
|
|
45
|
-
#
|
|
46
|
-
# @return [Parser::AST::Node]
|
|
47
|
-
# if body is present
|
|
48
|
-
#
|
|
49
|
-
# @return [nil]
|
|
50
|
-
# otherwise
|
|
51
35
|
def body
|
|
52
36
|
children.fetch(body_index)
|
|
53
37
|
end
|
|
54
38
|
|
|
55
|
-
# Index of body node
|
|
56
|
-
#
|
|
57
|
-
# @return [Integer]
|
|
58
39
|
def body_index
|
|
59
40
|
children.length - 1
|
|
60
41
|
end
|
|
@@ -12,9 +12,6 @@ module Mutant
|
|
|
12
12
|
|
|
13
13
|
private
|
|
14
14
|
|
|
15
|
-
# Emit element presence mutations
|
|
16
|
-
#
|
|
17
|
-
# @return [undefined]
|
|
18
15
|
def dispatch
|
|
19
16
|
input.each_index do |index|
|
|
20
17
|
dup = dup_input
|
|
@@ -30,9 +27,6 @@ module Mutant
|
|
|
30
27
|
|
|
31
28
|
private
|
|
32
29
|
|
|
33
|
-
# Emit mutations
|
|
34
|
-
#
|
|
35
|
-
# @return [undefined]
|
|
36
30
|
def dispatch
|
|
37
31
|
input.each_with_index do |element, index|
|
|
38
32
|
Mutator.mutate(element).each do |mutation|
|
data/lib/mutant/parallel.rb
CHANGED
|
@@ -36,24 +36,11 @@ module Mutant
|
|
|
36
36
|
)
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
-
# Start threads
|
|
40
|
-
#
|
|
41
|
-
# @param [Config] config
|
|
42
|
-
# @param [Worker] worker
|
|
43
|
-
#
|
|
44
|
-
# @return [Array<Thread>]
|
|
45
39
|
def self.threads(config, worker)
|
|
46
40
|
Array.new(config.jobs) { config.thread.new(&worker.method(:call)) }
|
|
47
41
|
end
|
|
48
42
|
private_class_method :threads
|
|
49
43
|
|
|
50
|
-
# Create shared variable
|
|
51
|
-
#
|
|
52
|
-
# @param [Class] klass
|
|
53
|
-
# @param [Config] config
|
|
54
|
-
#
|
|
55
|
-
# @return [Variable]
|
|
56
|
-
#
|
|
57
44
|
# ignore :reek:LongParameterList
|
|
58
45
|
def self.shared(klass, config, **attributes)
|
|
59
46
|
klass.new(
|
|
@@ -27,22 +27,12 @@ module Mutant
|
|
|
27
27
|
|
|
28
28
|
private
|
|
29
29
|
|
|
30
|
-
# Possibly finalize the exeuction
|
|
31
|
-
#
|
|
32
|
-
# @param [Status]
|
|
33
|
-
#
|
|
34
|
-
# @return [Status]
|
|
35
30
|
def finalize(status)
|
|
36
31
|
status.tap do
|
|
37
32
|
threads.each(&:join) if status.done?
|
|
38
33
|
end
|
|
39
34
|
end
|
|
40
35
|
|
|
41
|
-
# Get status
|
|
42
|
-
#
|
|
43
|
-
# @return [Status]
|
|
44
|
-
#
|
|
45
|
-
# ignore :reek:NestedIterators
|
|
46
36
|
def status
|
|
47
37
|
var_active_jobs.with do |active_jobs|
|
|
48
38
|
var_sink.with do |sink|
|
|
@@ -39,20 +39,12 @@ module Mutant
|
|
|
39
39
|
|
|
40
40
|
private
|
|
41
41
|
|
|
42
|
-
# Next job, if any
|
|
43
|
-
#
|
|
44
|
-
# @return [Job, nil]
|
|
45
42
|
def next_job
|
|
46
43
|
var_source.with do |source|
|
|
47
44
|
source.next if source.next?
|
|
48
45
|
end
|
|
49
46
|
end
|
|
50
47
|
|
|
51
|
-
# Add result
|
|
52
|
-
#
|
|
53
|
-
# @param [Object] result
|
|
54
|
-
#
|
|
55
|
-
# @return [Boolean]
|
|
56
48
|
def add_result(result)
|
|
57
49
|
var_sink.with do |sink|
|
|
58
50
|
sink.result(result)
|
|
@@ -60,32 +52,18 @@ module Mutant
|
|
|
60
52
|
end
|
|
61
53
|
end
|
|
62
54
|
|
|
63
|
-
# Register job to be started
|
|
64
|
-
#
|
|
65
|
-
# @param [Job] job
|
|
66
|
-
#
|
|
67
|
-
# @return [undefined]
|
|
68
55
|
def job_start(job)
|
|
69
56
|
var_active_jobs.with do |active_jobs|
|
|
70
57
|
active_jobs << job
|
|
71
58
|
end
|
|
72
59
|
end
|
|
73
60
|
|
|
74
|
-
# Register job to be done
|
|
75
|
-
#
|
|
76
|
-
# @param [Job] job
|
|
77
|
-
# @param [Object] result
|
|
78
|
-
#
|
|
79
|
-
# @return [undefined]
|
|
80
61
|
def job_done(job)
|
|
81
62
|
var_active_jobs.with do |active_jobs|
|
|
82
63
|
active_jobs.delete(job)
|
|
83
64
|
end
|
|
84
65
|
end
|
|
85
66
|
|
|
86
|
-
# Finalize worker
|
|
87
|
-
#
|
|
88
|
-
# @return [undefined]
|
|
89
67
|
def finalize
|
|
90
68
|
var_final.put(nil) if var_running.modify(&:pred).zero?
|
|
91
69
|
end
|
data/lib/mutant/reporter/cli.rb
CHANGED
|
@@ -49,12 +49,6 @@ module Mutant
|
|
|
49
49
|
|
|
50
50
|
private
|
|
51
51
|
|
|
52
|
-
# Format object with printer
|
|
53
|
-
#
|
|
54
|
-
# @param [Class:Printer] printer
|
|
55
|
-
# @param [Object] object
|
|
56
|
-
#
|
|
57
|
-
# @return [String]
|
|
58
52
|
def format(printer, object)
|
|
59
53
|
buffer = new_buffer
|
|
60
54
|
printer.call(Output.new(tty, buffer), object)
|
|
@@ -84,9 +78,6 @@ module Mutant
|
|
|
84
78
|
|
|
85
79
|
private
|
|
86
80
|
|
|
87
|
-
# New buffer
|
|
88
|
-
#
|
|
89
|
-
# @return [StringIO]
|
|
90
81
|
def new_buffer
|
|
91
82
|
StringIO.new
|
|
92
83
|
end
|
|
@@ -44,81 +44,41 @@ module Mutant
|
|
|
44
44
|
|
|
45
45
|
private
|
|
46
46
|
|
|
47
|
-
# Status color
|
|
48
|
-
#
|
|
49
|
-
# @return [Color]
|
|
50
47
|
def status_color
|
|
51
48
|
success? ? Color::GREEN : Color::RED
|
|
52
49
|
end
|
|
53
50
|
|
|
54
|
-
# Visit a collection of objects
|
|
55
|
-
#
|
|
56
|
-
# @return [Class::Printer] printer
|
|
57
|
-
# @return [Enumerable<Object>] collection
|
|
58
|
-
#
|
|
59
|
-
# @return [undefined]
|
|
60
51
|
def visit_collection(printer, collection)
|
|
61
52
|
collection.each do |object|
|
|
62
53
|
visit(printer, object)
|
|
63
54
|
end
|
|
64
55
|
end
|
|
65
56
|
|
|
66
|
-
# Visit object
|
|
67
|
-
#
|
|
68
|
-
# @param [Class::Printer] printer
|
|
69
|
-
# @param [Object] object
|
|
70
|
-
#
|
|
71
|
-
# @return [undefined]
|
|
72
57
|
def visit(printer, object)
|
|
73
58
|
printer.call(output, object)
|
|
74
59
|
end
|
|
75
60
|
|
|
76
|
-
# Print an info line to output
|
|
77
|
-
#
|
|
78
|
-
# @return [undefined]
|
|
79
61
|
def info(string, *arguments)
|
|
80
62
|
puts(string % arguments)
|
|
81
63
|
end
|
|
82
64
|
|
|
83
|
-
# Print a status line to output
|
|
84
|
-
#
|
|
85
|
-
# @return [undefined]
|
|
86
65
|
def status(string, *arguments)
|
|
87
66
|
puts(colorize(status_color, string % arguments))
|
|
88
67
|
end
|
|
89
68
|
|
|
90
|
-
# Print a line to output
|
|
91
|
-
#
|
|
92
|
-
# @return [undefined]
|
|
93
69
|
def puts(string)
|
|
94
70
|
output.puts(string)
|
|
95
71
|
end
|
|
96
72
|
|
|
97
|
-
# Colorize message
|
|
98
|
-
#
|
|
99
|
-
# @param [Color] color
|
|
100
|
-
# @param [String] message
|
|
101
|
-
#
|
|
102
|
-
# @return [String]
|
|
103
|
-
# if color is enabled
|
|
104
|
-
# unmodified message otherwise
|
|
105
73
|
def colorize(color, message)
|
|
106
74
|
color = Color::NONE unless tty?
|
|
107
75
|
color.format(message)
|
|
108
76
|
end
|
|
109
77
|
|
|
110
|
-
# Test if output is a tty
|
|
111
|
-
#
|
|
112
|
-
# @return [Boolean]
|
|
113
78
|
def tty?
|
|
114
79
|
output.tty?
|
|
115
80
|
end
|
|
116
81
|
|
|
117
|
-
# Test if output can be colored
|
|
118
|
-
#
|
|
119
|
-
# @return [Boolean]
|
|
120
|
-
#
|
|
121
|
-
# @api private
|
|
122
82
|
alias_method :color?, :tty?
|
|
123
83
|
end # Printer
|
|
124
84
|
end # CLI
|
|
@@ -40,29 +40,14 @@ module Mutant
|
|
|
40
40
|
|
|
41
41
|
private
|
|
42
42
|
|
|
43
|
-
# Mutations processed per second
|
|
44
|
-
#
|
|
45
|
-
# @return [Float]
|
|
46
|
-
#
|
|
47
|
-
# @api private
|
|
48
43
|
def mutations_per_second
|
|
49
44
|
amount_mutation_results / runtime
|
|
50
45
|
end
|
|
51
46
|
|
|
52
|
-
# Coverage in percent
|
|
53
|
-
#
|
|
54
|
-
# @return [Float]
|
|
55
|
-
#
|
|
56
|
-
# @api private
|
|
57
47
|
def coverage_percent
|
|
58
48
|
coverage * 100
|
|
59
49
|
end
|
|
60
50
|
|
|
61
|
-
# Overhead in percent
|
|
62
|
-
#
|
|
63
|
-
# @return [Float]
|
|
64
|
-
#
|
|
65
|
-
# @api private
|
|
66
51
|
def overhead_percent
|
|
67
52
|
(overhead / killtime) * 100
|
|
68
53
|
end
|
|
@@ -66,39 +66,24 @@ module Mutant
|
|
|
66
66
|
|
|
67
67
|
private
|
|
68
68
|
|
|
69
|
-
# Visit successful isolation result
|
|
70
|
-
#
|
|
71
|
-
# @return [undefined]
|
|
72
69
|
def visit_success
|
|
73
70
|
visit(TestResult, object.value)
|
|
74
71
|
end
|
|
75
72
|
|
|
76
|
-
# Print log messages
|
|
77
|
-
#
|
|
78
|
-
# @return [undefined]
|
|
79
73
|
def print_log_messages
|
|
80
74
|
log = object.log
|
|
81
75
|
|
|
82
76
|
puts(LOG_MESSAGES % log) unless log.empty?
|
|
83
77
|
end
|
|
84
78
|
|
|
85
|
-
# Visit child error isolation result
|
|
86
|
-
#
|
|
87
|
-
# @return [undefined]
|
|
88
79
|
def visit_child_error
|
|
89
80
|
puts(CHILD_ERROR_MESSAGE % object.value.inspect)
|
|
90
81
|
end
|
|
91
82
|
|
|
92
|
-
# Visit fork error isolation result
|
|
93
|
-
#
|
|
94
|
-
# @return [undefined]
|
|
95
83
|
def visit_fork_error
|
|
96
84
|
puts(FORK_ERROR_MESSAGE)
|
|
97
85
|
end
|
|
98
86
|
|
|
99
|
-
# Visit exception isolation result
|
|
100
|
-
#
|
|
101
|
-
# @return [undefined]
|
|
102
87
|
def visit_exception
|
|
103
88
|
exception = object.value
|
|
104
89
|
|
|
@@ -110,9 +95,6 @@ module Mutant
|
|
|
110
95
|
)
|
|
111
96
|
end
|
|
112
97
|
|
|
113
|
-
# Visit chain
|
|
114
|
-
#
|
|
115
|
-
# @return [undefined]
|
|
116
98
|
def visit_chain
|
|
117
99
|
printer = self.class
|
|
118
100
|
|
|
@@ -59,9 +59,6 @@ module Mutant
|
|
|
59
59
|
|
|
60
60
|
private
|
|
61
61
|
|
|
62
|
-
# Print mutation details
|
|
63
|
-
#
|
|
64
|
-
# @return [undefined]
|
|
65
62
|
def print_details
|
|
66
63
|
__send__(MAP.fetch(mutation.class))
|
|
67
64
|
|
|
@@ -69,9 +66,6 @@ module Mutant
|
|
|
69
66
|
visit_isolation_result
|
|
70
67
|
end
|
|
71
68
|
|
|
72
|
-
# Evil mutation details
|
|
73
|
-
#
|
|
74
|
-
# @return [String]
|
|
75
69
|
def evil_details
|
|
76
70
|
diff = Diff.build(mutation.original_source, mutation.source)
|
|
77
71
|
diff = color? ? diff.colorized_diff : diff.diff
|
|
@@ -82,9 +76,6 @@ module Mutant
|
|
|
82
76
|
end
|
|
83
77
|
end
|
|
84
78
|
|
|
85
|
-
# Print no diff message
|
|
86
|
-
#
|
|
87
|
-
# @return [undefined]
|
|
88
79
|
def print_no_diff_message
|
|
89
80
|
info(
|
|
90
81
|
NO_DIFF_MESSAGE,
|
|
@@ -95,30 +86,18 @@ module Mutant
|
|
|
95
86
|
)
|
|
96
87
|
end
|
|
97
88
|
|
|
98
|
-
# Noop details
|
|
99
|
-
#
|
|
100
|
-
# @return [String]
|
|
101
89
|
def noop_details
|
|
102
90
|
info(NOOP_MESSAGE)
|
|
103
91
|
end
|
|
104
92
|
|
|
105
|
-
# Neutral details
|
|
106
|
-
#
|
|
107
|
-
# @return [String]
|
|
108
93
|
def neutral_details
|
|
109
94
|
info(NEUTRAL_MESSAGE, original_node.inspect, mutation.source)
|
|
110
95
|
end
|
|
111
96
|
|
|
112
|
-
# Visit failed test results
|
|
113
|
-
#
|
|
114
|
-
# @return [undefined]
|
|
115
97
|
def visit_isolation_result
|
|
116
98
|
visit(IsolationResult, isolation_result)
|
|
117
99
|
end
|
|
118
100
|
|
|
119
|
-
# Original node
|
|
120
|
-
#
|
|
121
|
-
# @return [Parser::AST::Node]
|
|
122
101
|
def original_node
|
|
123
102
|
mutation.subject.node
|
|
124
103
|
end
|