mutant 0.9.7 → 0.9.12

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 (336) 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 +0 -36
  7. data/lib/mutant/cli.rb +5 -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 +0 -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 -74
  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/registry.rb +2 -7
  97. data/lib/mutant/reporter/cli.rb +0 -5
  98. data/lib/mutant/reporter/cli/format.rb +0 -9
  99. data/lib/mutant/reporter/cli/printer.rb +2 -42
  100. data/lib/mutant/reporter/cli/printer/env_progress.rb +0 -15
  101. data/lib/mutant/reporter/cli/printer/isolation_result.rb +0 -18
  102. data/lib/mutant/reporter/cli/printer/mutation_progress_result.rb +0 -5
  103. data/lib/mutant/reporter/cli/printer/mutation_result.rb +1 -22
  104. data/lib/mutant/reporter/cli/printer/status_progressive.rb +0 -8
  105. data/lib/mutant/reporter/cli/printer/subject_progress.rb +0 -9
  106. data/lib/mutant/repository/diff.rb +1 -13
  107. data/lib/mutant/repository/diff/ranges.rb +0 -11
  108. data/lib/mutant/result.rb +0 -3
  109. data/lib/mutant/runner.rb +0 -18
  110. data/lib/mutant/runner/sink.rb +0 -5
  111. data/lib/mutant/subject.rb +0 -8
  112. data/lib/mutant/subject/method.rb +0 -3
  113. data/lib/mutant/subject/method/instance.rb +40 -6
  114. data/lib/mutant/subject/method/metaclass.rb +30 -0
  115. data/lib/mutant/transform.rb +0 -92
  116. data/lib/mutant/version.rb +1 -1
  117. data/lib/mutant/warnings.rb +0 -6
  118. data/lib/mutant/zombifier.rb +2 -34
  119. metadata +61 -333
  120. data/.circleci/config.yml +0 -53
  121. data/.gitignore +0 -38
  122. data/.rspec +0 -5
  123. data/.rubocop.yml +0 -7
  124. data/Changelog.md +0 -71
  125. data/Gemfile +0 -14
  126. data/Gemfile.lock +0 -167
  127. data/Gemfile.shared +0 -3
  128. data/README.md +0 -138
  129. data/Rakefile +0 -5
  130. data/config/devtools.yml +0 -2
  131. data/config/reek.yml +0 -138
  132. data/config/rubocop.yml +0 -205
  133. data/config/yardstick.yml +0 -2
  134. data/docs/commercial-support.md +0 -14
  135. data/docs/concurrency.md +0 -39
  136. data/docs/incremental.md +0 -76
  137. data/docs/known-problems.md +0 -30
  138. data/docs/limitations.md +0 -50
  139. data/docs/mutant-minitest.md +0 -149
  140. data/docs/mutant-rspec.md +0 -130
  141. data/docs/nomenclature.md +0 -82
  142. data/docs/reading-reports.md +0 -74
  143. data/lib/mutant/color.rb +0 -43
  144. data/lib/mutant/diff.rb +0 -114
  145. data/meta/and.rb +0 -15
  146. data/meta/and_asgn.rb +0 -14
  147. data/meta/array.rb +0 -30
  148. data/meta/begin.rb +0 -23
  149. data/meta/block.rb +0 -202
  150. data/meta/block_pass.rb +0 -8
  151. data/meta/blockarg.rb +0 -10
  152. data/meta/break.rb +0 -10
  153. data/meta/case.rb +0 -223
  154. data/meta/casgn.rb +0 -28
  155. data/meta/cbase.rb +0 -8
  156. data/meta/class.rb +0 -12
  157. data/meta/const.rb +0 -17
  158. data/meta/csend.rb +0 -10
  159. data/meta/cvar.rb +0 -7
  160. data/meta/cvasgn.rb +0 -10
  161. data/meta/date.rb +0 -59
  162. data/meta/def.rb +0 -203
  163. data/meta/defined.rb +0 -9
  164. data/meta/dstr.rb +0 -13
  165. data/meta/dsym.rb +0 -14
  166. data/meta/ensure.rb +0 -9
  167. data/meta/false.rb +0 -8
  168. data/meta/file.rb +0 -5
  169. data/meta/float.rb +0 -37
  170. data/meta/gvar.rb +0 -7
  171. data/meta/gvasgn.rb +0 -10
  172. data/meta/hash.rb +0 -24
  173. data/meta/if.rb +0 -77
  174. data/meta/index.rb +0 -133
  175. data/meta/indexasgn.rb +0 -31
  176. data/meta/int.rb +0 -18
  177. data/meta/ivar.rb +0 -8
  178. data/meta/ivasgn.rb +0 -23
  179. data/meta/kwarg.rb +0 -10
  180. data/meta/kwbegin.rb +0 -9
  181. data/meta/kwoptarg.rb +0 -13
  182. data/meta/lambda.rb +0 -23
  183. data/meta/line.rb +0 -5
  184. data/meta/lvar.rb +0 -16
  185. data/meta/lvasgn.rb +0 -25
  186. data/meta/masgn.rb +0 -7
  187. data/meta/match_current_line.rb +0 -15
  188. data/meta/next.rb +0 -11
  189. data/meta/nil.rb +0 -5
  190. data/meta/nthref.rb +0 -14
  191. data/meta/op_assgn.rb +0 -17
  192. data/meta/or.rb +0 -15
  193. data/meta/or_asgn.rb +0 -50
  194. data/meta/range.rb +0 -39
  195. data/meta/redo.rb +0 -5
  196. data/meta/regexp.rb +0 -81
  197. data/meta/regopt.rb +0 -10
  198. data/meta/rescue.rb +0 -90
  199. data/meta/return.rb +0 -16
  200. data/meta/self.rb +0 -7
  201. data/meta/send.rb +0 -604
  202. data/meta/str.rb +0 -7
  203. data/meta/super.rb +0 -27
  204. data/meta/sym.rb +0 -8
  205. data/meta/true.rb +0 -8
  206. data/meta/until.rb +0 -17
  207. data/meta/while.rb +0 -26
  208. data/meta/yield.rb +0 -10
  209. data/mutant-minitest.gemspec +0 -22
  210. data/mutant-rspec.gemspec +0 -22
  211. data/mutant.gemspec +0 -41
  212. data/mutant.yml +0 -6
  213. data/spec/integration/mutant/corpus_spec.rb +0 -15
  214. data/spec/integration/mutant/isolation/fork_spec.rb +0 -28
  215. data/spec/integration/mutant/minitest_spec.rb +0 -11
  216. data/spec/integration/mutant/null_spec.rb +0 -16
  217. data/spec/integration/mutant/rspec_spec.rb +0 -15
  218. data/spec/integration/mutant/test_mutator_handles_types_spec.rb +0 -9
  219. data/spec/integrations.yml +0 -63
  220. data/spec/shared/base_behavior.rb +0 -45
  221. data/spec/shared/framework_integration_behavior.rb +0 -70
  222. data/spec/shared/method_matcher_behavior.rb +0 -47
  223. data/spec/spec_helper.rb +0 -75
  224. data/spec/support/corpus.rb +0 -318
  225. data/spec/support/file_system.rb +0 -62
  226. data/spec/support/ice_nine_config.rb +0 -10
  227. data/spec/support/ruby_vm.rb +0 -84
  228. data/spec/support/shared_context.rb +0 -169
  229. data/spec/support/test_app.rb +0 -7
  230. data/spec/support/warnings.yml +0 -6
  231. data/spec/support/xspec.rb +0 -183
  232. data/spec/unit/mutant/ast/meta/optarg_spec.rb +0 -24
  233. data/spec/unit/mutant/ast/meta/send/proc_predicate_spec.rb +0 -30
  234. data/spec/unit/mutant/ast/meta/send/receiver_possible_top_level_const_predicate_spec.rb +0 -39
  235. data/spec/unit/mutant/ast/meta/send_spec.rb +0 -42
  236. data/spec/unit/mutant/ast/named_children_spec.rb +0 -89
  237. data/spec/unit/mutant/ast/sexp_spec.rb +0 -38
  238. data/spec/unit/mutant/ast_spec.rb +0 -57
  239. data/spec/unit/mutant/bootstrap_spec.rb +0 -216
  240. data/spec/unit/mutant/cli_spec.rb +0 -305
  241. data/spec/unit/mutant/clock_monotonic_spec.rb +0 -52
  242. data/spec/unit/mutant/config_spec.rb +0 -126
  243. data/spec/unit/mutant/context_spec.rb +0 -111
  244. data/spec/unit/mutant/diff_spec.rb +0 -189
  245. data/spec/unit/mutant/env_spec.rb +0 -229
  246. data/spec/unit/mutant/expression/method_spec.rb +0 -62
  247. data/spec/unit/mutant/expression/methods_spec.rb +0 -61
  248. data/spec/unit/mutant/expression/namespace/exact_spec.rb +0 -28
  249. data/spec/unit/mutant/expression/namespace/recursive_spec.rb +0 -66
  250. data/spec/unit/mutant/expression/parser_spec.rb +0 -65
  251. data/spec/unit/mutant/expression_spec.rb +0 -45
  252. data/spec/unit/mutant/integration/rspec_spec.rb +0 -201
  253. data/spec/unit/mutant/integration_spec.rb +0 -150
  254. data/spec/unit/mutant/isolation/fork_spec.rb +0 -309
  255. data/spec/unit/mutant/isolation/none_spec.rb +0 -23
  256. data/spec/unit/mutant/isolation/result_spec.rb +0 -73
  257. data/spec/unit/mutant/license_spec.rb +0 -293
  258. data/spec/unit/mutant/loader_spec.rb +0 -79
  259. data/spec/unit/mutant/matcher/chain_spec.rb +0 -26
  260. data/spec/unit/mutant/matcher/compiler_spec.rb +0 -0
  261. data/spec/unit/mutant/matcher/config_spec.rb +0 -47
  262. data/spec/unit/mutant/matcher/filter_spec.rb +0 -22
  263. data/spec/unit/mutant/matcher/method/instance_spec.rb +0 -164
  264. data/spec/unit/mutant/matcher/method/singleton_spec.rb +0 -90
  265. data/spec/unit/mutant/matcher/methods/instance_spec.rb +0 -54
  266. data/spec/unit/mutant/matcher/methods/singleton_spec.rb +0 -51
  267. data/spec/unit/mutant/matcher/namespace_spec.rb +0 -37
  268. data/spec/unit/mutant/matcher/null_spec.rb +0 -12
  269. data/spec/unit/mutant/matcher/scope_spec.rb +0 -35
  270. data/spec/unit/mutant/matcher/static_spec.rb +0 -13
  271. data/spec/unit/mutant/matcher_spec.rb +0 -102
  272. data/spec/unit/mutant/meta/example/dsl_spec.rb +0 -108
  273. data/spec/unit/mutant/meta/example/verification_spec.rb +0 -154
  274. data/spec/unit/mutant/meta/example_spec.rb +0 -34
  275. data/spec/unit/mutant/mutation_spec.rb +0 -140
  276. data/spec/unit/mutant/mutator/node_spec.rb +0 -52
  277. data/spec/unit/mutant/mutator_spec.rb +0 -21
  278. data/spec/unit/mutant/parallel/driver_spec.rb +0 -126
  279. data/spec/unit/mutant/parallel/source/array_spec.rb +0 -57
  280. data/spec/unit/mutant/parallel/worker_spec.rb +0 -206
  281. data/spec/unit/mutant/parallel_spec.rb +0 -115
  282. data/spec/unit/mutant/parser_spec.rb +0 -26
  283. data/spec/unit/mutant/range_spec.rb +0 -141
  284. data/spec/unit/mutant/registry_spec.rb +0 -47
  285. data/spec/unit/mutant/reporter/cli/printer/config_spec.rb +0 -17
  286. data/spec/unit/mutant/reporter/cli/printer/env_progress_spec.rb +0 -85
  287. data/spec/unit/mutant/reporter/cli/printer/env_result_spec.rb +0 -45
  288. data/spec/unit/mutant/reporter/cli/printer/isolation_result_spec.rb +0 -132
  289. data/spec/unit/mutant/reporter/cli/printer/mutation_progress_result_spec.rb +0 -25
  290. data/spec/unit/mutant/reporter/cli/printer/mutation_result_spec.rb +0 -153
  291. data/spec/unit/mutant/reporter/cli/printer/status_progressive_spec.rb +0 -45
  292. data/spec/unit/mutant/reporter/cli/printer/subject_progress_spec.rb +0 -36
  293. data/spec/unit/mutant/reporter/cli/printer/subject_result_spec.rb +0 -44
  294. data/spec/unit/mutant/reporter/cli/printer/test_result_spec.rb +0 -16
  295. data/spec/unit/mutant/reporter/cli/printer_spec.rb +0 -163
  296. data/spec/unit/mutant/reporter/cli_spec.rb +0 -137
  297. data/spec/unit/mutant/reporter/null_spec.rb +0 -14
  298. data/spec/unit/mutant/reporter/sequence_spec.rb +0 -31
  299. data/spec/unit/mutant/repository/diff/ranges_spec.rb +0 -180
  300. data/spec/unit/mutant/repository/diff_spec.rb +0 -122
  301. data/spec/unit/mutant/repository/subject_filter_spec.rb +0 -30
  302. data/spec/unit/mutant/require_highjack_spec.rb +0 -73
  303. data/spec/unit/mutant/result/class_methods_spec.rb +0 -51
  304. data/spec/unit/mutant/result/env_spec.rb +0 -161
  305. data/spec/unit/mutant/result/mutation_spec.rb +0 -70
  306. data/spec/unit/mutant/result/subject_spec.rb +0 -111
  307. data/spec/unit/mutant/result/test_spec.rb +0 -14
  308. data/spec/unit/mutant/result_spec.rb +0 -33
  309. data/spec/unit/mutant/runner/sink_spec.rb +0 -174
  310. data/spec/unit/mutant/runner_spec.rb +0 -121
  311. data/spec/unit/mutant/selector/expression_spec.rb +0 -62
  312. data/spec/unit/mutant/selector/null_spec.rb +0 -17
  313. data/spec/unit/mutant/subject/method/instance_spec.rb +0 -181
  314. data/spec/unit/mutant/subject/method/singleton_spec.rb +0 -61
  315. data/spec/unit/mutant/subject_spec.rb +0 -93
  316. data/spec/unit/mutant/transform/array_spec.rb +0 -92
  317. data/spec/unit/mutant/transform/bool_spec.rb +0 -63
  318. data/spec/unit/mutant/transform/error_spec.rb +0 -132
  319. data/spec/unit/mutant/transform/exception_spec.rb +0 -44
  320. data/spec/unit/mutant/transform/hash_spec.rb +0 -236
  321. data/spec/unit/mutant/transform/index_spec.rb +0 -92
  322. data/spec/unit/mutant/transform/named_spec.rb +0 -49
  323. data/spec/unit/mutant/transform/primitive_spec.rb +0 -56
  324. data/spec/unit/mutant/transform/sequence_spec.rb +0 -98
  325. data/spec/unit/mutant/util/one_spec.rb +0 -22
  326. data/spec/unit/mutant/warnings_spec.rb +0 -89
  327. data/spec/unit/mutant/world_spec.rb +0 -63
  328. data/spec/unit/mutant/zombifier_spec.rb +0 -122
  329. data/test_app/.rspec +0 -1
  330. data/test_app/Gemfile.minitest +0 -4
  331. data/test_app/Gemfile.rspec3.8 +0 -7
  332. data/test_app/lib/test_app.rb +0 -109
  333. data/test_app/lib/test_app/literal.rb +0 -35
  334. data/test_app/spec/spec_helper.rb +0 -9
  335. data/test_app/spec/unit/test_app/literal_spec.rb +0 -20
  336. data/test_app/test/unit/test_app/literal_test.rb +0 -16
