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.
Files changed (252) hide show
  1. checksums.yaml +4 -4
  2. data/lib/mutant.rb +2 -4
  3. data/lib/mutant/bootstrap.rb +14 -1
  4. data/lib/mutant/cli.rb +6 -0
  5. data/lib/mutant/isolation.rb +1 -1
  6. data/lib/mutant/isolation/fork.rb +2 -2
  7. data/lib/mutant/isolation/none.rb +1 -1
  8. data/lib/mutant/matcher/config.rb +2 -0
  9. data/lib/mutant/meta/example.rb +16 -4
  10. data/lib/mutant/meta/example/dsl.rb +33 -16
  11. data/lib/mutant/meta/example/verification.rb +70 -28
  12. data/lib/mutant/minitest/coverage.rb +53 -0
  13. data/lib/mutant/mutator/node.rb +2 -2
  14. data/lib/mutant/mutator/node/block_pass.rb +29 -0
  15. data/lib/mutant/mutator/node/{dstr.rb → dynamic_literal.rb} +7 -5
  16. data/lib/mutant/mutator/node/index.rb +4 -4
  17. data/lib/mutant/mutator/node/literal/range.rb +4 -1
  18. data/lib/mutant/mutator/node/noop.rb +1 -1
  19. data/lib/mutant/mutator/node/op_asgn.rb +15 -1
  20. data/lib/mutant/mutator/node/send.rb +25 -1
  21. data/lib/mutant/mutator/node/send/attribute_assignment.rb +1 -0
  22. data/lib/mutant/reporter/cli/printer.rb +2 -2
  23. data/lib/mutant/reporter/cli/printer/isolation_result.rb +9 -3
  24. data/lib/mutant/reporter/cli/printer/mutation_result.rb +1 -1
  25. data/lib/mutant/subject/method/instance.rb +41 -2
  26. data/lib/mutant/version.rb +1 -1
  27. metadata +59 -347
  28. data/.github/workflows/ci.yml +0 -121
  29. data/.gitignore +0 -38
  30. data/.rspec +0 -5
  31. data/.rubocop.yml +0 -7
  32. data/Changelog.md +0 -81
  33. data/Gemfile +0 -7
  34. data/Gemfile.lock +0 -167
  35. data/Gemfile.shared +0 -10
  36. data/README.md +0 -178
  37. data/Rakefile +0 -5
  38. data/config/devtools.yml +0 -2
  39. data/config/reek.yml +0 -139
  40. data/config/rubocop.yml +0 -205
  41. data/config/yardstick.yml +0 -2
  42. data/docs/commercial-support.md +0 -14
  43. data/docs/concurrency.md +0 -39
  44. data/docs/incremental.md +0 -76
  45. data/docs/known-problems.md +0 -30
  46. data/docs/limitations.md +0 -50
  47. data/docs/mutant-minitest.md +0 -149
  48. data/docs/mutant-rspec.md +0 -130
  49. data/docs/nomenclature.md +0 -82
  50. data/docs/reading-reports.md +0 -74
  51. data/lib/mutant/color.rb +0 -40
  52. data/lib/mutant/diff.rb +0 -97
  53. data/lib/mutant/mutator/node/dsym.rb +0 -22
  54. data/meta/and.rb +0 -13
  55. data/meta/and_asgn.rb +0 -14
  56. data/meta/array.rb +0 -27
  57. data/meta/begin.rb +0 -20
  58. data/meta/block.rb +0 -199
  59. data/meta/block_pass.rb +0 -8
  60. data/meta/blockarg.rb +0 -10
  61. data/meta/break.rb +0 -9
  62. data/meta/case.rb +0 -217
  63. data/meta/casgn.rb +0 -25
  64. data/meta/cbase.rb +0 -8
  65. data/meta/class.rb +0 -12
  66. data/meta/const.rb +0 -17
  67. data/meta/csend.rb +0 -10
  68. data/meta/cvar.rb +0 -7
  69. data/meta/cvasgn.rb +0 -9
  70. data/meta/date.rb +0 -59
  71. data/meta/def.rb +0 -196
  72. data/meta/defined.rb +0 -9
  73. data/meta/dstr.rb +0 -13
  74. data/meta/dsym.rb +0 -14
  75. data/meta/ensure.rb +0 -8
  76. data/meta/false.rb +0 -7
  77. data/meta/file.rb +0 -5
  78. data/meta/float.rb +0 -37
  79. data/meta/gvar.rb +0 -7
  80. data/meta/gvasgn.rb +0 -9
  81. data/meta/hash.rb +0 -20
  82. data/meta/if.rb +0 -72
  83. data/meta/index.rb +0 -133
  84. data/meta/indexasgn.rb +0 -31
  85. data/meta/int.rb +0 -18
  86. data/meta/ivar.rb +0 -8
  87. data/meta/ivasgn.rb +0 -22
  88. data/meta/kwarg.rb +0 -10
  89. data/meta/kwbegin.rb +0 -8
  90. data/meta/kwoptarg.rb +0 -13
  91. data/meta/lambda.rb +0 -23
  92. data/meta/line.rb +0 -5
  93. data/meta/lvar.rb +0 -16
  94. data/meta/lvasgn.rb +0 -24
  95. data/meta/masgn.rb +0 -7
  96. data/meta/match_current_line.rb +0 -14
  97. data/meta/next.rb +0 -10
  98. data/meta/nil.rb +0 -5
  99. data/meta/nthref.rb +0 -14
  100. data/meta/op_assgn.rb +0 -17
  101. data/meta/or.rb +0 -13
  102. data/meta/or_asgn.rb +0 -50
  103. data/meta/range.rb +0 -39
  104. data/meta/redo.rb +0 -5
  105. data/meta/regexp.rb +0 -80
  106. data/meta/regopt.rb +0 -10
  107. data/meta/rescue.rb +0 -84
  108. data/meta/return.rb +0 -16
  109. data/meta/sclass.rb +0 -12
  110. data/meta/self.rb +0 -7
  111. data/meta/send.rb +0 -600
  112. data/meta/str.rb +0 -7
  113. data/meta/super.rb +0 -27
  114. data/meta/sym.rb +0 -8
  115. data/meta/true.rb +0 -7
  116. data/meta/until.rb +0 -16
  117. data/meta/while.rb +0 -24
  118. data/meta/yield.rb +0 -9
  119. data/mutant-minitest.gemspec +0 -22
  120. data/mutant-rspec.gemspec +0 -22
  121. data/mutant.gemspec +0 -41
  122. data/mutant.sh +0 -12
  123. data/mutant.yml +0 -6
  124. data/spec/integration/mutant/corpus_spec.rb +0 -15
  125. data/spec/integration/mutant/isolation/fork_spec.rb +0 -28
  126. data/spec/integration/mutant/minitest_spec.rb +0 -11
  127. data/spec/integration/mutant/null_spec.rb +0 -16
  128. data/spec/integration/mutant/rspec_spec.rb +0 -15
  129. data/spec/integration/mutant/test_mutator_handles_types_spec.rb +0 -9
  130. data/spec/integrations.yml +0 -63
  131. data/spec/shared/base_behavior.rb +0 -45
  132. data/spec/shared/framework_integration_behavior.rb +0 -70
  133. data/spec/shared/method_matcher_behavior.rb +0 -47
  134. data/spec/spec_helper.rb +0 -75
  135. data/spec/support/corpus.rb +0 -318
  136. data/spec/support/file_system.rb +0 -62
  137. data/spec/support/ice_nine_config.rb +0 -10
  138. data/spec/support/ruby_vm.rb +0 -84
  139. data/spec/support/shared_context.rb +0 -169
  140. data/spec/support/test_app.rb +0 -7
  141. data/spec/support/warnings.yml +0 -6
  142. data/spec/support/xspec.rb +0 -183
  143. data/spec/unit/mutant/ast/find_metaclass_containing_spec.rb +0 -64
  144. data/spec/unit/mutant/ast/meta/optarg_spec.rb +0 -24
  145. data/spec/unit/mutant/ast/meta/send/proc_predicate_spec.rb +0 -30
  146. data/spec/unit/mutant/ast/meta/send/receiver_possible_top_level_const_predicate_spec.rb +0 -39
  147. data/spec/unit/mutant/ast/meta/send_spec.rb +0 -42
  148. data/spec/unit/mutant/ast/named_children_spec.rb +0 -89
  149. data/spec/unit/mutant/ast/sexp_spec.rb +0 -38
  150. data/spec/unit/mutant/ast_spec.rb +0 -57
  151. data/spec/unit/mutant/bootstrap_spec.rb +0 -216
  152. data/spec/unit/mutant/cli_spec.rb +0 -305
  153. data/spec/unit/mutant/clock_monotonic_spec.rb +0 -52
  154. data/spec/unit/mutant/config_spec.rb +0 -126
  155. data/spec/unit/mutant/context_spec.rb +0 -111
  156. data/spec/unit/mutant/diff_spec.rb +0 -189
  157. data/spec/unit/mutant/env_spec.rb +0 -229
  158. data/spec/unit/mutant/expression/method_spec.rb +0 -62
  159. data/spec/unit/mutant/expression/methods_spec.rb +0 -66
  160. data/spec/unit/mutant/expression/namespace/exact_spec.rb +0 -28
  161. data/spec/unit/mutant/expression/namespace/recursive_spec.rb +0 -66
  162. data/spec/unit/mutant/expression/parser_spec.rb +0 -65
  163. data/spec/unit/mutant/expression_spec.rb +0 -45
  164. data/spec/unit/mutant/integration/rspec_spec.rb +0 -201
  165. data/spec/unit/mutant/integration_spec.rb +0 -150
  166. data/spec/unit/mutant/isolation/fork_spec.rb +0 -309
  167. data/spec/unit/mutant/isolation/none_spec.rb +0 -23
  168. data/spec/unit/mutant/isolation/result_spec.rb +0 -73
  169. data/spec/unit/mutant/license_spec.rb +0 -305
  170. data/spec/unit/mutant/loader_spec.rb +0 -79
  171. data/spec/unit/mutant/matcher/chain_spec.rb +0 -26
  172. data/spec/unit/mutant/matcher/compiler_spec.rb +0 -0
  173. data/spec/unit/mutant/matcher/config_spec.rb +0 -47
  174. data/spec/unit/mutant/matcher/filter_spec.rb +0 -22
  175. data/spec/unit/mutant/matcher/method/instance_spec.rb +0 -164
  176. data/spec/unit/mutant/matcher/method/metaclass_spec.rb +0 -108
  177. data/spec/unit/mutant/matcher/method/singleton_spec.rb +0 -90
  178. data/spec/unit/mutant/matcher/methods/instance_spec.rb +0 -54
  179. data/spec/unit/mutant/matcher/methods/metaclass_spec.rb +0 -62
  180. data/spec/unit/mutant/matcher/methods/singleton_spec.rb +0 -51
  181. data/spec/unit/mutant/matcher/namespace_spec.rb +0 -39
  182. data/spec/unit/mutant/matcher/null_spec.rb +0 -12
  183. data/spec/unit/mutant/matcher/scope_spec.rb +0 -45
  184. data/spec/unit/mutant/matcher/static_spec.rb +0 -13
  185. data/spec/unit/mutant/matcher_spec.rb +0 -102
  186. data/spec/unit/mutant/meta/example/dsl_spec.rb +0 -108
  187. data/spec/unit/mutant/meta/example/verification_spec.rb +0 -154
  188. data/spec/unit/mutant/meta/example_spec.rb +0 -34
  189. data/spec/unit/mutant/mutation_spec.rb +0 -140
  190. data/spec/unit/mutant/mutator/node_spec.rb +0 -47
  191. data/spec/unit/mutant/mutator_spec.rb +0 -21
  192. data/spec/unit/mutant/parallel/driver_spec.rb +0 -126
  193. data/spec/unit/mutant/parallel/source/array_spec.rb +0 -57
  194. data/spec/unit/mutant/parallel/worker_spec.rb +0 -206
  195. data/spec/unit/mutant/parallel_spec.rb +0 -115
  196. data/spec/unit/mutant/parser_spec.rb +0 -26
  197. data/spec/unit/mutant/range_spec.rb +0 -141
  198. data/spec/unit/mutant/registry_spec.rb +0 -74
  199. data/spec/unit/mutant/reporter/cli/printer/config_spec.rb +0 -17
  200. data/spec/unit/mutant/reporter/cli/printer/env_progress_spec.rb +0 -85
  201. data/spec/unit/mutant/reporter/cli/printer/env_result_spec.rb +0 -45
  202. data/spec/unit/mutant/reporter/cli/printer/isolation_result_spec.rb +0 -132
  203. data/spec/unit/mutant/reporter/cli/printer/mutation_progress_result_spec.rb +0 -25
  204. data/spec/unit/mutant/reporter/cli/printer/mutation_result_spec.rb +0 -153
  205. data/spec/unit/mutant/reporter/cli/printer/status_progressive_spec.rb +0 -45
  206. data/spec/unit/mutant/reporter/cli/printer/subject_progress_spec.rb +0 -36
  207. data/spec/unit/mutant/reporter/cli/printer/subject_result_spec.rb +0 -44
  208. data/spec/unit/mutant/reporter/cli/printer/test_result_spec.rb +0 -16
  209. data/spec/unit/mutant/reporter/cli/printer_spec.rb +0 -163
  210. data/spec/unit/mutant/reporter/cli_spec.rb +0 -137
  211. data/spec/unit/mutant/reporter/null_spec.rb +0 -14
  212. data/spec/unit/mutant/reporter/sequence_spec.rb +0 -31
  213. data/spec/unit/mutant/repository/diff/ranges_spec.rb +0 -180
  214. data/spec/unit/mutant/repository/diff_spec.rb +0 -122
  215. data/spec/unit/mutant/repository/subject_filter_spec.rb +0 -30
  216. data/spec/unit/mutant/require_highjack_spec.rb +0 -73
  217. data/spec/unit/mutant/result/class_methods_spec.rb +0 -51
  218. data/spec/unit/mutant/result/env_spec.rb +0 -161
  219. data/spec/unit/mutant/result/mutation_spec.rb +0 -70
  220. data/spec/unit/mutant/result/subject_spec.rb +0 -111
  221. data/spec/unit/mutant/result/test_spec.rb +0 -14
  222. data/spec/unit/mutant/result_spec.rb +0 -33
  223. data/spec/unit/mutant/runner/sink_spec.rb +0 -174
  224. data/spec/unit/mutant/runner_spec.rb +0 -121
  225. data/spec/unit/mutant/selector/expression_spec.rb +0 -62
  226. data/spec/unit/mutant/selector/null_spec.rb +0 -17
  227. data/spec/unit/mutant/subject/method/instance_spec.rb +0 -181
  228. data/spec/unit/mutant/subject/method/metaclass_spec.rb +0 -63
  229. data/spec/unit/mutant/subject/method/singleton_spec.rb +0 -61
  230. data/spec/unit/mutant/subject_spec.rb +0 -93
  231. data/spec/unit/mutant/transform/array_spec.rb +0 -92
  232. data/spec/unit/mutant/transform/bool_spec.rb +0 -63
  233. data/spec/unit/mutant/transform/error_spec.rb +0 -132
  234. data/spec/unit/mutant/transform/exception_spec.rb +0 -44
  235. data/spec/unit/mutant/transform/hash_spec.rb +0 -236
  236. data/spec/unit/mutant/transform/index_spec.rb +0 -92
  237. data/spec/unit/mutant/transform/named_spec.rb +0 -49
  238. data/spec/unit/mutant/transform/primitive_spec.rb +0 -56
  239. data/spec/unit/mutant/transform/sequence_spec.rb +0 -98
  240. data/spec/unit/mutant/util/one_spec.rb +0 -22
  241. data/spec/unit/mutant/warnings_spec.rb +0 -89
  242. data/spec/unit/mutant/world_spec.rb +0 -63
  243. data/spec/unit/mutant/zombifier_spec.rb +0 -122
  244. data/test_app/.rspec +0 -1
  245. data/test_app/Gemfile.minitest +0 -4
  246. data/test_app/Gemfile.rspec3.8 +0 -7
  247. data/test_app/lib/test_app.rb +0 -110
  248. data/test_app/lib/test_app/literal.rb +0 -35
  249. data/test_app/lib/test_app/metaclasses.rb +0 -108
  250. data/test_app/spec/spec_helper.rb +0 -9
  251. data/test_app/spec/unit/test_app/literal_spec.rb +0 -20
  252. data/test_app/test/unit/test_app/literal_test.rb +0 -16
data/Rakefile DELETED
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'devtools'
4
-
5
- Devtools.init_rake_tasks
@@ -1,2 +0,0 @@
1
- ---
2
- unit_test_timeout: 10.0
@@ -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
@@ -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
-
@@ -1,2 +0,0 @@
1
- ---
2
- threshold: 100
@@ -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.
@@ -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.
@@ -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.