mutant 0.9.9 → 0.9.14
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 +2 -4
- data/lib/mutant/bootstrap.rb +14 -1
- data/lib/mutant/cli.rb +6 -0
- 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/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 +4 -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.rb +2 -2
- data/lib/mutant/reporter/cli/printer/isolation_result.rb +9 -3
- data/lib/mutant/reporter/cli/printer/mutation_result.rb +1 -1
- data/lib/mutant/subject/method/instance.rb +41 -2
- data/lib/mutant/version.rb +1 -1
- metadata +59 -347
- data/.github/workflows/ci.yml +0 -121
- data/.gitignore +0 -38
- data/.rspec +0 -5
- data/.rubocop.yml +0 -7
- data/Changelog.md +0 -81
- data/Gemfile +0 -7
- data/Gemfile.lock +0 -167
- data/Gemfile.shared +0 -10
- data/README.md +0 -178
- data/Rakefile +0 -5
- data/config/devtools.yml +0 -2
- data/config/reek.yml +0 -139
- data/config/rubocop.yml +0 -205
- 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/color.rb +0 -40
- data/lib/mutant/diff.rb +0 -97
- 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 -39
- 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 -41
- 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/base_behavior.rb +0 -45
- data/spec/shared/framework_integration_behavior.rb +0 -70
- data/spec/shared/method_matcher_behavior.rb +0 -47
- data/spec/spec_helper.rb +0 -75
- 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/test_app.rb +0 -7
- data/spec/support/warnings.yml +0 -6
- 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/diff_spec.rb +0 -189
- 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 -181
- 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 -4
- data/test_app/Gemfile.rspec3.8 +0 -7
- data/test_app/lib/test_app.rb +0 -110
- 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
data/Rakefile
DELETED
data/config/devtools.yml
DELETED
data/config/reek.yml
DELETED
@@ -1,139 +0,0 @@
|
|
1
|
-
---
|
2
|
-
detectors:
|
3
|
-
Attribute:
|
4
|
-
enabled: false
|
5
|
-
exclude: []
|
6
|
-
BooleanParameter:
|
7
|
-
enabled: true
|
8
|
-
exclude: []
|
9
|
-
ClassVariable:
|
10
|
-
enabled: true
|
11
|
-
exclude: []
|
12
|
-
ControlParameter:
|
13
|
-
enabled: true
|
14
|
-
exclude:
|
15
|
-
- Mutant::Expression#match_length
|
16
|
-
DataClump:
|
17
|
-
enabled: true
|
18
|
-
exclude: []
|
19
|
-
max_copies: 2
|
20
|
-
min_clump_size: 2
|
21
|
-
DuplicateMethodCall:
|
22
|
-
enabled: false
|
23
|
-
exclude: []
|
24
|
-
max_calls: 1
|
25
|
-
allow_calls: []
|
26
|
-
FeatureEnvy:
|
27
|
-
enabled: false
|
28
|
-
# Buggy smell detector
|
29
|
-
IrresponsibleModule:
|
30
|
-
enabled: false
|
31
|
-
exclude: []
|
32
|
-
LongParameterList:
|
33
|
-
enabled: true
|
34
|
-
exclude:
|
35
|
-
- Mutant::Matcher::Method::Instance#self.build
|
36
|
-
- Mutant::Meta::Example::DSL # 3 vars
|
37
|
-
max_params: 2
|
38
|
-
LongYieldList:
|
39
|
-
enabled: true
|
40
|
-
exclude: []
|
41
|
-
max_params: 2
|
42
|
-
NestedIterators:
|
43
|
-
enabled: true
|
44
|
-
exclude:
|
45
|
-
- Mutant#self.singleton_subclass_instance
|
46
|
-
- Mutant::CLI#parse
|
47
|
-
- Mutant::Mutator::Node::Arguments#emit_argument_mutations
|
48
|
-
- Mutant::Mutator::Node::Resbody#mutate_captures
|
49
|
-
- Mutant::Mutator::Util::Array::Element#dispatch
|
50
|
-
- Mutant::Parallel::Master#run
|
51
|
-
- Mutant::RequireHighjack#self.call
|
52
|
-
- Mutant::Selector::Expression#call
|
53
|
-
- Parser::Lexer#self.new
|
54
|
-
max_allowed_nesting: 1
|
55
|
-
ignore_iterators: []
|
56
|
-
NilCheck:
|
57
|
-
enabled: false
|
58
|
-
RepeatedConditional:
|
59
|
-
enabled: true
|
60
|
-
exclude:
|
61
|
-
- Mutant::Mutator
|
62
|
-
- Mutant::Meta::Example::DSL
|
63
|
-
max_ifs: 1
|
64
|
-
TooManyConstants:
|
65
|
-
enabled: false
|
66
|
-
TooManyInstanceVariables:
|
67
|
-
enabled: true
|
68
|
-
exclude:
|
69
|
-
- Mutant::Mutator # 4 vars
|
70
|
-
- Mutant::Parallel::Master # 4 vars
|
71
|
-
- Mutant::Meta::Example::DSL # 4 vars
|
72
|
-
max_instance_variables: 3
|
73
|
-
TooManyMethods:
|
74
|
-
enabled: true
|
75
|
-
exclude:
|
76
|
-
- Mutant::CLI
|
77
|
-
- Mutant::Mutator::Node
|
78
|
-
- Mutant::Parallel::Master
|
79
|
-
max_methods: 10
|
80
|
-
TooManyStatements:
|
81
|
-
enabled: true
|
82
|
-
exclude:
|
83
|
-
- Mutant::CLI#add_debug_options
|
84
|
-
- Mutant::CLI#add_environment_options
|
85
|
-
- Mutant::Reporter::CLI::Printer::Config#run
|
86
|
-
- Mutant::Reporter::CLI::Printer::EnvProgress#run
|
87
|
-
- Mutant::Runner#run_driver
|
88
|
-
- Mutant::Zombifier::File#self.find
|
89
|
-
max_statements: 7
|
90
|
-
UncommunicativeMethodName:
|
91
|
-
enabled: true
|
92
|
-
exclude:
|
93
|
-
- Mutant::AST::Sexp#s
|
94
|
-
- Mutant::Mutation#sha1
|
95
|
-
reject:
|
96
|
-
- '/^[a-z]$/'
|
97
|
-
- '/[0-9]$/'
|
98
|
-
- '/[A-Z]/'
|
99
|
-
accept: []
|
100
|
-
UncommunicativeModuleName:
|
101
|
-
enabled: true
|
102
|
-
exclude: []
|
103
|
-
reject:
|
104
|
-
- '/^.$/'
|
105
|
-
- '/[0-9]$/'
|
106
|
-
accept: []
|
107
|
-
UncommunicativeParameterName:
|
108
|
-
enabled: true
|
109
|
-
exclude: []
|
110
|
-
reject:
|
111
|
-
- '/^.$/'
|
112
|
-
- '/[0-9]$/'
|
113
|
-
- '/[A-Z]/'
|
114
|
-
accept: []
|
115
|
-
UncommunicativeVariableName:
|
116
|
-
enabled: true
|
117
|
-
exclude: []
|
118
|
-
reject:
|
119
|
-
- '/^.$/'
|
120
|
-
- '/[0-9]$/'
|
121
|
-
- '/[A-Z]/'
|
122
|
-
accept: ['force_utf32']
|
123
|
-
UnusedParameters:
|
124
|
-
enabled: true
|
125
|
-
exclude: []
|
126
|
-
UtilityFunction:
|
127
|
-
enabled: true
|
128
|
-
exclude:
|
129
|
-
- Mutant::AST::Sexp#s
|
130
|
-
- Mutant::CLI#reporter
|
131
|
-
- Mutant::Integration::Null#call
|
132
|
-
- Mutant::Integration::Rspec#parse_example
|
133
|
-
- Mutant::Integration::Rspec#parse_expression # intentional, private
|
134
|
-
- Mutant::Meta::Example::Verification#format_mutations # intentional, private
|
135
|
-
- Mutant::Reporter::CLI::Format::Progressive#new_buffer
|
136
|
-
- Mutant::Reporter::CLI::Printer::StatusProgressive#object # False positive calls super
|
137
|
-
- Mutant::Repository::Diff#tracks? # intentional, private
|
138
|
-
- Mutant::Repository::Diff#within_working_directory? # intentional, private
|
139
|
-
- Mutant::AST::FindMetaclassContaining#include_exact? # intentional, private
|
data/config/rubocop.yml
DELETED
@@ -1,205 +0,0 @@
|
|
1
|
-
inherit_from: ../.rubocop.yml
|
2
|
-
|
3
|
-
# Avoid parameter lists longer than five parameters.
|
4
|
-
ParameterLists:
|
5
|
-
Max: 3
|
6
|
-
CountKeywordArgs: true
|
7
|
-
|
8
|
-
# Avoid more than `Max` levels of nesting.
|
9
|
-
BlockNesting:
|
10
|
-
Max: 3
|
11
|
-
|
12
|
-
# Align with the style guide.
|
13
|
-
CollectionMethods:
|
14
|
-
Enabled: true
|
15
|
-
PreferredMethods:
|
16
|
-
collect: 'map'
|
17
|
-
inject: 'reduce'
|
18
|
-
find: 'detect'
|
19
|
-
find_all: 'select'
|
20
|
-
|
21
|
-
AccessModifierIndentation:
|
22
|
-
Enabled: false
|
23
|
-
|
24
|
-
# Limit line length
|
25
|
-
LineLength:
|
26
|
-
Max: 120
|
27
|
-
|
28
|
-
# Disable documentation checking until a class needs to be documented once
|
29
|
-
Documentation:
|
30
|
-
Enabled: false
|
31
|
-
|
32
|
-
# Permit
|
33
|
-
#
|
34
|
-
# boolean_check? or fail
|
35
|
-
#
|
36
|
-
# Reject
|
37
|
-
#
|
38
|
-
# if foo or bar
|
39
|
-
# ...
|
40
|
-
# end
|
41
|
-
AndOr:
|
42
|
-
EnforcedStyle: conditionals
|
43
|
-
|
44
|
-
# Do not favor modifier if/unless usage when you have a single-line body
|
45
|
-
IfUnlessModifier:
|
46
|
-
Enabled: false
|
47
|
-
|
48
|
-
# Allow case equality operator (in limited use within the specs)
|
49
|
-
CaseEquality:
|
50
|
-
Enabled: false
|
51
|
-
|
52
|
-
# Constants do not always have to use SCREAMING_SNAKE_CASE
|
53
|
-
ConstantName:
|
54
|
-
Enabled: false
|
55
|
-
|
56
|
-
# Not all trivial readers/writers can be defined with attr_* methods
|
57
|
-
TrivialAccessors:
|
58
|
-
Enabled: false
|
59
|
-
|
60
|
-
# Allow empty lines around class body
|
61
|
-
EmptyLinesAroundClassBody:
|
62
|
-
Enabled: false
|
63
|
-
|
64
|
-
# Allow empty lines around module body
|
65
|
-
EmptyLinesAroundModuleBody:
|
66
|
-
Enabled: false
|
67
|
-
|
68
|
-
# Allow empty lines around block body
|
69
|
-
EmptyLinesAroundBlockBody:
|
70
|
-
Enabled: false
|
71
|
-
|
72
|
-
# Allow multiple line operations to not require indentation
|
73
|
-
MultilineOperationIndentation:
|
74
|
-
Enabled: false
|
75
|
-
|
76
|
-
# Prefer String#% over Kernel#sprintf
|
77
|
-
FormatString:
|
78
|
-
EnforcedStyle: percent
|
79
|
-
|
80
|
-
# Use square brackets for literal Array objects
|
81
|
-
PercentLiteralDelimiters:
|
82
|
-
PreferredDelimiters:
|
83
|
-
'%': '{}'
|
84
|
-
'%i': '[]'
|
85
|
-
'%q': ()
|
86
|
-
'%Q': ()
|
87
|
-
'%r': '{}'
|
88
|
-
'%s': ()
|
89
|
-
'%w': '[]'
|
90
|
-
'%W': '[]'
|
91
|
-
'%x': ()
|
92
|
-
|
93
|
-
# Use %i[...] for arrays of symbols
|
94
|
-
SymbolArray:
|
95
|
-
Enabled: true
|
96
|
-
|
97
|
-
# Prefer #kind_of? over #is_a?
|
98
|
-
ClassCheck:
|
99
|
-
EnforcedStyle: kind_of?
|
100
|
-
|
101
|
-
# Do not prefer double quotes to be used when %q or %Q is more appropriate
|
102
|
-
Style/RedundantPercentQ:
|
103
|
-
Enabled: false
|
104
|
-
|
105
|
-
# Allow a maximum ABC score
|
106
|
-
Metrics/AbcSize:
|
107
|
-
Max: 21.02
|
108
|
-
|
109
|
-
Metrics/BlockLength:
|
110
|
-
Exclude:
|
111
|
-
- 'spec/**/*.rb'
|
112
|
-
- 'mutant.gemspec'
|
113
|
-
|
114
|
-
# Buggy cop, returns false positive for our code base
|
115
|
-
NonLocalExitFromIterator:
|
116
|
-
Enabled: false
|
117
|
-
|
118
|
-
# To allow alignment of similar expressions we want to allow more than one
|
119
|
-
# space around operators:
|
120
|
-
#
|
121
|
-
# let(:a) { bar + something }
|
122
|
-
# let(:b) { foobar + something }
|
123
|
-
#
|
124
|
-
SpaceAroundOperators:
|
125
|
-
Enabled: false
|
126
|
-
|
127
|
-
# We use parallel assignments with great success
|
128
|
-
ParallelAssignment:
|
129
|
-
Enabled: false
|
130
|
-
|
131
|
-
# Allow additional specs
|
132
|
-
ExtraSpacing:
|
133
|
-
AllowForAlignment: true
|
134
|
-
|
135
|
-
# Buggy
|
136
|
-
FormatParameterMismatch:
|
137
|
-
Enabled: false
|
138
|
-
|
139
|
-
# Different preference
|
140
|
-
SignalException:
|
141
|
-
EnforcedStyle: semantic
|
142
|
-
|
143
|
-
# Do not use `alias`
|
144
|
-
Alias:
|
145
|
-
EnforcedStyle: prefer_alias_method
|
146
|
-
|
147
|
-
# Do not waste my horizontal or vertical space
|
148
|
-
Layout/FirstArrayElementIndentation:
|
149
|
-
Enabled: false
|
150
|
-
|
151
|
-
# Prefer
|
152
|
-
#
|
153
|
-
# some_receiver
|
154
|
-
# .foo
|
155
|
-
# .bar
|
156
|
-
# .baz
|
157
|
-
#
|
158
|
-
# Over
|
159
|
-
#
|
160
|
-
# some_receiver.foo
|
161
|
-
# .bar
|
162
|
-
# .baz
|
163
|
-
MultilineMethodCallIndentation:
|
164
|
-
EnforcedStyle: indented
|
165
|
-
|
166
|
-
# Prefer `public_send` and `__send__` over `send`
|
167
|
-
Send:
|
168
|
-
Enabled: true
|
169
|
-
|
170
|
-
Layout/HashAlignment:
|
171
|
-
EnforcedColonStyle: table
|
172
|
-
EnforcedHashRocketStyle: table
|
173
|
-
Layout/EmptyLineAfterGuardClause:
|
174
|
-
Enabled: false
|
175
|
-
Layout/SpaceInsideArrayLiteralBrackets:
|
176
|
-
Enabled: false
|
177
|
-
Lint/BooleanSymbol:
|
178
|
-
Enabled: false
|
179
|
-
Lint/InterpolationCheck:
|
180
|
-
Enabled: false
|
181
|
-
Lint/MissingCopEnableDirective:
|
182
|
-
Enabled: false
|
183
|
-
Lint/UnifiedInteger:
|
184
|
-
Enabled: false
|
185
|
-
Naming/FileName:
|
186
|
-
Enabled: false
|
187
|
-
Style/AccessModifierDeclarations:
|
188
|
-
Enabled: false
|
189
|
-
Style/CommentedKeyword:
|
190
|
-
Enabled: false
|
191
|
-
Style/MixinGrouping:
|
192
|
-
Enabled: false
|
193
|
-
Style/RaiseArgs:
|
194
|
-
Enabled: false
|
195
|
-
Style/RescueStandardError:
|
196
|
-
Enabled: false
|
197
|
-
Style/StderrPuts:
|
198
|
-
Enabled: false
|
199
|
-
# suggesting single letter variablesl bah
|
200
|
-
Naming/RescuedExceptionsVariableName:
|
201
|
-
Enabled: false
|
202
|
-
# false positive on private keywords
|
203
|
-
Layout/IndentationWidth:
|
204
|
-
Enabled: false
|
205
|
-
|
data/config/yardstick.yml
DELETED
data/docs/commercial-support.md
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
# Commercial Support
|
2
|
-
|
3
|
-
Mutant offers only community support.
|
4
|
-
|
5
|
-
Commercial license customers are entited to priority support via email.
|
6
|
-
|
7
|
-
## Priority Support
|
8
|
-
|
9
|
-
Covers 1 incident per quarter, with a max response time of 7 days.
|
10
|
-
Scope is limited to mutant not the application or infrastructure.
|
11
|
-
|
12
|
-
For support email [Markus Schirp](mailto:mbj@schirp-dso.com?subject=Mutant%20Support).
|
13
|
-
Please email using the same domain as the roiginal license email or explain
|
14
|
-
your connection to the license.
|
data/docs/concurrency.md
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
Concurrency
|
2
|
-
===========
|
3
|
-
|
4
|
-
By default, mutant will test mutations in parallel by running up
|
5
|
-
to one process for each core on your system. You can control the
|
6
|
-
number of processes created using the `-j/--jobs` argument.
|
7
|
-
|
8
|
-
Mutant forks a new process for each mutation to be tested to prevent side
|
9
|
-
affects in your specs and the lack of thread safety in integrations from
|
10
|
-
impacting the results.
|
11
|
-
|
12
|
-
Database
|
13
|
-
--------
|
14
|
-
|
15
|
-
If the code under test relies on a database, you may experience problems
|
16
|
-
when running mutant because of conflicting data in the database. For
|
17
|
-
example, if you have a test like this:
|
18
|
-
|
19
|
-
```ruby
|
20
|
-
resource = MyModel.create!(...)
|
21
|
-
expect(MyModel.first.name).to eql(resource.name)
|
22
|
-
```
|
23
|
-
|
24
|
-
It might fail if some other test wrote a record to the `MyModel` table
|
25
|
-
at the same time as this test was executed. (It would find the MyModel
|
26
|
-
record created by the other test.) Most of these issues can be fixed
|
27
|
-
by writing more specific tests. Here is a concurrent safe version of
|
28
|
-
the same test:
|
29
|
-
|
30
|
-
```
|
31
|
-
resource = MyModel.create!(...)
|
32
|
-
expect(MyModel.find_by_id(m.id).name).to eql(resource.name)
|
33
|
-
```
|
34
|
-
|
35
|
-
An alternative is to try wrapping each test into an enclosing transaction.
|
36
|
-
|
37
|
-
Note that some databases, SQLite in particular, are not designed for
|
38
|
-
concurrent access and will fail if used in this manner. If you are
|
39
|
-
using SQLite, you should set the `--jobs` to 1.
|
data/docs/incremental.md
DELETED
@@ -1,76 +0,0 @@
|
|
1
|
-
# Incremental mutation testing
|
2
|
-
|
3
|
-
Incremental mutation testing allows you to significantly speed up mutation
|
4
|
-
analysis, via skipping over subjects that are not changed.
|
5
|
-
|
6
|
-
This is an explicit trade off, often worth the downsides.
|
7
|
-
|
8
|
-
## Motivation
|
9
|
-
|
10
|
-
Despite all efforts in setting up a project for maximum mutation testing
|
11
|
-
efficiency, running a full pass over all available subjects is not always
|
12
|
-
desired. On building your branches on CI, and during local commit stage, its
|
13
|
-
instead more efficient to scope the Mutant run to everything that was
|
14
|
-
touched in the current branch / commit. The working set of subjects.
|
15
|
-
|
16
|
-
For not having to manually keep track of the working set, the `--since` option
|
17
|
-
allows you to specify a git reference point. Mutant will automatically subset all
|
18
|
-
available subjects to the ones that where touched since the reference point.
|
19
|
-
|
20
|
-
## Usage
|
21
|
-
|
22
|
-
Use the `--since git-reference` flag to enable automatic filtering of the
|
23
|
-
matched subjects to the ones that have a line changed since the reference
|
24
|
-
point.
|
25
|
-
|
26
|
-
Internally mutant will use the semantics of `git diff git-reference` to
|
27
|
-
determine which subjects have changes. A subject is selected by this mechanism
|
28
|
-
when `git diff` reports a hunk that overlaps with the current subjects line
|
29
|
-
range.
|
30
|
-
|
31
|
-
## Example
|
32
|
-
|
33
|
-
On a branch, executing:
|
34
|
-
|
35
|
-
```
|
36
|
-
mutant --since master 'ProjectNamespace*'
|
37
|
-
```
|
38
|
-
|
39
|
-
Will run mutation testing against all subjects that have a direct source code
|
40
|
-
since the `master` branch. Assuming your project has 100 subjects, and you
|
41
|
-
touched 2 of them in your branch: Mutant will only select these 2 subjects for
|
42
|
-
mutation testing.
|
43
|
-
|
44
|
-
## Recommended use
|
45
|
-
|
46
|
-
Use incremental for any project where a full pass does not fit within acceptable
|
47
|
-
round trip times for the human mind.
|
48
|
-
|
49
|
-
A small 200 loc gem, should probably never use it. Typically its the local per
|
50
|
-
developer environment that should use incremental first. On CI its recommended
|
51
|
-
to stay with the full pass as long as possible and switch to incremental mode
|
52
|
-
when the CI cycle time gets too annoying.
|
53
|
-
|
54
|
-
In addition, once using incremental its recommended to run a full pass as a
|
55
|
-
nightly job.
|
56
|
-
|
57
|
-
Incremental is also a good mode to retrofit mutation testing into a legacy
|
58
|
-
project.
|
59
|
-
|
60
|
-
Good selectors for reference points are `HEAD~1` (the previous commit) or
|
61
|
-
`master` (the integration branch).
|
62
|
-
|
63
|
-
## Limitations
|
64
|
-
|
65
|
-
Mutant only triggers incremental subject selection for *direct* code changes.
|
66
|
-
It'll currently not select subjects that where indirectly changed.
|
67
|
-
|
68
|
-
Counter examples:
|
69
|
-
|
70
|
-
* A change to a constant that results in a behavior change of a subject will
|
71
|
-
not trigger that subject to be selected.
|
72
|
-
* A change to a subject A that causes another subject B to change in behavior,
|
73
|
-
will not select subject B.
|
74
|
-
|
75
|
-
These limitations may be removed in future versions of mutant, work on more
|
76
|
-
fine grained tracing is underway.
|