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,43 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Mutant
4
- # Class to colorize strings
5
- class Color
6
- include Adamantium::Flat, Concord.new(:code)
7
-
8
- # Format text with color
9
- #
10
- # @param [String] text
11
- #
12
- # @return [String]
13
- def format(text)
14
- "\e[#{code}m#{text}\e[0m"
15
- end
16
-
17
- NONE = Class.new(self) do
18
-
19
- # Format null color
20
- #
21
- # @param [String] text
22
- #
23
- # @return [String]
24
- # the argument string
25
- def format(text)
26
- text
27
- end
28
-
29
- private
30
-
31
- # Initialize null color
32
- #
33
- # @return [undefined]
34
- def initialize; end
35
-
36
- end.new
37
-
38
- RED = Color.new(31)
39
- GREEN = Color.new(32)
40
- BLUE = Color.new(34)
41
-
42
- end # Color
43
- end # Mutant
@@ -1,114 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Mutant
4
- # Class to create diffs from source code
5
- class Diff
6
- include Adamantium::Flat, Concord.new(:old, :new)
7
-
8
- ADDITION = '+'
9
- DELETION = '-'
10
- NEWLINE = "\n"
11
-
12
- # Unified source diff between old and new
13
- #
14
- # @return [String]
15
- # if there is exactly one diff
16
- #
17
- # @return [nil]
18
- # otherwise
19
- def diff
20
- return if diffs.empty?
21
-
22
- minimized_hunk.diff(:unified) + NEWLINE
23
- end
24
- memoize :diff
25
-
26
- # Colorized unified source diff between old and new
27
- #
28
- # @return [String]
29
- # if there is a diff
30
- #
31
- # @return [nil]
32
- # otherwise
33
- def colorized_diff
34
- return unless diff
35
- diff.lines.map(&self.class.method(:colorize_line)).join
36
- end
37
- memoize :colorized_diff
38
-
39
- # Build new object from source strings
40
- #
41
- # @param [String] old
42
- # @param [String] new
43
- #
44
- # @return [Diff]
45
- def self.build(old, new)
46
- new(lines(old), lines(new))
47
- end
48
-
49
- # Break up source into lines
50
- #
51
- # @param [String] source
52
- #
53
- # @return [Array<String>]
54
- def self.lines(source)
55
- source.lines.map(&:chomp)
56
- end
57
- private_class_method :lines
58
-
59
- private
60
-
61
- # Diffs between old and new
62
- #
63
- # @return [Array<Array>]
64
- def diffs
65
- ::Diff::LCS.diff(old, new)
66
- end
67
-
68
- # Raw diff-lcs hunks
69
- #
70
- # @return [Array<Diff::LCS::Hunk>]
71
- def hunks
72
- diffs.map do |diff|
73
- ::Diff::LCS::Hunk.new(old.map(&:dup), new, diff, max_length, 0)
74
- end
75
- end
76
-
77
- # Minimized hunk
78
- #
79
- # @return Diff::LCS::Hunk
80
- def minimized_hunk
81
- head, *tail = hunks
82
-
83
- tail.reduce(head) do |left, right|
84
- right.merge(left)
85
- right
86
- end
87
- end
88
-
89
- # Max length of source line in new and old
90
- #
91
- # @return [Integer]
92
- def max_length
93
- [old, new].map(&:length).max
94
- end
95
-
96
- # Colorized a unified diff line
97
- #
98
- # @param [String] line
99
- #
100
- # @return [String]
101
- def self.colorize_line(line)
102
- case line[0]
103
- when ADDITION
104
- Color::GREEN
105
- when DELETION
106
- Color::RED
107
- else
108
- Color::NONE
109
- end.format(line)
110
- end
111
- private_class_method :colorize_line
112
-
113
- end # Diff
114
- end # Mutant
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Mutant::Meta::Example.add :and do
4
- source 'true and false'
5
-
6
- singleton_mutations
7
- mutation 'true'
8
- mutation 'false'
9
- mutation 'true or false'
10
- mutation 'true and nil'
11
- mutation 'nil and false'
12
- mutation 'false and false'
13
- mutation 'true and true'
14
- mutation '!true and false'
15
- end
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Mutant::Meta::Example.add :and_asgn do
4
- source 'a &&= 1'
5
-
6
- singleton_mutations
7
-
8
- mutation 'a__mutant__ &&= 1'
9
- mutation 'a &&= nil'
10
- mutation 'a &&= 0'
11
- mutation 'a &&= -1'
12
- mutation 'a &&= 2'
13
- mutation 'a &&= self'
14
- end
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Mutant::Meta::Example.add :array do
4
- source '[true]'
5
-
6
- singleton_mutations
7
- mutation 'true'
8
- mutation '[false]'
9
- mutation '[nil]'
10
- mutation '[]'
11
- end
12
-
13
- Mutant::Meta::Example.add :array do
14
- source '[true, false]'
15
-
16
- singleton_mutations
17
-
18
- # Mutation of each element in array
19
- mutation '[nil, false]'
20
- mutation '[false, false]'
21
- mutation '[true, nil]'
22
- mutation '[true, true]'
23
-
24
- # Remove each element of array once
25
- mutation '[true]'
26
- mutation '[false]'
27
-
28
- # Empty array
29
- mutation '[]'
30
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Mutant::Meta::Example.add :begin do
4
-
5
- source 'true; false'
6
- # Mutation of each statement in block
7
- mutation 'true; true'
8
- mutation 'false; false'
9
- mutation 'nil; false'
10
- mutation 'true; nil'
11
-
12
- # Delete each statement
13
- mutation 'true'
14
- mutation 'false'
15
- end
16
-
17
- Mutant::Meta::Example.add :begin do
18
-
19
- source s(:begin, s(:true))
20
- # Mutation of each statement in block
21
- mutation s(:begin, s(:nil))
22
- mutation s(:begin, s(:false))
23
- end
@@ -1,202 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Mutant::Meta::Example.add :block do
4
- source 'foo { a; b }'
5
-
6
- singleton_mutations
7
- mutation 'foo { a }'
8
- mutation 'foo { b }'
9
- mutation 'foo {}'
10
- mutation 'foo { raise }'
11
- mutation 'foo { a; nil }'
12
- mutation 'foo { a; self }'
13
- mutation 'foo { nil; b }'
14
- mutation 'foo { self; b }'
15
- mutation 'foo'
16
- mutation 'a; b'
17
- end
18
-
19
- Mutant::Meta::Example.add :block do
20
- source 'foo { |a, b| }'
21
-
22
- singleton_mutations
23
- mutation 'foo'
24
- mutation 'foo { |a, b| raise }'
25
- mutation 'foo { |a, _b| }'
26
- mutation 'foo { |_a, b| }'
27
- mutation 'foo { |a, | }'
28
- mutation 'foo { |b, | }'
29
- mutation 'foo { || }'
30
- end
31
-
32
- Mutant::Meta::Example.add :block do
33
- source 'foo { |(a, b), c| }'
34
-
35
- singleton_mutations
36
- mutation 'foo { || }'
37
- mutation 'foo { |a, b, c| }'
38
- mutation 'foo { |(a, b), c| raise }'
39
- mutation 'foo { |(a), c| }'
40
- mutation 'foo { |(b), c| }'
41
- mutation 'foo { |c, | }'
42
- mutation 'foo { |(_a, b), c| }'
43
- mutation 'foo { |(a, _b), c| }'
44
- mutation 'foo { |(a, b), _c| }'
45
- mutation 'foo'
46
- end
47
-
48
- Mutant::Meta::Example.add :block do
49
- source 'foo(a, b) {}'
50
-
51
- singleton_mutations
52
- mutation 'foo(a, nil) {}'
53
- mutation 'foo(nil, b) {}'
54
- mutation 'foo(self, b) {}'
55
- mutation 'foo(a, self) {}'
56
- mutation 'foo(a, b)'
57
- mutation 'foo(a, b) { raise }'
58
- mutation 'foo(a) {}'
59
- mutation 'foo(b) {}'
60
- mutation 'foo {}'
61
- end
62
-
63
- Mutant::Meta::Example.add :block do
64
- source 'foo { |_a| }'
65
-
66
- singleton_mutations
67
- mutation 'foo { || }'
68
- mutation 'foo { |_a| raise }'
69
- mutation 'foo'
70
- end
71
-
72
- Mutant::Meta::Example.add :block do
73
- source 'foo { |a| }'
74
-
75
- singleton_mutations
76
- mutation 'foo { || }'
77
- mutation 'foo { |a| raise }'
78
- mutation 'foo { |_a| }'
79
- mutation 'foo'
80
- end
81
-
82
- Mutant::Meta::Example.add :block do
83
- source 'foo { |a| }'
84
-
85
- singleton_mutations
86
- mutation 'foo { || }'
87
- mutation 'foo { |a| raise }'
88
- mutation 'foo { |_a| }'
89
- mutation 'foo'
90
- end
91
-
92
- Mutant::Meta::Example.add :block do
93
- source 'foo { bar(nil) }'
94
-
95
- singleton_mutations
96
- mutation 'foo'
97
- mutation 'foo { bar }'
98
- mutation 'foo { nil }'
99
- mutation 'foo {}'
100
- mutation 'foo { self }'
101
- mutation 'foo { raise }'
102
- mutation 'foo.bar(nil)'
103
- mutation 'bar(nil)'
104
- end
105
-
106
- Mutant::Meta::Example.add :block do
107
- source 'foo { self << true }'
108
-
109
- singleton_mutations
110
- mutation 'foo { self << false }'
111
- mutation 'foo { self << nil }'
112
- mutation 'foo { nil << true }'
113
- mutation 'foo { nil }'
114
- mutation 'foo { self }'
115
- mutation 'foo { true }'
116
- mutation 'self << true'
117
- mutation 'foo << true'
118
- mutation 'foo { raise }'
119
- mutation 'foo { }'
120
- mutation 'foo'
121
- end
122
-
123
- Mutant::Meta::Example.add :block do
124
- source 'foo { next if true }'
125
-
126
- singleton_mutations
127
- mutation 'foo'
128
- mutation 'foo { }'
129
- mutation 'foo { self }'
130
- mutation 'foo { nil }'
131
- mutation 'foo { raise }'
132
- mutation 'foo { self if true }'
133
- mutation 'foo { nil if true }'
134
- mutation 'foo { break if true }'
135
- mutation 'foo { next if !true }'
136
- mutation 'foo { next if false }'
137
- mutation 'foo { next if nil }'
138
- mutation 'foo { next }'
139
- end
140
-
141
- Mutant::Meta::Example.add :block do
142
- source 'foo { next }'
143
-
144
- singleton_mutations
145
- mutation 'foo { nil }'
146
- mutation 'foo { raise }'
147
- mutation 'foo { self }'
148
- mutation 'foo { break }'
149
- mutation 'foo { }'
150
- mutation 'foo'
151
- end
152
-
153
- Mutant::Meta::Example.add :block do
154
- source 'foo { break if true }'
155
-
156
- singleton_mutations
157
- mutation 'foo'
158
- mutation 'foo { }'
159
- mutation 'foo { self }'
160
- mutation 'foo { nil }'
161
- mutation 'foo { raise }'
162
- mutation 'foo { self if true }'
163
- mutation 'foo { nil if true }'
164
- mutation 'foo { break if !true }'
165
- mutation 'foo { break if false }'
166
- mutation 'foo { break if nil }'
167
- mutation 'foo { break }'
168
- end
169
-
170
- Mutant::Meta::Example.add :block do
171
- source 'foo { break }'
172
-
173
- singleton_mutations
174
- mutation 'foo { nil }'
175
- mutation 'foo { raise }'
176
- mutation 'foo { self }'
177
- mutation 'foo { }'
178
- mutation 'foo'
179
- end
180
-
181
- Mutant::Meta::Example.add :block do
182
- source 'foo(&:bar).baz {}'
183
-
184
- singleton_mutations
185
-
186
- mutation 'foo(&:bar).baz { raise }'
187
- mutation 'foo.baz { }'
188
- mutation 'foo(&:bar).baz'
189
- mutation 'self.baz {}'
190
- end
191
-
192
- Mutant::Meta::Example.add :block do
193
- source 'foo(nil, &:bar).baz {}'
194
-
195
- singleton_mutations
196
- mutation 'foo(nil, &:bar).baz { raise }'
197
- mutation 'foo(&:bar).baz { }'
198
- mutation 'foo(nil).baz { }'
199
- mutation 'foo.baz { }'
200
- mutation 'self.baz { }'
201
- mutation 'foo(nil, &:bar).baz'
202
- end