mutant 0.12.0 → 0.12.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/mutant/integration/null.rb +4 -3
- data/lib/mutant/matcher.rb +1 -0
- data/lib/mutant/mutation/operators.rb +10 -0
- data/lib/mutant/parallel/connection.rb +3 -3
- data/lib/mutant/reporter/cli/printer/test.rb +22 -1
- data/lib/mutant/result.rb +5 -4
- data/lib/mutant/test/runner/sink.rb +6 -2
- data/lib/mutant/util.rb +23 -2
- data/lib/mutant/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e1cf4d744b27691dff3986c4af5dddd278e6eadcc348a9cd0d4b5e16fa22514
|
4
|
+
data.tar.gz: 77913d65e176d5150b17ca03ec5b05398dee759dfea2ad89dd438eeaf72e34f8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6d8ec46587bb0b896b0322b57766a6e8bbe51ea00777e538cacd5f6a329d1a3e47c513ccaec720050a3a37049e65dc9be627f25006cc0404cb294fb0ba0a55d6
|
7
|
+
data.tar.gz: d0f457130db225049774066ad235cc00db9f3c1ca75c9994c618798a94567867fb21c84059c0a3878ae88736ad9b4d325b2e75f552bef583cd3cb846e48fc0c9
|
data/lib/mutant/matcher.rb
CHANGED
@@ -21,14 +21,22 @@ module Mutant
|
|
21
21
|
all?: %i[any?],
|
22
22
|
any?: %i[all?],
|
23
23
|
at: %i[fetch key?],
|
24
|
+
detect: %i[first last],
|
24
25
|
fetch: %i[key?],
|
26
|
+
find: %i[first last],
|
27
|
+
first: %i[last],
|
25
28
|
flat_map: %i[map],
|
26
29
|
gsub: %i[sub],
|
27
30
|
is_a?: %i[instance_of?],
|
28
31
|
kind_of?: %i[instance_of?],
|
32
|
+
last: %i[first],
|
29
33
|
map: %i[each],
|
30
34
|
match: %i[match?],
|
35
|
+
max: %i[first last],
|
36
|
+
max_by: %i[first last],
|
31
37
|
method: %i[public_method],
|
38
|
+
min: %i[first last],
|
39
|
+
min_by: %i[first last],
|
32
40
|
reverse_each: %i[each],
|
33
41
|
reverse_map: %i[map each],
|
34
42
|
reverse_merge: %i[merge],
|
@@ -49,6 +57,8 @@ module Mutant
|
|
49
57
|
.tap do |replacements|
|
50
58
|
replacements.delete(:==)
|
51
59
|
replacements.delete(:eql?)
|
60
|
+
replacements.delete(:first)
|
61
|
+
replacements.delete(:last)
|
52
62
|
end
|
53
63
|
.freeze
|
54
64
|
end
|
@@ -21,11 +21,11 @@ module Mutant
|
|
21
21
|
attr_reader :log
|
22
22
|
|
23
23
|
def error
|
24
|
-
@errors
|
24
|
+
Util.max_one(@errors)
|
25
25
|
end
|
26
26
|
|
27
27
|
def result
|
28
|
-
@results
|
28
|
+
Util.max_one(@results)
|
29
29
|
end
|
30
30
|
|
31
31
|
def initialize(*)
|
@@ -96,7 +96,7 @@ module Mutant
|
|
96
96
|
end
|
97
97
|
|
98
98
|
def length
|
99
|
-
@lengths
|
99
|
+
Util.max_one(@lengths)
|
100
100
|
end
|
101
101
|
|
102
102
|
def advance_log
|
@@ -68,7 +68,7 @@ module Mutant
|
|
68
68
|
#
|
69
69
|
# @return [undefined]
|
70
70
|
def run
|
71
|
-
|
71
|
+
visit_failed
|
72
72
|
visit(Env, object.env)
|
73
73
|
FORMATS.each do |report, format, value|
|
74
74
|
__send__(report, format, __send__(value))
|
@@ -77,6 +77,27 @@ module Mutant
|
|
77
77
|
|
78
78
|
private
|
79
79
|
|
80
|
+
def visit_failed
|
81
|
+
failed = object.failed_test_results
|
82
|
+
|
83
|
+
if object.env.config.fail_fast
|
84
|
+
visit_failed_tests(failed.take(1))
|
85
|
+
visit_other_failed(failed.drop(1))
|
86
|
+
else
|
87
|
+
visit_failed_tests(failed)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
def visit_other_failed(other)
|
92
|
+
return if other.empty?
|
93
|
+
|
94
|
+
puts('Other failed tests (report suppressed from fail fast): %d' % other.length)
|
95
|
+
end
|
96
|
+
|
97
|
+
def visit_failed_tests(failed)
|
98
|
+
visit_collection(Result, failed)
|
99
|
+
end
|
100
|
+
|
80
101
|
def efficiency_percent
|
81
102
|
(testtime / runtime) * 100
|
82
103
|
end
|
data/lib/mutant/result.rb
CHANGED
@@ -158,7 +158,7 @@ module Mutant
|
|
158
158
|
|
159
159
|
# Test result
|
160
160
|
class Test
|
161
|
-
include Anima.new(:passed, :runtime, :output)
|
161
|
+
include Anima.new(:job_index, :passed, :runtime, :output)
|
162
162
|
|
163
163
|
alias_method :success?, :passed
|
164
164
|
|
@@ -170,9 +170,10 @@ module Mutant
|
|
170
170
|
# @return [undefined]
|
171
171
|
def initialize
|
172
172
|
super(
|
173
|
-
|
174
|
-
|
175
|
-
|
173
|
+
job_index: nil,
|
174
|
+
output: '',
|
175
|
+
passed: false,
|
176
|
+
runtime: 0.0
|
176
177
|
)
|
177
178
|
end
|
178
179
|
end # VoidValue
|
@@ -22,7 +22,7 @@ module Mutant
|
|
22
22
|
Result::TestEnv.new(
|
23
23
|
env: env,
|
24
24
|
runtime: env.world.timer.now - @start,
|
25
|
-
test_results: @test_results
|
25
|
+
test_results: @test_results.sort_by!(&:job_index)
|
26
26
|
)
|
27
27
|
end
|
28
28
|
|
@@ -42,7 +42,11 @@ module Mutant
|
|
42
42
|
fail response.error
|
43
43
|
end
|
44
44
|
|
45
|
-
@test_results << response.result.with(
|
45
|
+
@test_results << response.result.with(
|
46
|
+
job_index: response.job.index,
|
47
|
+
output: response.log
|
48
|
+
)
|
49
|
+
|
46
50
|
self
|
47
51
|
end
|
48
52
|
end # Sink
|
data/lib/mutant/util.rb
CHANGED
@@ -12,9 +12,30 @@ module Mutant
|
|
12
12
|
#
|
13
13
|
# @return [Object] first entry
|
14
14
|
def self.one(array)
|
15
|
-
|
15
|
+
case array
|
16
|
+
in [value]
|
17
|
+
value
|
18
|
+
else
|
19
|
+
fail SizeError, "expected size to be exactly 1 but size was #{array.size}"
|
20
|
+
end
|
21
|
+
end
|
16
22
|
|
17
|
-
|
23
|
+
# Return only element in array if it contains max one member
|
24
|
+
#
|
25
|
+
# @param array [Array]
|
26
|
+
#
|
27
|
+
# @return [Object] first entry
|
28
|
+
# @return [nil] if empty
|
29
|
+
#
|
30
|
+
# rubocop:disable Lint/EmptyInPattern
|
31
|
+
def self.max_one(array)
|
32
|
+
case array
|
33
|
+
in []
|
34
|
+
in [value]
|
35
|
+
value
|
36
|
+
else
|
37
|
+
fail SizeError, "expected size to be max 1 but size was #{array.size}"
|
38
|
+
end
|
18
39
|
end
|
19
40
|
end # Util
|
20
41
|
end # Mutant
|
data/lib/mutant/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mutant
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.12.
|
4
|
+
version: 0.12.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Markus Schirp
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-05-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: diff-lcs
|