@@ -11,9 +11,6 @@ module Mutant
11
11
 
12
12
  private
13
13
 
14
- # Emit mutations
15
- #
16
- # @return [undefined]
17
14
  def dispatch
18
15
  super()
19
16
  emit_singletons
@@ -11,9 +11,6 @@ module Mutant
11
11
 
12
12
  private
13
13
 
14
- # Emit mutations
15
- #
16
- # @return [undefined]
17
14
  def dispatch
18
15
  emit_singletons
19
16
  emit(N_EMPTY_SUPER)
@@ -12,9 +12,6 @@ module Mutant
12
12
 
13
13
  private
14
14
 
15
- # Emit element presence mutations
16
- #
17
- # @return [undefined]
18
15
  def dispatch
19
16
  input.each_index do |index|
20
17
  dup = dup_input
@@ -30,9 +27,6 @@ module Mutant
30
27
 
31
28
  private
32
29
 
33
- # Emit mutations
34
- #
35
- # @return [undefined]
36
30
  def dispatch
37
31
  input.each_with_index do |element, index|
38
32
  Mutator.mutate(element).each do |mutation|
@@ -11,9 +11,6 @@ module Mutant
11
11
 
12
12
  private
13
13
 
14
- # Emit mutations
15
- #
16
- # @return [undefined]
17
14
  def dispatch
