mutant 0.9.8 → 0.9.13

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 (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
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Mutant::Meta::Example.add :return do
4
- source 'return'
5
-
6
- singleton_mutations
7
- end
8
-
9
- Mutant::Meta::Example.add :return do
10
- source 'return foo'
11
-
12
- singleton_mutations
13
- mutation 'foo'
14
- mutation 'return nil'
15
- mutation 'return self'
16
- end
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Mutant::Meta::Example.add :self do
4
- source 'self'
5
-
6
- mutation 'nil'
7
- end
@@ -1,604 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Mutant::Meta::Example.add :send do
4
- source 'a > b'
5
-
6
- singleton_mutations
7
- mutation 'a == b'
8
- mutation 'a >= b'
9
- mutation 'a.eql?(b)'
10
- mutation 'a.equal?(b)'
11
- mutation 'nil > b'
12
- mutation 'self > b'
13
- mutation 'a > nil'
14
- mutation 'a > self'
15
- mutation 'a'
16
- mutation 'b'
17
- end
18
-
19
- Mutant::Meta::Example.add :send do
20
- source 'A.const_get(:B)'
21
-
22
- singleton_mutations
23
- mutation 'A::B'
24
- mutation 'A.const_get'
25
- mutation 'A'
26
- mutation ':B'
27
- mutation 'A.const_get(nil)'
28
- mutation 'A.const_get(self)'
29
- mutation 'A.const_get(:B__mutant__)'
30
- mutation 'self.const_get(:B)'
31
- end
32
-
33
- Mutant::Meta::Example.add :send do
34
- source 'A.const_get(bar)'
35
-
36
- singleton_mutations
37
- mutation 'A.const_get'
38
- mutation 'A'
39
- mutation 'bar'
40
- mutation 'A.const_get(nil)'
41
- mutation 'A.const_get(self)'
42
- mutation 'self.const_get(bar)'
43
- end
44
-
45
- Mutant::Meta::Example.add :send do
46
- source 'method(bar)'
47
-
48
- singleton_mutations
49
- mutation 'public_method(bar)'
50
- mutation 'method'
51
- mutation 'bar'
52
- mutation 'method(nil)'
53
- mutation 'method(self)'
54
- end
55
-
56
- Mutant::Meta::Example.add :send do
57
- source 'a >= b'
58
-
59
- singleton_mutations
60
- mutation 'a > b'
61
- mutation 'a == b'
62
- mutation 'a.eql?(b)'
63
- mutation 'a.equal?(b)'
64
- mutation 'nil >= b'
65
- mutation 'self >= b'
66
- mutation 'a >= nil'
67
- mutation 'a >= self'
68
- mutation 'a'
69
- mutation 'b'
70
- end
71
-
72
- Mutant::Meta::Example.add :send do
73
- source 'a <= b'
74
-
75
- singleton_mutations
76
- mutation 'a < b'
77
- mutation 'a == b'
78
- mutation 'a.eql?(b)'
79
- mutation 'a.equal?(b)'
80
- mutation 'nil <= b'
81
- mutation 'self <= b'
82
- mutation 'a <= nil'
83
- mutation 'a <= self'
84
- mutation 'a'
85
- mutation 'b'
86
- end
87
-
88
- Mutant::Meta::Example.add :send do
89
- source 'a < b'
90
-
91
- singleton_mutations
92
- mutation 'a == b'
93
- mutation 'a <= b'
94
- mutation 'a.eql?(b)'
95
- mutation 'a.equal?(b)'
96
- mutation 'nil < b'
97
- mutation 'self < b'
98
- mutation 'a < nil'
99
- mutation 'a < self'
100
- mutation 'a'
101
- mutation 'b'
102
- end
103
-
104
- Mutant::Meta::Example.add :send do
105
- source 'reverse_each'
106
-
107
- singleton_mutations
108
- mutation 'each'
109
- end
110
-
111
- Mutant::Meta::Example.add :send do
112
- source 'reverse_merge'
113
-
114
- singleton_mutations
115
- mutation 'merge'
116
- end
117
-
118
- Mutant::Meta::Example.add :send do
119
- source 'reverse_map'
120
-
121
- singleton_mutations
122
- mutation 'map'
123
- mutation 'each'
124
- end
125
-
126
- Mutant::Meta::Example.add :send do
127
- source 'map'
128
-
129
- singleton_mutations
130
- mutation 'each'
131
- end
132
-
133
- Mutant::Meta::Example.add :send do
134
- source 'flat_map'
135
-
136
- singleton_mutations
137
- mutation 'map'
138
- end
139
-
140
- Mutant::Meta::Example.add :send do
141
- source 'foo.to_s'
142
-
143
- singleton_mutations
144
- mutation 'foo'
145
- mutation 'self.to_s'
146
- mutation 'foo.to_str'
147
- end
148
-
149
- Mutant::Meta::Example.add :send do
150
- source 'foo.to_a'
151
-
152
- singleton_mutations
153
- mutation 'foo'
154
- mutation 'self.to_a'
155
- mutation 'foo.to_ary'
156
- end
157
-
158
- Mutant::Meta::Example.add :send do
159
- source 'foo.to_i'
160
-
161
- singleton_mutations
162
- mutation 'foo'
163
- mutation 'self.to_i'
164
- mutation 'foo.to_int'
165
- mutation 'Integer(foo)'
166
- end
167
-
168
- Mutant::Meta::Example.add :send do
169
- source 'foo.to_h'
170
-
171
- singleton_mutations
172
- mutation 'foo'
173
- mutation 'self.to_h'
174
- mutation 'foo.to_hash'
175
- end
176
-
177
- Mutant::Meta::Example.add :send do
178
- source 'foo == bar'
179
-
180
- singleton_mutations
181
- mutation 'foo'
182
- mutation 'bar'
183
- mutation 'nil == bar'
184
- mutation 'self == bar'
185
- mutation 'foo == nil'
186
- mutation 'foo == self'
187
- mutation 'foo.eql?(bar)'
188
- mutation 'foo.equal?(bar)'
189
- end
190
-
191
- Mutant::Meta::Example.add :send do
192
- source 'foo.is_a?(bar)'
193
-
194
- singleton_mutations
195
- mutation 'foo'
196
- mutation 'bar'
197
- mutation 'foo.is_a?'
198
- mutation 'foo.is_a?(nil)'
199
- mutation 'foo.is_a?(self)'
200
- mutation 'self.is_a?(bar)'
201
- mutation 'foo.instance_of?(bar)'
202
- end
203
-
204
- Mutant::Meta::Example.add :send do
205
- source 'foo.is_a?(bar)'
206
-
207
- singleton_mutations
208
- mutation 'foo'
209
- mutation 'bar'
210
- mutation 'foo.is_a?'
211
- mutation 'foo.is_a?(nil)'
212
- mutation 'foo.is_a?(self)'
213
- mutation 'self.is_a?(bar)'
214
- mutation 'foo.instance_of?(bar)'
215
- end
216
-
217
- Mutant::Meta::Example.add :send do
218
- source 'foo.kind_of?(bar)'
219
-
220
- singleton_mutations
221
- mutation 'foo'
222
- mutation 'bar'
223
- mutation 'foo.kind_of?'
224
- mutation 'foo.kind_of?(nil)'
225
- mutation 'foo.kind_of?(self)'
226
- mutation 'self.kind_of?(bar)'
227
- mutation 'foo.instance_of?(bar)'
228
- end
229
-
230
- Mutant::Meta::Example.add :send do
231
- source 'foo.gsub(a, b)'
232
-
233
- singleton_mutations
234
- mutation 'foo'
235
- mutation 'foo.gsub(a)'
236
- mutation 'foo.gsub(b)'
237
- mutation 'foo.gsub'
238
- mutation 'foo.sub(a, b)'
239
- mutation 'foo.gsub(a, nil)'
240
- mutation 'foo.gsub(a, self)'
241
- mutation 'foo.gsub(nil, b)'
242
- mutation 'foo.gsub(self, b)'
243
- mutation 'self.gsub(a, b)'
244
- end
245
-
246
- Mutant::Meta::Example.add :send do
247
- source 'foo.values_at(a, b)'
248
-
249
- singleton_mutations
250
- mutation 'foo.fetch_values(a, b)'
251
- mutation 'foo'
252
- mutation 'self.values_at(a, b)'
253
- mutation 'foo.values_at(a)'
254
- mutation 'foo.values_at(b)'
255
- mutation 'foo.values_at(nil, b)'
256
- mutation 'foo.values_at(self, b)'
257
- mutation 'foo.values_at(a, nil)'
258
- mutation 'foo.values_at(a, self)'
259
- mutation 'foo.values_at'
260
- end
261
-
262
- Mutant::Meta::Example.add :send do
263
- source 'foo.dig(a, b)'
264
-
265
- singleton_mutations
266
- mutation 'foo.fetch(a).dig(b)'
267
- mutation 'foo'
268
- mutation 'self.dig(a, b)'
269
- mutation 'foo.dig(a)'
270
- mutation 'foo.dig(b)'
271
- mutation 'foo.dig(nil, b)'
272
- mutation 'foo.dig(self, b)'
273
- mutation 'foo.dig(a, nil)'
274
- mutation 'foo.dig(a, self)'
275
- mutation 'foo.dig'
276
- end
277
-
278
- Mutant::Meta::Example.add :send do
279
- source 'foo.dig(a)'
280
-
281
- singleton_mutations
282
- mutation 'foo.fetch(a)'
283
- mutation 'foo'
284
- mutation 'self.dig(a)'
285
- mutation 'foo.dig(nil)'
286
- mutation 'foo.dig(self)'
287
- mutation 'foo.dig'
288
- mutation 'a'
289
- end
290
-
291
- Mutant::Meta::Example.add :send do
292
- source 'foo.dig'
293
-
294
- singleton_mutations
295
- mutation 'foo'
296
- mutation 'self.dig'
297
- end
298
-
299
- Mutant::Meta::Example.add :send do
300
- source 'foo.__send__(bar)'
301
-
302
- singleton_mutations
303
- mutation 'foo.__send__'
304
- mutation 'foo.public_send(bar)'
305
- mutation 'bar'
306
- mutation 'foo'
307
- mutation 'self.__send__(bar)'
308
- mutation 'foo.__send__(nil)'
309
- mutation 'foo.__send__(self)'
310
- end
311
-
312
- Mutant::Meta::Example.add :send do
313
- source 'foo.send(bar)'
314
-
315
- singleton_mutations
316
- mutation 'foo.send'
317
- mutation 'foo.public_send(bar)'
318
- mutation 'foo.__send__(bar)'
319
- mutation 'bar'
320
- mutation 'foo'
321
- mutation 'self.send(bar)'
322
- mutation 'foo.send(nil)'
323
- mutation 'foo.send(self)'
324
- end
325
-
326
- Mutant::Meta::Example.add :send do
327
- source 'self.booz = baz'
328
-
329
- singleton_mutations
330
- mutation 'self.booz = nil'
331
- mutation 'self.booz = self'
332
- mutation 'self.booz'
333
- mutation 'baz'
334
- end
335
-
336
- Mutant::Meta::Example.add :send do
337
- source 'foo.booz = baz'
338
-
339
- singleton_mutations
340
- mutation 'foo'
341
- mutation 'foo.booz = nil'
342
- mutation 'foo.booz = self'
343
- mutation 'self.booz = baz'
344
- mutation 'foo.booz'
345
- mutation 'baz'
346
- end
347
-
348
- Mutant::Meta::Example.add :send do
349
- source 'foo(*bar)'
350
-
351
- singleton_mutations
352
- mutation 'foo'
353
- mutation 'foo(nil)'
354
- mutation 'foo(bar)'
355
- mutation 'foo(self)'
356
- mutation 'foo(*nil)'
357
- mutation 'foo(*self)'
358
- end
359
-
360
- Mutant::Meta::Example.add :send do
361
- source 'foo(&bar)'
362
-
363
- singleton_mutations
364
- mutation 'foo'
365
- end
366
-
367
- Mutant::Meta::Example.add :send do
368
- source 'foo'
369
-
370
- singleton_mutations
371
- end
372
-
373
- Mutant::Meta::Example.add :send do
374
- source 'self.foo'
375
-
376
- singleton_mutations
377
- mutation 'foo'
378
- end
379
-
380
- Unparser::Constants::KEYWORDS.each do |keyword|
381
- Mutant::Meta::Example.add :send do
382
- source "self.#{keyword}"
383
-
384
- singleton_mutations
385
- end
386
- end
387
-
388
- Mutant::Meta::Example.add :send do
389
- source 'foo.bar'
390
-
391
- singleton_mutations
392
- mutation 'foo'
393
- mutation 'self.bar'
394
- end
395
-
396
- Mutant::Meta::Example.add :send do
397
- source 'self.class.foo'
398
-
399
- singleton_mutations
400
- mutation 'self.class'
401
- mutation 'self.foo'
402
- end
403
-
404
- Mutant::Meta::Example.add :send do
405
- source 'foo(nil)'
406
-
407
- singleton_mutations
408
- mutation 'foo'
409
- end
410
-
411
- Mutant::Meta::Example.add :send do
412
- source 'self.foo(nil)'
413
-
414
- singleton_mutations
415
- mutation 'self.foo'
416
- mutation 'foo(nil)'
417
- end
418
-
419
- Mutant::Meta::Example.add :send do
420
- source 'self.fetch(nil)'
421
-
422
- singleton_mutations
423
- mutation 'self.fetch'
424
- mutation 'fetch(nil)'
425
- mutation 'self.key?(nil)'
426
- end
427
-
428
- Unparser::Constants::KEYWORDS.each do |keyword|
429
- Mutant::Meta::Example.add :send do
430
- source "foo.#{keyword}(nil)"
431
-
432
- singleton_mutations
433
- mutation "self.#{keyword}(nil)"
434
- mutation "foo.#{keyword}"
435
- mutation 'foo'
436
- end
437
- end
438
-
439
- Mutant::Meta::Example.add :send do
440
- source 'foo(nil, nil)'
441
-
442
- singleton_mutations
443
- mutation 'foo()'
444
- mutation 'foo(nil)'
445
- end
446
-
447
- Mutant::Meta::Example.add :send do
448
- source '(left - right) / foo'
449
-
450
- singleton_mutations
451
- mutation 'foo'
452
- mutation '(left - right)'
453
- mutation 'left / foo'
454
- mutation 'right / foo'
455
- mutation '(left - right) / nil'
456
- mutation '(left - right) / self'
457
- mutation '(left - nil) / foo'
458
- mutation '(left - self) / foo'
459
- mutation '(nil - right) / foo'
460
- mutation '(self - right) / foo'
461
- mutation 'nil / foo'
462
- mutation 'self / foo'
463
- end
464
-
465
- Mutant::Meta::Example.add :send do
466
- source 'foo(n..-1)'
467
-
468
- singleton_mutations
469
- mutation 'foo'
470
- mutation 'n..-1'
471
- mutation 'foo(nil)'
472
- mutation 'foo(self)'
473
- mutation 'foo(n...-1)'
474
- mutation 'foo(nil..-1)'
475
- mutation 'foo(self..-1)'
476
- mutation 'foo(n..nil)'
477
- mutation 'foo(n..self)'
478
- mutation 'foo(n..0)'
479
- mutation 'foo(n..1)'
480
- mutation 'foo(n..-2)'
481
- end
482
-
483
- (Mutant::AST::Types::BINARY_METHOD_OPERATORS - %i[=~ <= >= < > == != eql?]).each do |operator|
484
- Mutant::Meta::Example.add :send do
485
- source "true #{operator} false"
486
-
487
- singleton_mutations
488
- mutation 'true'
489
- mutation 'false'
490
- mutation "false #{operator} false"
491
- mutation "nil #{operator} false"
492
- mutation "true #{operator} true"
493
- mutation "true #{operator} nil"
494
- end
495
- end
496
-
497
- Mutant::Meta::Example.add :send do
498
- source 'a != b'
499
-
500
- singleton_mutations
501
- mutation 'nil != b'
502
- mutation 'self != b'
503
- mutation 'a'
504
- mutation 'b'
505
- mutation 'a != nil'
506
- mutation 'a != self'
507
- mutation '!a.eql?(b)'
508
- mutation '!a.equal?(b)'
509
- end
510
-
511
- Mutant::Meta::Example.add :send do
512
- source '!!foo'
513
-
514
- singleton_mutations
515
- mutation '!foo'
516
- mutation '!self'
517
- mutation '!!self'
518
- mutation 'foo'
519
- end
520
-
521
- Mutant::Meta::Example.add :send do
522
- source '!foo'
523
-
524
- singleton_mutations
525
- mutation 'foo'
526
- mutation '!self'
527
- end
528
-
529
- Mutant::Meta::Example.add :send do
530
- source '!foo&.!'
531
-
532
- singleton_mutations
533
- mutation 'foo&.!'
534
- mutation '!self'
535
- mutation '!foo'
536
- mutation '!self&.!'
537
- mutation '!(!foo)'
538
- end
539
-
540
- Mutant::Meta::Example.add :send do
541
- source 'custom.proc { }'
542
-
543
- singleton_mutations
544
- mutation 'custom.proc'
545
- mutation 'custom { }'
546
- mutation 'self.proc { }'
547
- mutation 'custom.proc { raise }'
548
- end
549
-
550
- Mutant::Meta::Example.add :send do
551
- source 'proc { }'
552
-
553
- singleton_mutations
554
- mutation 'proc'
555
- mutation 'proc { raise }'
556
- mutation 'lambda { }'
557
- end
558
-
559
- Mutant::Meta::Example.add :send do
560
- source 'Proc.new { }'
561
-
562
- singleton_mutations
563
- mutation 'Proc.new'
564
- mutation 'self.new { }'
565
- mutation 'Proc.new { raise }'
566
- mutation 'lambda { }'
567
- end
568
-
569
- Mutant::Meta::Example.add :send do
570
- source 'a =~ //'
571
-
572
- singleton_mutations
573
- mutation 'a'
574
- mutation 'nil =~ //'
575
- mutation 'self =~ //'
576
- mutation '//'
577
- mutation 'a =~ /nomatch\A/'
578
- end
579
-
580
- Mutant::Meta::Example.add :send do
581
- source '//.match(a)'
582
-
583
- singleton_mutations
584
- mutation 'a'
585
- mutation '//.match'
586
- mutation '//.match(nil)'
587
- mutation '//.match(self)'
588
- mutation '//'
589
- mutation '/nomatch\A/.match(a)'
590
- end
591
-
592
- Mutant::Meta::Example.add :send do
593
- source 'foo(bar { nil; nil })'
594
-
595
- singleton_mutations
596
- mutation 'bar { nil; nil }'
597
- mutation 'foo'
598
- mutation 'foo(bar { nil })'
599
- mutation 'foo(bar { raise })'
600
- mutation 'foo(bar {})'
601
- mutation 'foo(bar)'
602
- mutation 'foo(self)'
603
- mutation 'foo(nil)'
604
- end