mutant 0.9.10 → 0.10.0
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/bin/mutant +16 -11
- data/lib/mutant.rb +8 -4
- data/lib/mutant/bootstrap.rb +14 -1
- data/lib/mutant/cli.rb +9 -162
- data/lib/mutant/cli/command.rb +196 -0
- data/lib/mutant/cli/command/root.rb +13 -0
- data/lib/mutant/cli/command/run.rb +151 -0
- data/lib/mutant/cli/command/subscription.rb +54 -0
- data/lib/mutant/expression.rb +0 -1
- data/lib/mutant/isolation.rb +1 -1
- data/lib/mutant/isolation/fork.rb +2 -2
- data/lib/mutant/isolation/none.rb +1 -1
- data/lib/mutant/license.rb +9 -35
- data/lib/mutant/license/subscription.rb +31 -9
- data/lib/mutant/license/subscription/commercial.rb +2 -4
- data/lib/mutant/license/subscription/opensource.rb +7 -7
- data/lib/mutant/matcher/config.rb +2 -0
- data/lib/mutant/meta/example.rb +16 -4
- data/lib/mutant/meta/example/dsl.rb +33 -16
- data/lib/mutant/meta/example/verification.rb +70 -28
- data/lib/mutant/minitest/coverage.rb +53 -0
- data/lib/mutant/mutator/node.rb +2 -2
- data/lib/mutant/mutator/node/block_pass.rb +29 -0
- data/lib/mutant/mutator/node/{dstr.rb → dynamic_literal.rb} +7 -5
- data/lib/mutant/mutator/node/index.rb +4 -4
- data/lib/mutant/mutator/node/literal/range.rb +5 -2
- data/lib/mutant/mutator/node/named_value/variable_assignment.rb +1 -1
- data/lib/mutant/mutator/node/noop.rb +1 -1
- data/lib/mutant/mutator/node/op_asgn.rb +15 -1
- data/lib/mutant/mutator/node/send.rb +25 -1
- data/lib/mutant/mutator/node/send/attribute_assignment.rb +1 -0
- data/lib/mutant/reporter/cli/printer/isolation_result.rb +9 -3
- data/lib/mutant/subject/method/instance.rb +1 -1
- data/lib/mutant/version.rb +1 -1
- metadata +18 -336
- data/.github/workflows/ci.yml +0 -121
- data/.gitignore +0 -38
- data/.rspec +0 -5
- data/.rubocop.yml +0 -210
- data/Changelog.md +0 -87
- data/Gemfile +0 -7
- data/Gemfile.lock +0 -107
- data/Gemfile.shared +0 -10
- data/README.md +0 -199
- data/Rakefile +0 -5
- data/config/devtools.yml +0 -2
- data/config/reek.yml +0 -139
- data/config/yardstick.yml +0 -2
- data/docs/commercial-support.md +0 -14
- data/docs/concurrency.md +0 -39
- data/docs/incremental.md +0 -76
- data/docs/known-problems.md +0 -30
- data/docs/limitations.md +0 -50
- data/docs/mutant-minitest.md +0 -149
- data/docs/mutant-rspec.md +0 -130
- data/docs/nomenclature.md +0 -82
- data/docs/reading-reports.md +0 -74
- data/lib/mutant/mutator/node/dsym.rb +0 -22
- data/meta/and.rb +0 -13
- data/meta/and_asgn.rb +0 -14
- data/meta/array.rb +0 -27
- data/meta/begin.rb +0 -20
- data/meta/block.rb +0 -199
- data/meta/block_pass.rb +0 -8
- data/meta/blockarg.rb +0 -10
- data/meta/break.rb +0 -9
- data/meta/case.rb +0 -217
- data/meta/casgn.rb +0 -25
- data/meta/cbase.rb +0 -8
- data/meta/class.rb +0 -12
- data/meta/const.rb +0 -17
- data/meta/csend.rb +0 -10
- data/meta/cvar.rb +0 -7
- data/meta/cvasgn.rb +0 -9
- data/meta/date.rb +0 -59
- data/meta/def.rb +0 -196
- data/meta/defined.rb +0 -9
- data/meta/dstr.rb +0 -13
- data/meta/dsym.rb +0 -14
- data/meta/ensure.rb +0 -8
- data/meta/false.rb +0 -7
- data/meta/file.rb +0 -5
- data/meta/float.rb +0 -37
- data/meta/gvar.rb +0 -7
- data/meta/gvasgn.rb +0 -9
- data/meta/hash.rb +0 -20
- data/meta/if.rb +0 -72
- data/meta/index.rb +0 -133
- data/meta/indexasgn.rb +0 -31
- data/meta/int.rb +0 -18
- data/meta/ivar.rb +0 -8
- data/meta/ivasgn.rb +0 -22
- data/meta/kwarg.rb +0 -10
- data/meta/kwbegin.rb +0 -8
- data/meta/kwoptarg.rb +0 -13
- data/meta/lambda.rb +0 -23
- data/meta/line.rb +0 -5
- data/meta/lvar.rb +0 -16
- data/meta/lvasgn.rb +0 -24
- data/meta/masgn.rb +0 -7
- data/meta/match_current_line.rb +0 -14
- data/meta/next.rb +0 -10
- data/meta/nil.rb +0 -5
- data/meta/nthref.rb +0 -14
- data/meta/op_assgn.rb +0 -17
- data/meta/or.rb +0 -13
- data/meta/or_asgn.rb +0 -50
- data/meta/range.rb +0 -65
- data/meta/redo.rb +0 -5
- data/meta/regexp.rb +0 -80
- data/meta/regopt.rb +0 -10
- data/meta/rescue.rb +0 -84
- data/meta/return.rb +0 -16
- data/meta/sclass.rb +0 -12
- data/meta/self.rb +0 -7
- data/meta/send.rb +0 -600
- data/meta/str.rb +0 -7
- data/meta/super.rb +0 -27
- data/meta/sym.rb +0 -8
- data/meta/true.rb +0 -7
- data/meta/until.rb +0 -16
- data/meta/while.rb +0 -24
- data/meta/yield.rb +0 -9
- data/mutant-minitest.gemspec +0 -22
- data/mutant-rspec.gemspec +0 -22
- data/mutant.gemspec +0 -44
- data/mutant.sh +0 -12
- data/mutant.yml +0 -6
- data/spec/integration/mutant/corpus_spec.rb +0 -15
- data/spec/integration/mutant/isolation/fork_spec.rb +0 -28
- data/spec/integration/mutant/minitest_spec.rb +0 -11
- data/spec/integration/mutant/null_spec.rb +0 -16
- data/spec/integration/mutant/rspec_spec.rb +0 -15
- data/spec/integration/mutant/test_mutator_handles_types_spec.rb +0 -9
- data/spec/integrations.yml +0 -63
- data/spec/shared/framework_integration_behavior.rb +0 -70
- data/spec/shared/method_matcher_behavior.rb +0 -47
- data/spec/spec_helper.rb +0 -90
- data/spec/support/corpus.rb +0 -318
- data/spec/support/file_system.rb +0 -62
- data/spec/support/ice_nine_config.rb +0 -10
- data/spec/support/ruby_vm.rb +0 -84
- data/spec/support/shared_context.rb +0 -169
- data/spec/support/xspec.rb +0 -183
- data/spec/unit/mutant/ast/find_metaclass_containing_spec.rb +0 -64
- data/spec/unit/mutant/ast/meta/optarg_spec.rb +0 -24
- data/spec/unit/mutant/ast/meta/send/proc_predicate_spec.rb +0 -30
- data/spec/unit/mutant/ast/meta/send/receiver_possible_top_level_const_predicate_spec.rb +0 -39
- data/spec/unit/mutant/ast/meta/send_spec.rb +0 -42
- data/spec/unit/mutant/ast/named_children_spec.rb +0 -89
- data/spec/unit/mutant/ast/sexp_spec.rb +0 -38
- data/spec/unit/mutant/ast_spec.rb +0 -57
- data/spec/unit/mutant/bootstrap_spec.rb +0 -216
- data/spec/unit/mutant/cli_spec.rb +0 -305
- data/spec/unit/mutant/clock_monotonic_spec.rb +0 -52
- data/spec/unit/mutant/config_spec.rb +0 -126
- data/spec/unit/mutant/context_spec.rb +0 -111
- data/spec/unit/mutant/env_spec.rb +0 -229
- data/spec/unit/mutant/expression/method_spec.rb +0 -62
- data/spec/unit/mutant/expression/methods_spec.rb +0 -66
- data/spec/unit/mutant/expression/namespace/exact_spec.rb +0 -28
- data/spec/unit/mutant/expression/namespace/recursive_spec.rb +0 -66
- data/spec/unit/mutant/expression/parser_spec.rb +0 -65
- data/spec/unit/mutant/expression_spec.rb +0 -45
- data/spec/unit/mutant/integration/rspec_spec.rb +0 -201
- data/spec/unit/mutant/integration_spec.rb +0 -150
- data/spec/unit/mutant/isolation/fork_spec.rb +0 -309
- data/spec/unit/mutant/isolation/none_spec.rb +0 -23
- data/spec/unit/mutant/isolation/result_spec.rb +0 -73
- data/spec/unit/mutant/license_spec.rb +0 -305
- data/spec/unit/mutant/loader_spec.rb +0 -79
- data/spec/unit/mutant/matcher/chain_spec.rb +0 -26
- data/spec/unit/mutant/matcher/compiler_spec.rb +0 -0
- data/spec/unit/mutant/matcher/config_spec.rb +0 -47
- data/spec/unit/mutant/matcher/filter_spec.rb +0 -22
- data/spec/unit/mutant/matcher/method/instance_spec.rb +0 -164
- data/spec/unit/mutant/matcher/method/metaclass_spec.rb +0 -108
- data/spec/unit/mutant/matcher/method/singleton_spec.rb +0 -90
- data/spec/unit/mutant/matcher/methods/instance_spec.rb +0 -54
- data/spec/unit/mutant/matcher/methods/metaclass_spec.rb +0 -62
- data/spec/unit/mutant/matcher/methods/singleton_spec.rb +0 -51
- data/spec/unit/mutant/matcher/namespace_spec.rb +0 -39
- data/spec/unit/mutant/matcher/null_spec.rb +0 -12
- data/spec/unit/mutant/matcher/scope_spec.rb +0 -45
- data/spec/unit/mutant/matcher/static_spec.rb +0 -13
- data/spec/unit/mutant/matcher_spec.rb +0 -102
- data/spec/unit/mutant/meta/example/dsl_spec.rb +0 -108
- data/spec/unit/mutant/meta/example/verification_spec.rb +0 -154
- data/spec/unit/mutant/meta/example_spec.rb +0 -34
- data/spec/unit/mutant/mutation_spec.rb +0 -140
- data/spec/unit/mutant/mutator/node_spec.rb +0 -47
- data/spec/unit/mutant/mutator_spec.rb +0 -21
- data/spec/unit/mutant/parallel/driver_spec.rb +0 -126
- data/spec/unit/mutant/parallel/source/array_spec.rb +0 -57
- data/spec/unit/mutant/parallel/worker_spec.rb +0 -206
- data/spec/unit/mutant/parallel_spec.rb +0 -115
- data/spec/unit/mutant/parser_spec.rb +0 -26
- data/spec/unit/mutant/range_spec.rb +0 -141
- data/spec/unit/mutant/registry_spec.rb +0 -74
- data/spec/unit/mutant/reporter/cli/printer/config_spec.rb +0 -17
- data/spec/unit/mutant/reporter/cli/printer/env_progress_spec.rb +0 -85
- data/spec/unit/mutant/reporter/cli/printer/env_result_spec.rb +0 -45
- data/spec/unit/mutant/reporter/cli/printer/isolation_result_spec.rb +0 -132
- data/spec/unit/mutant/reporter/cli/printer/mutation_progress_result_spec.rb +0 -25
- data/spec/unit/mutant/reporter/cli/printer/mutation_result_spec.rb +0 -153
- data/spec/unit/mutant/reporter/cli/printer/status_progressive_spec.rb +0 -45
- data/spec/unit/mutant/reporter/cli/printer/subject_progress_spec.rb +0 -36
- data/spec/unit/mutant/reporter/cli/printer/subject_result_spec.rb +0 -44
- data/spec/unit/mutant/reporter/cli/printer/test_result_spec.rb +0 -16
- data/spec/unit/mutant/reporter/cli/printer_spec.rb +0 -163
- data/spec/unit/mutant/reporter/cli_spec.rb +0 -137
- data/spec/unit/mutant/reporter/null_spec.rb +0 -14
- data/spec/unit/mutant/reporter/sequence_spec.rb +0 -31
- data/spec/unit/mutant/repository/diff/ranges_spec.rb +0 -180
- data/spec/unit/mutant/repository/diff_spec.rb +0 -122
- data/spec/unit/mutant/repository/subject_filter_spec.rb +0 -30
- data/spec/unit/mutant/require_highjack_spec.rb +0 -73
- data/spec/unit/mutant/result/class_methods_spec.rb +0 -51
- data/spec/unit/mutant/result/env_spec.rb +0 -161
- data/spec/unit/mutant/result/mutation_spec.rb +0 -70
- data/spec/unit/mutant/result/subject_spec.rb +0 -111
- data/spec/unit/mutant/result/test_spec.rb +0 -14
- data/spec/unit/mutant/result_spec.rb +0 -33
- data/spec/unit/mutant/runner/sink_spec.rb +0 -174
- data/spec/unit/mutant/runner_spec.rb +0 -121
- data/spec/unit/mutant/selector/expression_spec.rb +0 -62
- data/spec/unit/mutant/selector/null_spec.rb +0 -17
- data/spec/unit/mutant/subject/method/instance_spec.rb +0 -276
- data/spec/unit/mutant/subject/method/metaclass_spec.rb +0 -63
- data/spec/unit/mutant/subject/method/singleton_spec.rb +0 -61
- data/spec/unit/mutant/subject_spec.rb +0 -93
- data/spec/unit/mutant/transform/array_spec.rb +0 -92
- data/spec/unit/mutant/transform/bool_spec.rb +0 -63
- data/spec/unit/mutant/transform/error_spec.rb +0 -132
- data/spec/unit/mutant/transform/exception_spec.rb +0 -44
- data/spec/unit/mutant/transform/hash_spec.rb +0 -236
- data/spec/unit/mutant/transform/index_spec.rb +0 -92
- data/spec/unit/mutant/transform/named_spec.rb +0 -49
- data/spec/unit/mutant/transform/primitive_spec.rb +0 -56
- data/spec/unit/mutant/transform/sequence_spec.rb +0 -98
- data/spec/unit/mutant/util/one_spec.rb +0 -22
- data/spec/unit/mutant/warnings_spec.rb +0 -89
- data/spec/unit/mutant/world_spec.rb +0 -63
- data/spec/unit/mutant/zombifier_spec.rb +0 -122
- data/test_app/.rspec +0 -1
- data/test_app/Gemfile.minitest +0 -6
- data/test_app/Gemfile.rspec3.8 +0 -7
- data/test_app/lib/test_app.rb +0 -114
- data/test_app/lib/test_app/literal.rb +0 -35
- data/test_app/lib/test_app/metaclasses.rb +0 -108
- data/test_app/spec/spec_helper.rb +0 -9
- data/test_app/spec/unit/test_app/literal_spec.rb +0 -20
- data/test_app/test/unit/test_app/literal_test.rb +0 -16
@@ -1,26 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe Mutant::Parser do
|
4
|
-
let(:object) { described_class.new }
|
5
|
-
|
6
|
-
describe '#call' do
|
7
|
-
let(:path) { instance_double(Pathname) }
|
8
|
-
|
9
|
-
subject { object.call(path) }
|
10
|
-
|
11
|
-
before do
|
12
|
-
expect(path).to receive(:read)
|
13
|
-
.with(no_args)
|
14
|
-
.and_return(':source')
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'returns parsed source' do
|
18
|
-
expect(subject).to eql(s(:sym, :source))
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'is idempotent' do
|
22
|
-
source = object.call(path)
|
23
|
-
expect(subject).to be(source)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,141 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
describe Mutant::Range do
|
4
|
-
describe '.overlap?' do
|
5
|
-
def apply
|
6
|
-
described_class.overlap?(left, right)
|
7
|
-
end
|
8
|
-
|
9
|
-
context 'no overlap left before right' do
|
10
|
-
# |---|
|
11
|
-
# |---|
|
12
|
-
let(:left) { 1..2 }
|
13
|
-
let(:right) { 3..4 }
|
14
|
-
|
15
|
-
it 'returns false' do
|
16
|
-
expect(apply).to be(false)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
context 'no overlap right before left' do
|
21
|
-
# |---|
|
22
|
-
# |---|
|
23
|
-
let(:left) { 3..4 }
|
24
|
-
let(:right) { 1..2 }
|
25
|
-
|
26
|
-
it 'returns false' do
|
27
|
-
expect(apply).to be(false)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
context 'left includes right' do
|
32
|
-
# |----------------|
|
33
|
-
# |---|
|
34
|
-
let(:left) { 1..4 }
|
35
|
-
let(:right) { 2..3 }
|
36
|
-
|
37
|
-
it 'returns true' do
|
38
|
-
expect(apply).to be(true)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
context 'right includes left' do
|
43
|
-
# |---|
|
44
|
-
# |----------------|
|
45
|
-
let(:left) { 2..3 }
|
46
|
-
let(:right) { 1..4 }
|
47
|
-
|
48
|
-
it 'returns true' do
|
49
|
-
expect(apply).to be(true)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
context 'right starts with left end' do
|
54
|
-
# |----|
|
55
|
-
# |----|
|
56
|
-
let(:left) { 1..2 }
|
57
|
-
let(:right) { 2..3 }
|
58
|
-
|
59
|
-
it 'returns true' do
|
60
|
-
expect(apply).to be(true)
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
context 'left starts with right end' do
|
65
|
-
# |----|
|
66
|
-
# |----|
|
67
|
-
let(:left) { 2..3 }
|
68
|
-
let(:right) { 1..2 }
|
69
|
-
|
70
|
-
it 'returns true' do
|
71
|
-
expect(apply).to be(true)
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
context 'left starts with right start' do
|
76
|
-
# |----|
|
77
|
-
# |---------|
|
78
|
-
let(:left) { 1..2 }
|
79
|
-
let(:right) { 1..3 }
|
80
|
-
|
81
|
-
it 'returns true' do
|
82
|
-
expect(apply).to be(true)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
context 'left starts with right start' do
|
87
|
-
# |---------|
|
88
|
-
# |----|
|
89
|
-
let(:left) { 1..3 }
|
90
|
-
let(:right) { 1..2 }
|
91
|
-
|
92
|
-
it 'returns true' do
|
93
|
-
expect(apply).to be(true)
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
context 'left ends with right end' do
|
98
|
-
# |----|
|
99
|
-
# |---------|
|
100
|
-
let(:left) { 2..3 }
|
101
|
-
let(:right) { 1..3 }
|
102
|
-
|
103
|
-
it 'returns true' do
|
104
|
-
expect(apply).to be(true)
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
context 'right ends with left end' do
|
109
|
-
# |---------|
|
110
|
-
# |----|
|
111
|
-
let(:left) { 1..3 }
|
112
|
-
let(:right) { 2..3 }
|
113
|
-
|
114
|
-
it 'returns true' do
|
115
|
-
expect(apply).to be(true)
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
context 'left end intersects with right' do
|
120
|
-
# |---------|
|
121
|
-
# |----------|
|
122
|
-
let(:left) { 1..3 }
|
123
|
-
let(:right) { 2..4 }
|
124
|
-
|
125
|
-
it 'returns true' do
|
126
|
-
expect(apply).to be(true)
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
context 'right end intersects with left' do
|
131
|
-
# |----------|
|
132
|
-
# |---------|
|
133
|
-
let(:left) { 2..4 }
|
134
|
-
let(:right) { 1..2 }
|
135
|
-
|
136
|
-
it 'returns true' do
|
137
|
-
expect(apply).to be(true)
|
138
|
-
end
|
139
|
-
end
|
140
|
-
end
|
141
|
-
end
|
@@ -1,74 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe Mutant::Registry do
|
4
|
-
let(:mutator) { class_double(Mutant::Mutator) }
|
5
|
-
let(:object) { described_class.new }
|
6
|
-
|
7
|
-
describe '#lookup' do
|
8
|
-
subject { object.lookup(type) }
|
9
|
-
|
10
|
-
def register
|
11
|
-
object.register(type, mutator)
|
12
|
-
end
|
13
|
-
|
14
|
-
context 'on known type' do
|
15
|
-
let(:type) { :true }
|
16
|
-
|
17
|
-
it 'returns registered' do
|
18
|
-
register
|
19
|
-
expect(subject).to be(mutator)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
context 'on unknown type' do
|
24
|
-
let(:type) { :unknown }
|
25
|
-
|
26
|
-
it 'returns genericm mutator' do
|
27
|
-
expect(subject).to be(Mutant::Mutator::Node::Generic)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
describe '#register' do
|
33
|
-
subject { object.register(type, mutator) }
|
34
|
-
|
35
|
-
def lookup
|
36
|
-
subject.lookup(type)
|
37
|
-
end
|
38
|
-
|
39
|
-
context 'on registered type' do
|
40
|
-
let(:type) { :true }
|
41
|
-
|
42
|
-
it_behaves_like 'a command method'
|
43
|
-
|
44
|
-
it 'allows to lookup the mutator' do
|
45
|
-
subject
|
46
|
-
expect(lookup).to be(mutator)
|
47
|
-
end
|
48
|
-
|
49
|
-
context 'when registering twice' do
|
50
|
-
it 'fails upon registration' do
|
51
|
-
object.register(type, mutator)
|
52
|
-
|
53
|
-
expect { subject }
|
54
|
-
.to raise_error(
|
55
|
-
described_class::RegistryError,
|
56
|
-
'Duplicate type registration: :true'
|
57
|
-
)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
context 'when registering an invalid node type' do
|
63
|
-
let(:type) { :invalid }
|
64
|
-
|
65
|
-
it 'raises error' do
|
66
|
-
expect { subject }
|
67
|
-
.to raise_error(
|
68
|
-
described_class::RegistryError,
|
69
|
-
'Invalid type registration: :invalid'
|
70
|
-
)
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe Mutant::Reporter::CLI::Printer::Config do
|
4
|
-
setup_shared_context
|
5
|
-
|
6
|
-
let(:reportable) { config }
|
7
|
-
|
8
|
-
describe '.call' do
|
9
|
-
it_reports(<<~'REPORT')
|
10
|
-
Matcher: #<Mutant::Matcher::Config empty>
|
11
|
-
Integration: null
|
12
|
-
Jobs: 1
|
13
|
-
Includes: []
|
14
|
-
Requires: []
|
15
|
-
REPORT
|
16
|
-
end
|
17
|
-
end
|
@@ -1,85 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe Mutant::Reporter::CLI::Printer::EnvProgress do
|
4
|
-
setup_shared_context
|
5
|
-
|
6
|
-
let(:reportable) { env_result }
|
7
|
-
|
8
|
-
describe '.call' do
|
9
|
-
context 'without progress' do
|
10
|
-
with(:subject_a_result) { { mutation_results: [] } }
|
11
|
-
|
12
|
-
it_reports <<~'STR'
|
13
|
-
Mutant environment:
|
14
|
-
Matcher: #<Mutant::Matcher::Config empty>
|
15
|
-
Integration: null
|
16
|
-
Jobs: 1
|
17
|
-
Includes: []
|
18
|
-
Requires: []
|
19
|
-
Subjects: 1
|
20
|
-
Total-Tests: 1
|
21
|
-
Selected-Tests: 1
|
22
|
-
Tests/Subject: 1.00 avg
|
23
|
-
Mutations: 2
|
24
|
-
Results: 0
|
25
|
-
Kills: 0
|
26
|
-
Alive: 0
|
27
|
-
Runtime: 4.00s
|
28
|
-
Killtime: 0.00s
|
29
|
-
Overhead: Inf%
|
30
|
-
Mutations/s: 0.00
|
31
|
-
Coverage: 100.00%
|
32
|
-
STR
|
33
|
-
end
|
34
|
-
|
35
|
-
context 'on full coverage' do
|
36
|
-
it_reports <<~'STR'
|
37
|
-
Mutant environment:
|
38
|
-
Matcher: #<Mutant::Matcher::Config empty>
|
39
|
-
Integration: null
|
40
|
-
Jobs: 1
|
41
|
-
Includes: []
|
42
|
-
Requires: []
|
43
|
-
Subjects: 1
|
44
|
-
Total-Tests: 1
|
45
|
-
Selected-Tests: 1
|
46
|
-
Tests/Subject: 1.00 avg
|
47
|
-
Mutations: 2
|
48
|
-
Results: 2
|
49
|
-
Kills: 2
|
50
|
-
Alive: 0
|
51
|
-
Runtime: 4.00s
|
52
|
-
Killtime: 2.00s
|
53
|
-
Overhead: 100.00%
|
54
|
-
Mutations/s: 0.50
|
55
|
-
Coverage: 100.00%
|
56
|
-
STR
|
57
|
-
end
|
58
|
-
|
59
|
-
context 'on partial coverage' do
|
60
|
-
with(:mutation_a_test_result) { { passed: true } }
|
61
|
-
|
62
|
-
it_reports <<~'STR'
|
63
|
-
Mutant environment:
|
64
|
-
Matcher: #<Mutant::Matcher::Config empty>
|
65
|
-
Integration: null
|
66
|
-
Jobs: 1
|
67
|
-
Includes: []
|
68
|
-
Requires: []
|
69
|
-
Subjects: 1
|
70
|
-
Total-Tests: 1
|
71
|
-
Selected-Tests: 1
|
72
|
-
Tests/Subject: 1.00 avg
|
73
|
-
Mutations: 2
|
74
|
-
Results: 2
|
75
|
-
Kills: 1
|
76
|
-
Alive: 1
|
77
|
-
Runtime: 4.00s
|
78
|
-
Killtime: 2.00s
|
79
|
-
Overhead: 100.00%
|
80
|
-
Mutations/s: 0.50
|
81
|
-
Coverage: 50.00%
|
82
|
-
STR
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe Mutant::Reporter::CLI::Printer::EnvResult do
|
4
|
-
setup_shared_context
|
5
|
-
|
6
|
-
with(:mutation_a_test_result) { { passed: true } }
|
7
|
-
|
8
|
-
let(:reportable) { env_result }
|
9
|
-
|
10
|
-
describe '.call' do
|
11
|
-
it_reports <<~'STR'
|
12
|
-
subject-a
|
13
|
-
- test-a
|
14
|
-
evil:subject-a:d27d2
|
15
|
-
@@ -1 +1 @@
|
16
|
-
-true
|
17
|
-
+false
|
18
|
-
-----------------------
|
19
|
-
- 1 @ runtime: 1.0
|
20
|
-
- test-a
|
21
|
-
Test Output:
|
22
|
-
mutation a test result output
|
23
|
-
-----------------------
|
24
|
-
Mutant environment:
|
25
|
-
Matcher: #<Mutant::Matcher::Config empty>
|
26
|
-
Integration: null
|
27
|
-
Jobs: 1
|
28
|
-
Includes: []
|
29
|
-
Requires: []
|
30
|
-
Subjects: 1
|
31
|
-
Total-Tests: 1
|
32
|
-
Selected-Tests: 1
|
33
|
-
Tests/Subject: 1.00 avg
|
34
|
-
Mutations: 2
|
35
|
-
Results: 2
|
36
|
-
Kills: 1
|
37
|
-
Alive: 1
|
38
|
-
Runtime: 4.00s
|
39
|
-
Killtime: 2.00s
|
40
|
-
Overhead: 100.00%
|
41
|
-
Mutations/s: 0.50
|
42
|
-
Coverage: 50.00%
|
43
|
-
STR
|
44
|
-
end
|
45
|
-
end
|
@@ -1,132 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe Mutant::Reporter::CLI::Printer::IsolationResult do
|
4
|
-
setup_shared_context
|
5
|
-
|
6
|
-
describe '.call' do
|
7
|
-
context 'on sucessful isolation' do
|
8
|
-
let(:reportable) do
|
9
|
-
Mutant::Isolation::Result::Success.new(mutation_a_test_result)
|
10
|
-
end
|
11
|
-
|
12
|
-
it_reports <<~'STR'
|
13
|
-
- 1 @ runtime: 1.0
|
14
|
-
- test-a
|
15
|
-
Test Output:
|
16
|
-
mutation a test result output
|
17
|
-
STR
|
18
|
-
end
|
19
|
-
|
20
|
-
context 'on exception isolation error' do
|
21
|
-
let(:exception) do
|
22
|
-
Class.new(RuntimeError) do
|
23
|
-
def inspect
|
24
|
-
'<TestException>'
|
25
|
-
end
|
26
|
-
|
27
|
-
def backtrace
|
28
|
-
%w[first last]
|
29
|
-
end
|
30
|
-
end.new('foo')
|
31
|
-
end
|
32
|
-
|
33
|
-
let(:reportable) do
|
34
|
-
Mutant::Isolation::Result::Exception.new(exception)
|
35
|
-
end
|
36
|
-
|
37
|
-
it_reports <<~'STR'
|
38
|
-
Killing the mutation resulted in an integration error.
|
39
|
-
This is the case when the tests selected for the current mutation
|
40
|
-
did not produce a test result, but instead an exception was raised.
|
41
|
-
|
42
|
-
This may point to the following problems:
|
43
|
-
* Bug in mutant
|
44
|
-
* Bug in the ruby interpreter
|
45
|
-
* Bug in your test suite
|
46
|
-
* Bug in your test suite under concurrency
|
47
|
-
|
48
|
-
The following exception was raised:
|
49
|
-
|
50
|
-
```
|
51
|
-
<TestException>
|
52
|
-
first
|
53
|
-
last
|
54
|
-
```
|
55
|
-
STR
|
56
|
-
end
|
57
|
-
|
58
|
-
context 'on fork isolation error' do
|
59
|
-
let(:reportable) do
|
60
|
-
Mutant::Isolation::Fork::ForkError.new
|
61
|
-
end
|
62
|
-
|
63
|
-
it_reports <<~'STR'
|
64
|
-
Forking the child process to isolate the mutation in failed.
|
65
|
-
This meant that either the RubyVM or your OS was under too much
|
66
|
-
pressure to add another child process.
|
67
|
-
|
68
|
-
Possible solutions are:
|
69
|
-
* Reduce concurrency
|
70
|
-
* Reduce locks
|
71
|
-
STR
|
72
|
-
end
|
73
|
-
|
74
|
-
context 'on child isolation error' do
|
75
|
-
let(:reportable) do
|
76
|
-
Mutant::Isolation::Fork::ChildError.new(
|
77
|
-
instance_double(
|
78
|
-
Process::Status,
|
79
|
-
'unsuccessful status'
|
80
|
-
),
|
81
|
-
'log message'
|
82
|
-
)
|
83
|
-
end
|
84
|
-
|
85
|
-
it_reports <<~'STR'
|
86
|
-
Killfork exited nonzero. Its result (if any) was ignored.
|
87
|
-
Process status:
|
88
|
-
#<InstanceDouble(Process::Status) "unsuccessful status">
|
89
|
-
Log messages (combined stderr and stdout):
|
90
|
-
log message
|
91
|
-
STR
|
92
|
-
end
|
93
|
-
|
94
|
-
context 'on child isolation error' do
|
95
|
-
let(:fork_error) do
|
96
|
-
Mutant::Isolation::Fork::ForkError.new
|
97
|
-
end
|
98
|
-
|
99
|
-
let(:child_error) do
|
100
|
-
Mutant::Isolation::Fork::ChildError.new(
|
101
|
-
instance_double(
|
102
|
-
Process::Status,
|
103
|
-
'unsuccessful status'
|
104
|
-
),
|
105
|
-
'log message'
|
106
|
-
)
|
107
|
-
end
|
108
|
-
|
109
|
-
let(:reportable) do
|
110
|
-
Mutant::Isolation::Result::ErrorChain.new(
|
111
|
-
fork_error,
|
112
|
-
child_error
|
113
|
-
)
|
114
|
-
end
|
115
|
-
|
116
|
-
it_reports <<~'STR'
|
117
|
-
Forking the child process to isolate the mutation in failed.
|
118
|
-
This meant that either the RubyVM or your OS was under too much
|
119
|
-
pressure to add another child process.
|
120
|
-
|
121
|
-
Possible solutions are:
|
122
|
-
* Reduce concurrency
|
123
|
-
* Reduce locks
|
124
|
-
Killfork exited nonzero. Its result (if any) was ignored.
|
125
|
-
Process status:
|
126
|
-
#<InstanceDouble(Process::Status) "unsuccessful status">
|
127
|
-
Log messages (combined stderr and stdout):
|
128
|
-
log message
|
129
|
-
STR
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|