18
15
  emit((input.to_s + POSTFIX).to_sym)
19
16
  end
@@ -36,24 +36,11 @@ module Mutant
36
36
  )
37
37
  end
38
38
 
39
- # Start threads
40
- #
41
- # @param [Config] config
42
- # @param [Worker] worker
43
- #
44
- # @return [Array<Thread>]
45
39
  def self.threads(config, worker)
46
40
  Array.new(config.jobs) { config.thread.new(&worker.method(:call)) }
47
41
  end
48
42
  private_class_method :threads
49
43
 
50
- # Create shared variable
51
- #
52
- # @param [Class] klass
53
- # @param [Config] config
54
- #
55
- # @return [Variable]
56
- #
57
44
  # ignore :reek:LongParameterList
58
45
  def self.shared(klass, config, **attributes)
59
46
  klass.new(
@@ -27,22 +27,12 @@ module Mutant
27
27
 
28
28
  private
29
29
 
30
- # Possibly finalize the exeuction
31
- #
32
- # @param [Status]
33
- #
34
- # @return [Status]
35
30
  def finalize(status)
36
31
  status.tap do
37
32
  threads.each(&:join) if status.done?
38
33
  end
39
34
  end
40
35
 
41
- # Get status
42
- #
43
- # @return [Status]
44
- #
45
- # ignore :reek:NestedIterators
46
36
  def status
47
37
  var_active_jobs.with do |active_jobs|
48
38
  var_sink.with do |sink|
@@ -39,20 +39,12 @@ module Mutant
39
39
 
40
40
  private
41
41
 
42
- # Next job, if any
43
- #
44
- # @return [Job, nil]
45
42
  def next_job
46
43
  var_source.with do |source|
47
44
  source.next if source.next?
48
45
  end
49
46
  end
50
47
 
51
- # Add result
52
- #
53
- # @param [Object] result
54
- #
55
- # @return [Boolean]
56
48
  def add_result(result)
57
49
  var_sink.with do |sink|
58
50
  sink.result(result)
@@ -60,32 +52,18 @@ module Mutant
60
52
  end
61
53
  end
62
54
 
63
- # Register job to be started
64
- #
65
- # @param [Job] job
66
- #
67
- # @return [undefined]
68
55
  def job_start(job)
69
56
  var_active_jobs.with do |active_jobs|
70
57
  active_jobs << job
71
58
  end
72
59
  end
73
60
 
74
- # Register job to be done
75
- #
76
- # @param [Job] job
77
- # @param [Object] result
78
- #
79
- # @return [undefined]
80
61
  def job_done(job)
81
62
  var_active_jobs.with do |active_jobs|
82
63
  active_jobs.delete(job)
83
64
  end
84
65
  end
85
66
 
86
- # Finalize worker
87
- #
88
- # @return [undefined]
89
67
  def finalize
90
68
  var_final.put(nil) if var_running.modify(&:pred).zero?
91
69
  end
@@ -32,14 +32,9 @@ module Mutant
32
32
  #
33
33
  # @param [Symbol] type
34
34
  #
35
- # @return [Class]
36
- #
37
- # @raise [ArgumentError]
38
- # raises argument error when class cannot be found
35
+ # @return [Class<Mutator>]
39
36
  def lookup(type)
40
- contents.fetch(type) do
41
- fail RegistryError, "No entry for: #{type.inspect}"
42
- end
37
+ contents.fetch(type, Mutator::Node::Generic)
43
38
  end
44
39
 
45
40
  end # Registry
@@ -69,11 +69,6 @@ module Mutant
69
69
 
70
70
  private
71
71
 
72
- # Write output frame
73
- #
74
- # @param [String] frame
75
- #
76
- # @return [undefined]
77
72
  def write(frame)
78
73
  output.write(frame)
79
74
  end
@@ -49,12 +49,6 @@ module Mutant
49
49
 
50
50
  private
51
51
 
52
- # Format object with printer
53
- #
54
- # @param [Class:Printer] printer
55
- # @param [Object] object
56
- #
57
- # @return [String]
58
52
  def format(printer, object)
59
53
  buffer = new_buffer
60
54
  printer.call(Output.new(tty, buffer), object)
@@ -84,9 +78,6 @@ module Mutant
84
78
 
85
79
  private
86
80
 
87
- # New buffer
88
- #
89
- # @return [StringIO]
90
81
  def new_buffer
91
82
  StringIO.new
92
83
  end
@@ -44,81 +44,41 @@ module Mutant
44
44
 
45
45
  private
46
46
 
47
- # Status color
48
- #
49
- # @return [Color]
50
47
  def status_color
51
- success? ? Color::GREEN : Color::RED
48
+ success? ? Unparser::Color::GREEN : Unparser::Color::RED
52
49
  end
53
50
 
54
- # Visit a collection of objects
55
- #
56
- # @return [Class::Printer] printer
57
- # @return [Enumerable<Object>] collection
58
- #
59
- # @return [undefined]
60
51
  def visit_collection(printer, collection)
61
52
  collection.each do |object|
62
53
  visit(printer, object)
63
54
  end
64
55
  end
65
56
 
66
- # Visit object
67
- #
68
- # @param [Class::Printer] printer
69
- # @param [Object] object
70
- #
71
- # @return [undefined]
72
57
  def visit(printer, object)
73
58
  printer.call(output, object)
74
59
  end
75
60
 
76
- # Print an info line to output
77
- #
78
- # @return [undefined]
79
61
  def info(string, *arguments)
80
62
  puts(string % arguments)
81
63
  end
82
64
 
83
- # Print a status line to output
84
- #
85
- # @return [undefined]
86
65
  def status(string, *arguments)
87
66
  puts(colorize(status_color, string % arguments))
88
67
  end
89
68
 
90
- # Print a line to output
91
- #
92
- # @return [undefined]
93
69
  def puts(string)
94
70
  output.puts(string)
95
71
  end
96
72
 
97
- # Colorize message
98
- #
99
- # @param [Color] color
100
- # @param [String] message
101
- #
102
- # @return [String]
103
- # if color is enabled
104
- # unmodified message otherwise
105
73
  def colorize(color, message)
106
- color = Color::NONE unless tty?
74
+ color = Unparser::Color::NONE unless tty?
107
75
  color.format(message)
108
76
  end
109
77
 
110
- # Test if output is a tty
111
- #
112
- # @return [Boolean]
113
78
  def tty?
114
79
  output.tty?
115
80
  end
116
81
 
117
- # Test if output can be colored
118
- #
119
- # @return [Boolean]
120
- #
121
- # @api private
122
82
  alias_method :color?, :tty?
123
83
  end # Printer
124
84
  end # CLI
@@ -40,29 +40,14 @@ module Mutant
40
40
 
41
41
  private
42
42
 
43
- # Mutations processed per second
44
- #
45
- # @return [Float]
46
- #
47
- # @api private
48
43
  def mutations_per_second
49
44
  amount_mutation_results / runtime
50
45
  end
51
46
 
52
- # Coverage in percent
53
- #
54
- # @return [Float]
55
- #
56
- # @api private
57
47
  def coverage_percent
58
48
  coverage * 100
59
49
  end
60
50
 
61
- # Overhead in percent
62
- #
63
- # @return [Float]
64
- #
65
- # @api private
66
51
  def overhead_percent
67
52
  (overhead / killtime) * 100
68
53
  end
@@ -66,39 +66,24 @@ module Mutant
66
66
 
67
67
  private
68
68
 
69
- # Visit successful isolation result
70
- #
71
- # @return [undefined]
72
69
  def visit_success
73
70
  visit(TestResult, object.value)
74
71
  end
75
72
 
76
- # Print log messages
77
- #
78
- # @return [undefined]
79
73
  def print_log_messages
80
74
  log = object.log
81
75
 
82
76
  puts(LOG_MESSAGES % log) unless log.empty?
83
77
  end
84
78
 
85
- # Visit child error isolation result
86
- #
87
- # @return [undefined]
88
79
  def visit_child_error
89
80
  puts(CHILD_ERROR_MESSAGE % object.value.inspect)
90
81
  end
91
82
 
92
- # Visit fork error isolation result
93
- #
94
- # @return [undefined]
95
83
  def visit_fork_error
96
84
  puts(FORK_ERROR_MESSAGE)
97
85
  end
98
86
 
99
- # Visit exception isolation result
100
- #
101
- # @return [undefined]
102
87
  def visit_exception
103
88
  exception = object.value
104
89
 
@@ -110,9 +95,6 @@ module Mutant
110
95
  )
