mutant 0.9.8 → 0.9.13

Sign up to get free protection for your applications and to get access to all the features.
Files changed (335) hide show
  1. checksums.yaml +4 -4
  2. data/lib/mutant.rb +5 -2
  3. data/lib/mutant/ast.rb +0 -9
  4. data/lib/mutant/ast/find_metaclass_containing.rb +48 -0
  5. data/lib/mutant/ast/meta/send.rb +0 -6
  6. data/lib/mutant/bootstrap.rb +14 -37
  7. data/lib/mutant/cli.rb +11 -49
  8. data/lib/mutant/config.rb +0 -8
  9. data/lib/mutant/context.rb +0 -3
  10. data/lib/mutant/env.rb +0 -6
  11. data/lib/mutant/expression/method.rb +6 -6
  12. data/lib/mutant/expression/methods.rb +6 -6
  13. data/lib/mutant/expression/parser.rb +0 -6
  14. data/lib/mutant/integration.rb +0 -18
  15. data/lib/mutant/isolation.rb +1 -1
  16. data/lib/mutant/isolation/fork.rb +2 -24
  17. data/lib/mutant/isolation/none.rb +1 -1
  18. data/lib/mutant/license.rb +11 -0
  19. data/lib/mutant/matcher.rb +0 -14
  20. data/lib/mutant/matcher/config.rb +2 -11
  21. data/lib/mutant/matcher/method.rb +0 -31
  22. data/lib/mutant/matcher/method/instance.rb +0 -8
  23. data/lib/mutant/matcher/method/metaclass.rb +86 -0
  24. data/lib/mutant/matcher/method/singleton.rb +0 -25
  25. data/lib/mutant/matcher/methods.rb +17 -28
  26. data/lib/mutant/matcher/namespace.rb +0 -10
  27. data/lib/mutant/matcher/scope.rb +2 -4
  28. data/lib/mutant/meta/example/dsl.rb +0 -21
  29. data/lib/mutant/meta/example/verification.rb +0 -20
  30. data/lib/mutant/minitest/coverage.rb +53 -0
  31. data/lib/mutant/mutation.rb +0 -3
  32. data/lib/mutant/mutator.rb +1 -29
  33. data/lib/mutant/mutator/node.rb +1 -66
  34. data/lib/mutant/mutator/node/and_asgn.rb +0 -3
  35. data/lib/mutant/mutator/node/argument.rb +0 -15
  36. data/lib/mutant/mutator/node/arguments.rb +0 -20
  37. data/lib/mutant/mutator/node/begin.rb +0 -3
  38. data/lib/mutant/mutator/node/binary.rb +0 -23
  39. data/lib/mutant/mutator/node/block.rb +0 -15
  40. data/lib/mutant/mutator/node/block_pass.rb +29 -0
  41. data/lib/mutant/mutator/node/break.rb +0 -3
  42. data/lib/mutant/mutator/node/case.rb +0 -9
  43. data/lib/mutant/mutator/node/class.rb +0 -3
  44. data/lib/mutant/mutator/node/conditional_loop.rb +0 -3
  45. data/lib/mutant/mutator/node/const.rb +0 -3
  46. data/lib/mutant/mutator/node/define.rb +0 -11
  47. data/lib/mutant/mutator/node/defined.rb +0 -3
  48. data/lib/mutant/mutator/node/dstr.rb +0 -3
  49. data/lib/mutant/mutator/node/dsym.rb +0 -3
  50. data/lib/mutant/mutator/node/generic.rb +0 -3
  51. data/lib/mutant/mutator/node/if.rb +0 -12
  52. data/lib/mutant/mutator/node/index.rb +0 -27
  53. data/lib/mutant/mutator/node/kwbegin.rb +0 -3
  54. data/lib/mutant/mutator/node/literal.rb +0 -3
  55. data/lib/mutant/mutator/node/literal/array.rb +0 -6
  56. data/lib/mutant/mutator/node/literal/boolean.rb +0 -4
  57. data/lib/mutant/mutator/node/literal/float.rb +0 -9
  58. data/lib/mutant/mutator/node/literal/hash.rb +0 -9
  59. data/lib/mutant/mutator/node/literal/integer.rb +0 -9
  60. data/lib/mutant/mutator/node/literal/nil.rb +0 -3
  61. data/lib/mutant/mutator/node/literal/range.rb +4 -7
  62. data/lib/mutant/mutator/node/literal/regex.rb +0 -6
  63. data/lib/mutant/mutator/node/literal/string.rb +0 -3
  64. data/lib/mutant/mutator/node/literal/symbol.rb +0 -3
  65. data/lib/mutant/mutator/node/masgn.rb +0 -3
  66. data/lib/mutant/mutator/node/match_current_line.rb +0 -3
  67. data/lib/mutant/mutator/node/mlhs.rb +0 -3
  68. data/lib/mutant/mutator/node/named_value/access.rb +2 -14
  69. data/lib/mutant/mutator/node/named_value/constant_assignment.rb +0 -9
  70. data/lib/mutant/mutator/node/named_value/variable_assignment.rb +0 -6
  71. data/lib/mutant/mutator/node/next.rb +0 -3
  72. data/lib/mutant/mutator/node/noop.rb +1 -4
  73. data/lib/mutant/mutator/node/nthref.rb +0 -3
  74. data/lib/mutant/mutator/node/op_asgn.rb +0 -3
  75. data/lib/mutant/mutator/node/or_asgn.rb +0 -3
  76. data/lib/mutant/mutator/node/procarg_zero.rb +0 -3
  77. data/lib/mutant/mutator/node/regopt.rb +0 -6
  78. data/lib/mutant/mutator/node/resbody.rb +0 -6
  79. data/lib/mutant/mutator/node/rescue.rb +2 -19
  80. data/lib/mutant/mutator/node/return.rb +0 -3
  81. data/lib/mutant/mutator/node/sclass.rb +20 -0
  82. data/lib/mutant/mutator/node/send.rb +26 -61
  83. data/lib/mutant/mutator/node/send/attribute_assignment.rb +0 -9
  84. data/lib/mutant/mutator/node/send/binary.rb +0 -11
  85. data/lib/mutant/mutator/node/send/conditional.rb +0 -3
  86. data/lib/mutant/mutator/node/splat.rb +0 -3
  87. data/lib/mutant/mutator/node/super.rb +0 -3
  88. data/lib/mutant/mutator/node/when.rb +0 -19
  89. data/lib/mutant/mutator/node/yield.rb +0 -3
  90. data/lib/mutant/mutator/node/zsuper.rb +0 -3
  91. data/lib/mutant/mutator/util/array.rb +0 -6
  92. data/lib/mutant/mutator/util/symbol.rb +0 -3
  93. data/lib/mutant/parallel.rb +0 -13
  94. data/lib/mutant/parallel/driver.rb +0 -10
  95. data/lib/mutant/parallel/worker.rb +0 -22
  96. data/lib/mutant/reporter/cli.rb +0 -5
  97. data/lib/mutant/reporter/cli/format.rb +0 -9
  98. data/lib/mutant/reporter/cli/printer.rb +2 -42
  99. data/lib/mutant/reporter/cli/printer/env_progress.rb +0 -15
  100. data/lib/mutant/reporter/cli/printer/isolation_result.rb +9 -21
  101. data/lib/mutant/reporter/cli/printer/mutation_progress_result.rb +0 -5
  102. data/lib/mutant/reporter/cli/printer/mutation_result.rb +1 -22
  103. data/lib/mutant/reporter/cli/printer/status_progressive.rb +0 -8
  104. data/lib/mutant/reporter/cli/printer/subject_progress.rb +0 -9
  105. data/lib/mutant/repository/diff.rb +1 -13
  106. data/lib/mutant/repository/diff/ranges.rb +0 -11
  107. data/lib/mutant/result.rb +0 -3
  108. data/lib/mutant/runner.rb +0 -18
  109. data/lib/mutant/runner/sink.rb +0 -5
  110. data/lib/mutant/subject.rb +0 -8
  111. data/lib/mutant/subject/method.rb +0 -3
  112. data/lib/mutant/subject/method/instance.rb +40 -6
  113. data/lib/mutant/subject/method/metaclass.rb +30 -0
  114. data/lib/mutant/transform.rb +0 -92
  115. data/lib/mutant/version.rb +1 -1
  116. data/lib/mutant/warnings.rb +0 -6
  117. data/lib/mutant/zombifier.rb +2 -34
  118. metadata +61 -333
  119. data/.github/workflows/ci.yml +0 -121
  120. data/.gitignore +0 -38
  121. data/.rspec +0 -5
  122. data/.rubocop.yml +0 -7
  123. data/Changelog.md +0 -75
  124. data/Gemfile +0 -7
  125. data/Gemfile.lock +0 -167
  126. data/Gemfile.shared +0 -10
  127. data/README.md +0 -138
  128. data/Rakefile +0 -5
  129. data/config/devtools.yml +0 -2
  130. data/config/reek.yml +0 -138
  131. data/config/rubocop.yml +0 -205
  132. data/config/yardstick.yml +0 -2
  133. data/docs/commercial-support.md +0 -14
  134. data/docs/concurrency.md +0 -39
  135. data/docs/incremental.md +0 -76
  136. data/docs/known-problems.md +0 -30
  137. data/docs/limitations.md +0 -50
  138. data/docs/mutant-minitest.md +0 -149
  139. data/docs/mutant-rspec.md +0 -130
  140. data/docs/nomenclature.md +0 -82
  141. data/docs/reading-reports.md +0 -74
  142. data/lib/mutant/color.rb +0 -43
  143. data/lib/mutant/diff.rb +0 -114
  144. data/meta/and.rb +0 -15
  145. data/meta/and_asgn.rb +0 -14
  146. data/meta/array.rb +0 -30
  147. data/meta/begin.rb +0 -23
  148. data/meta/block.rb +0 -202
  149. data/meta/block_pass.rb +0 -8
  150. data/meta/blockarg.rb +0 -10
  151. data/meta/break.rb +0 -10
  152. data/meta/case.rb +0 -223
  153. data/meta/casgn.rb +0 -28
  154. data/meta/cbase.rb +0 -8
  155. data/meta/class.rb +0 -12
  156. data/meta/const.rb +0 -17
  157. data/meta/csend.rb +0 -10
  158. data/meta/cvar.rb +0 -7
  159. data/meta/cvasgn.rb +0 -10
  160. data/meta/date.rb +0 -59
  161. data/meta/def.rb +0 -203
  162. data/meta/defined.rb +0 -9
  163. data/meta/dstr.rb +0 -13
  164. data/meta/dsym.rb +0 -14
  165. data/meta/ensure.rb +0 -9
  166. data/meta/false.rb +0 -8
  167. data/meta/file.rb +0 -5
  168. data/meta/float.rb +0 -37
  169. data/meta/gvar.rb +0 -7
  170. data/meta/gvasgn.rb +0 -10
  171. data/meta/hash.rb +0 -24
  172. data/meta/if.rb +0 -77
  173. data/meta/index.rb +0 -133
  174. data/meta/indexasgn.rb +0 -31
  175. data/meta/int.rb +0 -18
  176. data/meta/ivar.rb +0 -8
  177. data/meta/ivasgn.rb +0 -23
  178. data/meta/kwarg.rb +0 -10
  179. data/meta/kwbegin.rb +0 -9
  180. data/meta/kwoptarg.rb +0 -13
  181. data/meta/lambda.rb +0 -23
  182. data/meta/line.rb +0 -5
  183. data/meta/lvar.rb +0 -16
  184. data/meta/lvasgn.rb +0 -25
  185. data/meta/masgn.rb +0 -7
  186. data/meta/match_current_line.rb +0 -15
  187. data/meta/next.rb +0 -11
  188. data/meta/nil.rb +0 -5
  189. data/meta/nthref.rb +0 -14
  190. data/meta/op_assgn.rb +0 -17
  191. data/meta/or.rb +0 -15
  192. data/meta/or_asgn.rb +0 -50
  193. data/meta/range.rb +0 -39
  194. data/meta/redo.rb +0 -5
  195. data/meta/regexp.rb +0 -81
  196. data/meta/regopt.rb +0 -10
  197. data/meta/rescue.rb +0 -90
  198. data/meta/return.rb +0 -16
  199. data/meta/self.rb +0 -7
  200. data/meta/send.rb +0 -604
  201. data/meta/str.rb +0 -7
  202. data/meta/super.rb +0 -27
  203. data/meta/sym.rb +0 -8
  204. data/meta/true.rb +0 -8
  205. data/meta/until.rb +0 -17
  206. data/meta/while.rb +0 -26
  207. data/meta/yield.rb +0 -10
  208. data/mutant-minitest.gemspec +0 -22
  209. data/mutant-rspec.gemspec +0 -22
  210. data/mutant.gemspec +0 -41
  211. data/mutant.yml +0 -6
  212. data/spec/integration/mutant/corpus_spec.rb +0 -15
  213. data/spec/integration/mutant/isolation/fork_spec.rb +0 -28
  214. data/spec/integration/mutant/minitest_spec.rb +0 -11
  215. data/spec/integration/mutant/null_spec.rb +0 -16
  216. data/spec/integration/mutant/rspec_spec.rb +0 -15
  217. data/spec/integration/mutant/test_mutator_handles_types_spec.rb +0 -9
  218. data/spec/integrations.yml +0 -63
  219. data/spec/shared/base_behavior.rb +0 -45
  220. data/spec/shared/framework_integration_behavior.rb +0 -70
  221. data/spec/shared/method_matcher_behavior.rb +0 -47
  222. data/spec/spec_helper.rb +0 -75
  223. data/spec/support/corpus.rb +0 -318
  224. data/spec/support/file_system.rb +0 -62
  225. data/spec/support/ice_nine_config.rb +0 -10
  226. data/spec/support/ruby_vm.rb +0 -84
  227. data/spec/support/shared_context.rb +0 -169
  228. data/spec/support/test_app.rb +0 -7
  229. data/spec/support/warnings.yml +0 -6
  230. data/spec/support/xspec.rb +0 -183
  231. data/spec/unit/mutant/ast/meta/optarg_spec.rb +0 -24
  232. data/spec/unit/mutant/ast/meta/send/proc_predicate_spec.rb +0 -30
  233. data/spec/unit/mutant/ast/meta/send/receiver_possible_top_level_const_predicate_spec.rb +0 -39
  234. data/spec/unit/mutant/ast/meta/send_spec.rb +0 -42
  235. data/spec/unit/mutant/ast/named_children_spec.rb +0 -89
  236. data/spec/unit/mutant/ast/sexp_spec.rb +0 -38
  237. data/spec/unit/mutant/ast_spec.rb +0 -57
  238. data/spec/unit/mutant/bootstrap_spec.rb +0 -216
  239. data/spec/unit/mutant/cli_spec.rb +0 -305
  240. data/spec/unit/mutant/clock_monotonic_spec.rb +0 -52
  241. data/spec/unit/mutant/config_spec.rb +0 -126
  242. data/spec/unit/mutant/context_spec.rb +0 -111
  243. data/spec/unit/mutant/diff_spec.rb +0 -189
  244. data/spec/unit/mutant/env_spec.rb +0 -229
  245. data/spec/unit/mutant/expression/method_spec.rb +0 -62
  246. data/spec/unit/mutant/expression/methods_spec.rb +0 -61
  247. data/spec/unit/mutant/expression/namespace/exact_spec.rb +0 -28
  248. data/spec/unit/mutant/expression/namespace/recursive_spec.rb +0 -66
  249. data/spec/unit/mutant/expression/parser_spec.rb +0 -65
  250. data/spec/unit/mutant/expression_spec.rb +0 -45
  251. data/spec/unit/mutant/integration/rspec_spec.rb +0 -201
  252. data/spec/unit/mutant/integration_spec.rb +0 -150
  253. data/spec/unit/mutant/isolation/fork_spec.rb +0 -309
  254. data/spec/unit/mutant/isolation/none_spec.rb +0 -23
  255. data/spec/unit/mutant/isolation/result_spec.rb +0 -73
  256. data/spec/unit/mutant/license_spec.rb +0 -293
  257. data/spec/unit/mutant/loader_spec.rb +0 -79
  258. data/spec/unit/mutant/matcher/chain_spec.rb +0 -26
  259. data/spec/unit/mutant/matcher/compiler_spec.rb +0 -0
  260. data/spec/unit/mutant/matcher/config_spec.rb +0 -47
  261. data/spec/unit/mutant/matcher/filter_spec.rb +0 -22
  262. data/spec/unit/mutant/matcher/method/instance_spec.rb +0 -164
  263. data/spec/unit/mutant/matcher/method/singleton_spec.rb +0 -90
  264. data/spec/unit/mutant/matcher/methods/instance_spec.rb +0 -54
  265. data/spec/unit/mutant/matcher/methods/singleton_spec.rb +0 -51
  266. data/spec/unit/mutant/matcher/namespace_spec.rb +0 -37
  267. data/spec/unit/mutant/matcher/null_spec.rb +0 -12
  268. data/spec/unit/mutant/matcher/scope_spec.rb +0 -35
  269. data/spec/unit/mutant/matcher/static_spec.rb +0 -13
  270. data/spec/unit/mutant/matcher_spec.rb +0 -102
  271. data/spec/unit/mutant/meta/example/dsl_spec.rb +0 -108
  272. data/spec/unit/mutant/meta/example/verification_spec.rb +0 -154
  273. data/spec/unit/mutant/meta/example_spec.rb +0 -34
  274. data/spec/unit/mutant/mutation_spec.rb +0 -140
  275. data/spec/unit/mutant/mutator/node_spec.rb +0 -52
  276. data/spec/unit/mutant/mutator_spec.rb +0 -21
  277. data/spec/unit/mutant/parallel/driver_spec.rb +0 -126
  278. data/spec/unit/mutant/parallel/source/array_spec.rb +0 -57
  279. data/spec/unit/mutant/parallel/worker_spec.rb +0 -206
  280. data/spec/unit/mutant/parallel_spec.rb +0 -115
  281. data/spec/unit/mutant/parser_spec.rb +0 -26
  282. data/spec/unit/mutant/range_spec.rb +0 -141
  283. data/spec/unit/mutant/registry_spec.rb +0 -74
  284. data/spec/unit/mutant/reporter/cli/printer/config_spec.rb +0 -17
  285. data/spec/unit/mutant/reporter/cli/printer/env_progress_spec.rb +0 -85
  286. data/spec/unit/mutant/reporter/cli/printer/env_result_spec.rb +0 -45
  287. data/spec/unit/mutant/reporter/cli/printer/isolation_result_spec.rb +0 -132
  288. data/spec/unit/mutant/reporter/cli/printer/mutation_progress_result_spec.rb +0 -25
  289. data/spec/unit/mutant/reporter/cli/printer/mutation_result_spec.rb +0 -153
  290. data/spec/unit/mutant/reporter/cli/printer/status_progressive_spec.rb +0 -45
  291. data/spec/unit/mutant/reporter/cli/printer/subject_progress_spec.rb +0 -36
  292. data/spec/unit/mutant/reporter/cli/printer/subject_result_spec.rb +0 -44
  293. data/spec/unit/mutant/reporter/cli/printer/test_result_spec.rb +0 -16
  294. data/spec/unit/mutant/reporter/cli/printer_spec.rb +0 -163
  295. data/spec/unit/mutant/reporter/cli_spec.rb +0 -137
  296. data/spec/unit/mutant/reporter/null_spec.rb +0 -14
  297. data/spec/unit/mutant/reporter/sequence_spec.rb +0 -31
  298. data/spec/unit/mutant/repository/diff/ranges_spec.rb +0 -180
  299. data/spec/unit/mutant/repository/diff_spec.rb +0 -122
  300. data/spec/unit/mutant/repository/subject_filter_spec.rb +0 -30
  301. data/spec/unit/mutant/require_highjack_spec.rb +0 -73
  302. data/spec/unit/mutant/result/class_methods_spec.rb +0 -51
  303. data/spec/unit/mutant/result/env_spec.rb +0 -161
  304. data/spec/unit/mutant/result/mutation_spec.rb +0 -70
  305. data/spec/unit/mutant/result/subject_spec.rb +0 -111
  306. data/spec/unit/mutant/result/test_spec.rb +0 -14
  307. data/spec/unit/mutant/result_spec.rb +0 -33
  308. data/spec/unit/mutant/runner/sink_spec.rb +0 -174
  309. data/spec/unit/mutant/runner_spec.rb +0 -121
  310. data/spec/unit/mutant/selector/expression_spec.rb +0 -62
  311. data/spec/unit/mutant/selector/null_spec.rb +0 -17
  312. data/spec/unit/mutant/subject/method/instance_spec.rb +0 -181
  313. data/spec/unit/mutant/subject/method/singleton_spec.rb +0 -61
  314. data/spec/unit/mutant/subject_spec.rb +0 -93
  315. data/spec/unit/mutant/transform/array_spec.rb +0 -92
  316. data/spec/unit/mutant/transform/bool_spec.rb +0 -63
  317. data/spec/unit/mutant/transform/error_spec.rb +0 -132
  318. data/spec/unit/mutant/transform/exception_spec.rb +0 -44
  319. data/spec/unit/mutant/transform/hash_spec.rb +0 -236
  320. data/spec/unit/mutant/transform/index_spec.rb +0 -92
  321. data/spec/unit/mutant/transform/named_spec.rb +0 -49
  322. data/spec/unit/mutant/transform/primitive_spec.rb +0 -56
  323. data/spec/unit/mutant/transform/sequence_spec.rb +0 -98
  324. data/spec/unit/mutant/util/one_spec.rb +0 -22
  325. data/spec/unit/mutant/warnings_spec.rb +0 -89
  326. data/spec/unit/mutant/world_spec.rb +0 -63
  327. data/spec/unit/mutant/zombifier_spec.rb +0 -122
  328. data/test_app/.rspec +0 -1
  329. data/test_app/Gemfile.minitest +0 -4
  330. data/test_app/Gemfile.rspec3.8 +0 -7
  331. data/test_app/lib/test_app.rb +0 -109
  332. data/test_app/lib/test_app/literal.rb +0 -35
  333. data/test_app/spec/spec_helper.rb +0 -9
  334. data/test_app/spec/unit/test_app/literal_spec.rb +0 -20
  335. 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,138 +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
@@ -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.