111
96
  end
112
97
 
113
- # Visit chain
114
- #
115
- # @return [undefined]
116
98
  def visit_chain
117
99
  printer = self.class
118
100
 
@@ -18,11 +18,6 @@ module Mutant
18
18
 
19
19
  private
20
20
 
21
- # Write colorized char
22
- #
23
- # @param [String] char
24
- #
25
- # @return [undefined]
26
21
  def char(char)
27
22
  output.write(colorize(status_color, char))
28
23
  end
@@ -59,9 +59,6 @@ module Mutant
59
59
 
60
60
  private
61
61
 
62
- # Print mutation details
63
- #
64
- # @return [undefined]
65
62
  def print_details
66
63
  __send__(MAP.fetch(mutation.class))
67
64
 
@@ -69,11 +66,8 @@ module Mutant
69
66
  visit_isolation_result
70
67
  end
71
68
 
72
- # Evil mutation details
73
- #
74
- # @return [String]
75
69
  def evil_details
76
- diff = Diff.build(mutation.original_source, mutation.source)
70
+ diff = Unparser::Diff.build(mutation.original_source, mutation.source)
77
71
  diff = color? ? diff.colorized_diff : diff.diff
78
72
  if diff
79
73
  output.write(diff)
@@ -82,9 +76,6 @@ module Mutant
82
76
  end
83
77
  end
84
78
 
85
- # Print no diff message
86
- #
87
- # @return [undefined]
88
79
  def print_no_diff_message
89
80
  info(
90
81
  NO_DIFF_MESSAGE,
@@ -95,30 +86,18 @@ module Mutant
95
86
  )
96
87
  end
97
88
 
98
- # Noop details
99
- #
100
- # @return [String]
101
89
  def noop_details
102
90
  info(NOOP_MESSAGE)
103
91
  end
104
92
 
105
- # Neutral details
106
- #
107
- # @return [String]
108
93
  def neutral_details
109
94
  info(NEUTRAL_MESSAGE, original_node.inspect, mutation.source)
110
95
  end
111
96
 
112
- # Visit failed test results
113
- #
114
- # @return [undefined]
115
97
  def visit_isolation_result
116
98
  visit(IsolationResult, isolation_result)
117
99
  end
118
100
 
119
- # Original node
120
- #
121
- # @return [Parser::AST::Node]
122
101
  def original_node
123
102
  mutation.subject.node
124
103
  end