mutest 0.0.9 → 0.0.10

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 (236) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +38 -0
  3. data/{config/rubocop.yml → .rubocop.yml} +80 -183
  4. data/CHANGELOG.md +8 -0
  5. data/Gemfile +2 -3
  6. data/Gemfile.lock +41 -52
  7. data/README.md +16 -0
  8. data/Rakefile +1 -1
  9. data/lib/mutest.rb +5 -4
  10. data/lib/mutest/actor.rb +7 -6
  11. data/lib/mutest/actor/env.rb +3 -3
  12. data/lib/mutest/actor/mailbox.rb +5 -4
  13. data/lib/mutest/actor/receiver.rb +6 -5
  14. data/lib/mutest/actor/sender.rb +5 -4
  15. data/lib/mutest/ast.rb +4 -3
  16. data/lib/mutest/ast/meta.rb +3 -3
  17. data/lib/mutest/ast/meta/const.rb +7 -5
  18. data/lib/mutest/ast/meta/optarg.rb +6 -5
  19. data/lib/mutest/ast/meta/resbody.rb +6 -5
  20. data/lib/mutest/ast/meta/restarg.rb +6 -5
  21. data/lib/mutest/ast/meta/send.rb +8 -20
  22. data/lib/mutest/ast/meta/symbol.rb +6 -5
  23. data/lib/mutest/ast/named_children.rb +5 -5
  24. data/lib/mutest/ast/node_predicates.rb +4 -4
  25. data/lib/mutest/ast/nodes.rb +3 -3
  26. data/lib/mutest/ast/regexp.rb +3 -3
  27. data/lib/mutest/ast/regexp/transformer.rb +19 -11
  28. data/lib/mutest/ast/regexp/transformer/alternative.rb +6 -6
  29. data/lib/mutest/ast/regexp/transformer/character_set.rb +7 -7
  30. data/lib/mutest/ast/regexp/transformer/direct.rb +7 -7
  31. data/lib/mutest/ast/regexp/transformer/options_group.rb +7 -7
  32. data/lib/mutest/ast/regexp/transformer/quantifier.rb +11 -13
  33. data/lib/mutest/ast/regexp/transformer/recursive.rb +7 -7
  34. data/lib/mutest/ast/regexp/transformer/root.rb +6 -6
  35. data/lib/mutest/ast/regexp/transformer/text.rb +7 -7
  36. data/lib/mutest/ast/sexp.rb +3 -3
  37. data/lib/mutest/ast/types.rb +8 -6
  38. data/lib/mutest/cli.rb +5 -3
  39. data/lib/mutest/color.rb +4 -3
  40. data/lib/mutest/config.rb +4 -3
  41. data/lib/mutest/context.rb +4 -3
  42. data/lib/mutest/diff.rb +5 -3
  43. data/lib/mutest/env.rb +5 -5
  44. data/lib/mutest/env/bootstrap.rb +7 -5
  45. data/lib/mutest/expression.rb +7 -5
  46. data/lib/mutest/expression/method.rb +4 -4
  47. data/lib/mutest/expression/methods.rb +4 -4
  48. data/lib/mutest/expression/namespace.rb +9 -8
  49. data/lib/mutest/expression/parser.rb +9 -8
  50. data/lib/mutest/integration.rb +5 -3
  51. data/lib/mutest/integration/null.rb +3 -3
  52. data/lib/mutest/isolation.rb +2 -2
  53. data/lib/mutest/isolation/fork.rb +4 -4
  54. data/lib/mutest/isolation/none.rb +4 -4
  55. data/lib/mutest/loader.rb +2 -2
  56. data/lib/mutest/matcher.rb +4 -3
  57. data/lib/mutest/matcher/chain.rb +3 -3
  58. data/lib/mutest/matcher/compiler.rb +7 -5
  59. data/lib/mutest/matcher/config.rb +5 -4
  60. data/lib/mutest/matcher/filter.rb +3 -3
  61. data/lib/mutest/matcher/method.rb +13 -13
  62. data/lib/mutest/matcher/method/instance.rb +6 -6
  63. data/lib/mutest/matcher/method/singleton.rb +5 -5
  64. data/lib/mutest/matcher/methods.rb +7 -6
  65. data/lib/mutest/matcher/namespace.rb +3 -3
  66. data/lib/mutest/matcher/null.rb +3 -3
  67. data/lib/mutest/matcher/scope.rb +3 -3
  68. data/lib/mutest/matcher/static.rb +3 -3
  69. data/lib/mutest/meta.rb +4 -4
  70. data/lib/mutest/meta/example.rb +5 -4
  71. data/lib/mutest/meta/example/dsl.rb +12 -11
  72. data/lib/mutest/meta/example/verification.rb +7 -6
  73. data/lib/mutest/mutation.rb +7 -6
  74. data/lib/mutest/mutator.rb +6 -6
  75. data/lib/mutest/mutator/node.rb +19 -7
  76. data/lib/mutest/mutator/node/and_asgn.rb +4 -4
  77. data/lib/mutest/mutator/node/argument.rb +6 -5
  78. data/lib/mutest/mutator/node/arguments.rb +18 -5
  79. data/lib/mutest/mutator/node/begin.rb +4 -4
  80. data/lib/mutest/mutator/node/binary.rb +4 -4
  81. data/lib/mutest/mutator/node/block.rb +6 -5
  82. data/lib/mutest/mutator/node/block_pass.rb +4 -4
  83. data/lib/mutest/mutator/node/break.rb +4 -4
  84. data/lib/mutest/mutator/node/case.rb +6 -4
  85. data/lib/mutest/mutator/node/class.rb +4 -4
  86. data/lib/mutest/mutator/node/conditional_loop.rb +4 -4
  87. data/lib/mutest/mutator/node/const.rb +4 -4
  88. data/lib/mutest/mutator/node/define.rb +6 -6
  89. data/lib/mutest/mutator/node/defined.rb +4 -4
  90. data/lib/mutest/mutator/node/dstr.rb +4 -4
  91. data/lib/mutest/mutator/node/dsym.rb +4 -4
  92. data/lib/mutest/mutator/node/generic.rb +5 -4
  93. data/lib/mutest/mutator/node/if.rb +6 -4
  94. data/lib/mutest/mutator/node/index.rb +128 -0
  95. data/lib/mutest/mutator/node/kwbegin.rb +4 -4
  96. data/lib/mutest/mutator/node/literal.rb +4 -4
  97. data/lib/mutest/mutator/node/literal/array.rb +8 -6
  98. data/lib/mutest/mutator/node/literal/boolean.rb +5 -5
  99. data/lib/mutest/mutator/node/literal/fixnum.rb +5 -5
  100. data/lib/mutest/mutator/node/literal/float.rb +5 -5
  101. data/lib/mutest/mutator/node/literal/hash.rb +6 -6
  102. data/lib/mutest/mutator/node/literal/nil.rb +5 -5
  103. data/lib/mutest/mutator/node/literal/range.rb +5 -5
  104. data/lib/mutest/mutator/node/literal/regex.rb +5 -5
  105. data/lib/mutest/mutator/node/literal/string.rb +5 -5
  106. data/lib/mutest/mutator/node/literal/symbol.rb +5 -5
  107. data/lib/mutest/mutator/node/masgn.rb +4 -4
  108. data/lib/mutest/mutator/node/match_current_line.rb +4 -4
  109. data/lib/mutest/mutator/node/mlhs.rb +4 -4
  110. data/lib/mutest/mutator/node/named_value/access.rb +6 -6
  111. data/lib/mutest/mutator/node/named_value/constant_assignment.rb +6 -5
  112. data/lib/mutest/mutator/node/named_value/variable_assignment.rb +5 -5
  113. data/lib/mutest/mutator/node/next.rb +4 -4
  114. data/lib/mutest/mutator/node/nthref.rb +4 -4
  115. data/lib/mutest/mutator/node/op_asgn.rb +4 -4
  116. data/lib/mutest/mutator/node/or_asgn.rb +5 -4
  117. data/lib/mutest/mutator/node/procarg_zero.rb +45 -0
  118. data/lib/mutest/mutator/node/regexp.rb +6 -6
  119. data/lib/mutest/mutator/node/regexp/alternation_meta.rb +5 -5
  120. data/lib/mutest/mutator/node/regexp/capture_group.rb +5 -5
  121. data/lib/mutest/mutator/node/regexp/character_type.rb +5 -5
  122. data/lib/mutest/mutator/node/regexp/end_of_line_anchor.rb +5 -5
  123. data/lib/mutest/mutator/node/regexp/end_of_string_or_before_end_of_line_anchor.rb +5 -5
  124. data/lib/mutest/mutator/node/regexp/one_or_more.rb +5 -5
  125. data/lib/mutest/mutator/node/regexp/zero_or_more.rb +5 -5
  126. data/lib/mutest/mutator/node/regopt.rb +4 -4
  127. data/lib/mutest/mutator/node/resbody.rb +6 -4
  128. data/lib/mutest/mutator/node/rescue.rb +6 -4
  129. data/lib/mutest/mutator/node/return.rb +5 -4
  130. data/lib/mutest/mutator/node/send.rb +6 -34
  131. data/lib/mutest/mutator/node/send/attribute_assignment.rb +5 -5
  132. data/lib/mutest/mutator/node/send/binary.rb +5 -5
  133. data/lib/mutest/mutator/node/send/conditional.rb +5 -5
  134. data/lib/mutest/mutator/node/splat.rb +4 -4
  135. data/lib/mutest/mutator/node/super.rb +4 -4
  136. data/lib/mutest/mutator/node/when.rb +4 -4
  137. data/lib/mutest/mutator/node/yield.rb +4 -4
  138. data/lib/mutest/mutator/node/zsuper.rb +4 -4
  139. data/lib/mutest/mutator/util.rb +3 -3
  140. data/lib/mutest/mutator/util/array.rb +6 -6
  141. data/lib/mutest/mutator/util/symbol.rb +4 -4
  142. data/lib/mutest/parallel.rb +16 -12
  143. data/lib/mutest/parallel/master.rb +4 -4
  144. data/lib/mutest/parallel/source.rb +6 -5
  145. data/lib/mutest/parallel/worker.rb +6 -5
  146. data/lib/mutest/parser.rb +4 -3
  147. data/lib/mutest/registry.rb +6 -5
  148. data/lib/mutest/reporter.rb +2 -2
  149. data/lib/mutest/reporter/cli.rb +3 -3
  150. data/lib/mutest/reporter/cli/format.rb +9 -8
  151. data/lib/mutest/reporter/cli/printer.rb +8 -8
  152. data/lib/mutest/reporter/cli/printer/config.rb +5 -5
  153. data/lib/mutest/reporter/cli/printer/env_progress.rb +16 -16
  154. data/lib/mutest/reporter/cli/printer/env_result.rb +5 -5
  155. data/lib/mutest/reporter/cli/printer/mutation_progress_result.rb +5 -5
  156. data/lib/mutest/reporter/cli/printer/mutation_result.rb +5 -5
  157. data/lib/mutest/reporter/cli/printer/status.rb +6 -5
  158. data/lib/mutest/reporter/cli/printer/status_progressive.rb +5 -5
  159. data/lib/mutest/reporter/cli/printer/subject_progress.rb +5 -5
  160. data/lib/mutest/reporter/cli/printer/subject_result.rb +5 -5
  161. data/lib/mutest/reporter/cli/printer/test_result.rb +5 -5
  162. data/lib/mutest/reporter/cli/tput.rb +6 -5
  163. data/lib/mutest/reporter/null.rb +3 -3
  164. data/lib/mutest/reporter/sequence.rb +3 -3
  165. data/lib/mutest/repository.rb +9 -7
  166. data/lib/mutest/require_highjack.rb +2 -2
  167. data/lib/mutest/requirer.rb +2 -2
  168. data/lib/mutest/result.rb +18 -12
  169. data/lib/mutest/runner.rb +6 -3
  170. data/lib/mutest/runner/sink.rb +3 -3
  171. data/lib/mutest/scope.rb +2 -2
  172. data/lib/mutest/selector.rb +4 -3
  173. data/lib/mutest/selector/expression.rb +3 -3
  174. data/lib/mutest/source_file.rb +6 -5
  175. data/lib/mutest/subject.rb +5 -3
  176. data/lib/mutest/subject/method.rb +3 -3
  177. data/lib/mutest/subject/method/instance.rb +5 -5
  178. data/lib/mutest/subject/method/singleton.rb +4 -4
  179. data/lib/mutest/test.rb +4 -3
  180. data/lib/mutest/util.rb +3 -3
  181. data/lib/mutest/version.rb +2 -2
  182. data/lib/mutest/warning_filter.rb +3 -3
  183. data/lib/mutest/zombifier.rb +5 -4
  184. data/meta/block.rb +22 -3
  185. data/meta/case.rb +29 -1
  186. data/meta/index.rb +132 -0
  187. data/meta/indexasgn.rb +42 -0
  188. data/meta/lambda.rb +17 -0
  189. data/meta/send.rb +5 -139
  190. data/mutest-rspec.gemspec +1 -1
  191. data/mutest.gemspec +11 -12
  192. data/spec/integration/mutest/rspec_spec.rb +1 -1
  193. data/spec/shared/framework_integration_behavior.rb +1 -1
  194. data/spec/shared/idempotent_method_behavior.rb +2 -1
  195. data/spec/spec_helper.rb +5 -5
  196. data/spec/support/compress_helper.rb +2 -1
  197. data/spec/support/corpus.rb +12 -8
  198. data/spec/support/fake_actor.rb +19 -14
  199. data/spec/support/file_system.rb +10 -7
  200. data/spec/support/ice_nine_config.rb +3 -3
  201. data/spec/support/ruby_vm.rb +10 -11
  202. data/spec/support/shared_context.rb +1 -1
  203. data/spec/support/test_app.rb +1 -1
  204. data/spec/support/warning.rb +8 -7
  205. data/spec/support/xspec.rb +18 -17
  206. data/spec/unit/mutest/actor/binding_spec.rb +1 -0
  207. data/spec/unit/mutest/ast/meta/optarg_spec.rb +1 -0
  208. data/spec/unit/mutest/ast/meta/send/proc_predicate_spec.rb +1 -1
  209. data/spec/unit/mutest/ast/meta/send/receiver_possible_top_level_const_predicate_spec.rb +1 -1
  210. data/spec/unit/mutest/ast/meta/send_spec.rb +14 -18
  211. data/spec/unit/mutest/ast/regexp_spec.rb +4 -3
  212. data/spec/unit/mutest/ast_spec.rb +1 -1
  213. data/spec/unit/mutest/cli_spec.rb +15 -15
  214. data/spec/unit/mutest/env/bootstrap_spec.rb +1 -1
  215. data/spec/unit/mutest/integration_spec.rb +1 -0
  216. data/spec/unit/mutest/isolation/none_spec.rb +1 -1
  217. data/spec/unit/mutest/matcher/config_spec.rb +1 -0
  218. data/spec/unit/mutest/mutator/node_spec.rb +1 -1
  219. data/spec/unit/mutest/parallel/master_spec.rb +3 -3
  220. data/spec/unit/mutest/reporter/cli/printer_spec.rb +2 -0
  221. data/spec/unit/mutest/reporter/cli/tput_spec.rb +2 -0
  222. data/spec/unit/mutest/reporter/cli_spec.rb +2 -0
  223. data/spec/unit/mutest/repository/diff_spec.rb +1 -1
  224. data/spec/unit/mutest/runner_spec.rb +1 -1
  225. data/spec/unit/mutest/subject_spec.rb +1 -1
  226. data/spec/unit/mutest/warning_filter_spec.rb +2 -3
  227. data/spec/unit/mutest/zombifier_spec.rb +1 -1
  228. data/test_app/Gemfile.rspec3.8 +7 -0
  229. metadata +67 -68
  230. data/.buildkite/hooks/pre-command +0 -3
  231. data/.buildkite/pipeline.yml +0 -38
  232. data/.gitmodules +0 -3
  233. data/circle.yml +0 -10
  234. data/config/triage.yml +0 -2
  235. data/config/yardstick.yml +0 -2
  236. data/lib/mutest/mutator/node/send/index.rb +0 -47
@@ -13,8 +13,8 @@ module Mutest
13
13
  visit_collection(SubjectResult, failed_subject_results)
14
14
  visit(EnvProgress, object)
15
15
  end
16
- end # EnvResult
17
- end # Printer
18
- end # CLI
19
- end # Reporter
20
- end # Mutest
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -24,8 +24,8 @@ module Mutest
24
24
  def char(char)
25
25
  output.write(colorize(status_color, char))
26
26
  end
27
- end # MutationProgressResult
28
- end # Printer
29
- end # CLI
30
- end # Reporter
31
- end # Mutest
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -118,8 +118,8 @@ module Mutest
118
118
  def original_node
119
119
  mutation.subject.node
120
120
  end
121
- end # MutationResult
122
- end # Printer
123
- end # CLI
124
- end # Reporter
125
- end # Mutest
121
+ end
122
+ end
123
+ end
124
+ end
125
+ end
@@ -26,6 +26,7 @@ module Mutest
26
26
  # @return [undefined]
27
27
  def job_status
28
28
  return if active_jobs.empty?
29
+
29
30
  info(ACTIVE_JOB_HEADER)
30
31
  active_jobs.sort_by(&:index).each do |job|
31
32
  info(ACTIVE_JOB_FORMAT, job.index, job.payload.identification)
@@ -42,8 +43,8 @@ module Mutest
42
43
  active_subjects.include?(subject_result.subject)
43
44
  end
44
45
  end
45
- end # Status
46
- end # Printer
47
- end # CLI
48
- end # Reporter
49
- end # Mutest
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -39,8 +39,8 @@ module Mutest
39
39
  def object
40
40
  super().payload
41
41
  end
42
- end # StatusProgressive
43
- end # Printer
44
- end # CLI
45
- end # Reporter
46
- end # Mutest
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -58,8 +58,8 @@ module Mutest
58
58
  def print_mutation_results
59
59
  visit_collection(MutationProgressResult, object.mutation_results)
60
60
  end
61
- end # SubjectProgress
62
- end # Printer
63
- end # CLI
64
- end # Reporter
65
- end # Mutest
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -16,8 +16,8 @@ module Mutest
16
16
  end
17
17
  visit_collection(MutationResult, alive_mutation_results)
18
18
  end
19
- end # SubjectResult
20
- end # Printer
21
- end # CLI
22
- end # Reporter
23
- end # Mutest
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -21,8 +21,8 @@ module Mutest
21
21
  puts(OUTPUT_HEADER)
22
22
  puts(object.output)
23
23
  end
24
- end # TestResult
25
- end # Printer
26
- end # CLI
27
- end # Reporter
28
- end # Mutest
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -3,7 +3,8 @@ module Mutest
3
3
  class CLI
4
4
  # Interface to the optionally present tput binary
5
5
  class Tput
6
- include Adamantium, Concord::Public.new(:prepare, :restore)
6
+ include Concord::Public.new(:prepare, :restore)
7
+ include Adamantium
7
8
 
8
9
  private_class_method :new
9
10
 
@@ -37,7 +38,7 @@ module Mutest
37
38
  stdout if exitstatus.success?
38
39
  end
39
40
  private_class_method :capture
40
- end # Tput
41
- end # CLI
42
- end # Reporter
43
- end # Mutest
41
+ end
42
+ end
43
+ end
44
+ end
@@ -9,6 +9,6 @@ module Mutest
9
9
  self
10
10
  end
11
11
  end
12
- end # Null
13
- end # Reporter
14
- end # Mutest
12
+ end
13
+ end
14
+ end
@@ -19,6 +19,6 @@ module Mutest
19
19
  def delay
20
20
  reporters.map(&:delay).min
21
21
  end
22
- end # Sequence
23
- end # Reporter
24
- end # Mutest
22
+ end
23
+ end
24
+ end
@@ -5,7 +5,8 @@ module Mutest
5
5
 
6
6
  # Subject filter based on repository diff
7
7
  class SubjectFilter
8
- include Adamantium, Concord.new(:diff)
8
+ include Concord.new(:diff)
9
+ include Adamantium
9
10
 
10
11
  # Test if subject was touched in diff
11
12
  #
@@ -15,11 +16,12 @@ module Mutest
15
16
  def call(subject)
16
17
  diff.touches?(subject.source_path, subject.source_lines)
17
18
  end
18
- end # SubjectFilter
19
+ end
19
20
 
20
21
  # Diff between two objects in repository
21
22
  class Diff
22
- include Adamantium, Anima.new(:config, :from, :to)
23
+ include Anima.new(:config, :from, :to)
24
+ include Adamantium
23
25
 
24
26
  HEAD = 'HEAD'.freeze
25
27
 
@@ -43,7 +45,7 @@ module Mutest
43
45
 
44
46
  stdout, status = config.open3.capture2(*command, binmode: true)
45
47
 
46
- fail RepositoryError, "Command #{command} failed!" unless status.success?
48
+ raise RepositoryError, "Command #{command} failed!" unless status.success?
47
49
 
48
50
  !stdout.empty?
49
51
  end
@@ -75,6 +77,6 @@ module Mutest
75
77
  working_directory = config.pathname.pwd
76
78
  path.ascend { |parent| return true if working_directory.eql?(parent) }
77
79
  end
78
- end # Diff
79
- end # Repository
80
- end # Mutest
80
+ end
81
+ end
82
+ end
@@ -20,5 +20,5 @@ module Mutest
20
20
  end
21
21
  end
22
22
  end
23
- end # RequireHighjack
24
- end # Mutest
23
+ end
24
+ end
@@ -2,5 +2,5 @@ module Mutest
2
2
  # Class that exposes #require as a public method
3
3
  class Requirer
4
4
  public :require
5
- end # Requirer
6
- end # Mutest
5
+ end
6
+ end
@@ -16,7 +16,7 @@ module Mutest
16
16
  Rational(amount_mutations_killed, amount_mutation_results)
17
17
  end
18
18
  end
19
- end # Coverage
19
+ end
20
20
 
21
21
  # Class level mixin
22
22
  module ClassMethods
@@ -35,7 +35,7 @@ module Mutest
35
35
  end
36
36
  memoize(name)
37
37
  end
38
- end # ClassMethods
38
+ end
39
39
 
40
40
  private_constant(*constants(false))
41
41
 
@@ -64,11 +64,13 @@ module Mutest
64
64
 
65
65
  # Env result object
66
66
  class Env
67
- include Coverage, Result, Anima.new(
67
+ include Anima.new(
68
68
  :env,
69
69
  :runtime,
70
70
  :subject_results
71
71
  )
72
+ include Result
73
+ include Coverage
72
74
 
73
75
  # Test if run is successful
74
76
  #
@@ -103,25 +105,28 @@ module Mutest
103
105
  def amount_subjects
104
106
  env.subjects.length
105
107
  end
106
- end # Env
108
+ end
107
109
 
108
110
  # Test result
109
111
  class Test
110
- include Result, Anima.new(
112
+ include Anima.new(
111
113
  :output,
112
114
  :passed,
113
115
  :runtime,
114
116
  :tests
115
117
  )
116
- end # Test
118
+ include Result
119
+ end
117
120
 
118
121
  # Subject result
119
122
  class Subject
120
- include Coverage, Result, Anima.new(
123
+ include Anima.new(
121
124
  :mutation_results,
122
125
  :subject,
123
126
  :tests
124
127
  )
128
+ include Result
129
+ include Coverage
125
130
 
126
131
  sum :killtime, :mutation_results
127
132
  sum :runtime, :mutation_results
@@ -178,14 +183,15 @@ module Mutest
178
183
  mutation_results.select(&:success?)
179
184
  end
180
185
  memoize :killed_mutation_results
181
- end # Subject
186
+ end
182
187
 
183
188
  # Mutation result
184
189
  class Mutation
185
- include Result, Anima.new(
190
+ include Anima.new(
186
191
  :mutation,
187
192
  :test_result
188
193
  )
194
+ include Result
189
195
 
190
196
  # The runtime
191
197
  #
@@ -207,6 +213,6 @@ module Mutest
207
213
  def success?
208
214
  mutation.class.success?(test_result)
209
215
  end
210
- end # Mutation
211
- end # Result
212
- end # Mutest
216
+ end
217
+ end
218
+ end
@@ -1,7 +1,9 @@
1
1
  module Mutest
2
2
  # Runner baseclass
3
3
  class Runner
4
- include Adamantium::Flat, Concord.new(:env), Procto.call(:result)
4
+ include Procto.call(:result)
5
+ include Concord.new(:env)
6
+ include Adamantium::Flat
5
7
 
6
8
  # Initialize object
7
9
  #
@@ -43,6 +45,7 @@ module Mutest
43
45
  status = driver.status
44
46
  reporter.progress(status)
45
47
  break if status.done
48
+
46
49
  sleep.call(reporter.delay)
47
50
  end
48
51
 
@@ -77,5 +80,5 @@ module Mutest
77
80
  def config
78
81
  env.config
79
82
  end
80
- end # Runner
81
- end # Mutest
83
+ end
84
+ end
@@ -58,6 +58,6 @@ module Mutest
58
58
  subject_result = @subject_results.fetch(subject) { return EMPTY_ARRAY }
59
59
  subject_result.mutation_results
60
60
  end
61
- end # Sink
62
- end # Runner
63
- end # Mutest
61
+ end
62
+ end
63
+ end
@@ -2,5 +2,5 @@ module Mutest
2
2
  # Class or Module bound to an exact expression
3
3
  class Scope
4
4
  include Concord::Public.new(:raw, :expression)
5
- end # Scope
6
- end # Mutest
5
+ end
6
+ end
@@ -1,7 +1,8 @@
1
1
  module Mutest
2
2
  # Abstract base class for test selectors
3
3
  class Selector
4
- include AbstractType, Adamantium::Flat
4
+ include Adamantium::Flat
5
+ include AbstractType
5
6
 
6
7
  # Tests for subject
7
8
  #
@@ -9,5 +10,5 @@ module Mutest
9
10
  #
10
11
  # @return [Enumerable<Test>]
11
12
  abstract_method :call
12
- end # Selector
13
- end # Mutest
13
+ end
14
+ end
@@ -20,6 +20,6 @@ module Mutest
20
20
 
21
21
  EMPTY_ARRAY
22
22
  end
23
- end # Expression
24
- end # Selector
25
- end # Mutest
23
+ end
24
+ end
25
+ end
@@ -1,7 +1,8 @@
1
1
  module Mutest
2
2
  # A source file representation
3
3
  class SourceFile
4
- include Concord::Public.new(:path, :ast), Adamantium
4
+ include Adamantium
5
+ include Concord::Public.new(:path, :ast)
5
6
 
6
7
  COMMENT_TEXT = '# mutest:disable'.freeze
7
8
 
@@ -9,7 +10,7 @@ module Mutest
9
10
  #
10
11
  # @return [undefined]
11
12
  def self.read(path)
12
- new(path, *::Parser::CurrentRuby.parse_with_comments(path.read))
13
+ new(path, *Unparser.parse_with_comments(path.read))
13
14
  end
14
15
 
15
16
  def initialize(path, ast, comments)
@@ -22,7 +23,7 @@ module Mutest
22
23
  # TODO: Support inline comment disable
23
24
  def ignore?(node)
24
25
  location = node.location
25
- return false unless location && location.expression
26
+ return false unless location&.expression
26
27
 
27
28
  disable_lines.include?(location.line)
28
29
  end
@@ -43,5 +44,5 @@ module Mutest
43
44
  comment.text.eql?(COMMENT_TEXT)
44
45
  end
45
46
  end
46
- end # SourceFile
47
- end # Mutest
47
+ end
48
+ end
@@ -1,7 +1,9 @@
1
1
  module Mutest
2
2
  # Subject of a mutation
3
3
  class Subject
4
- include AbstractType, Adamantium::Flat, Enumerable
4
+ include Enumerable
5
+ include Adamantium::Flat
6
+ include AbstractType
5
7
  include Concord::Public.new(:context, :node)
6
8
 
7
9
  # Mutations for this subject
@@ -90,5 +92,5 @@ module Mutest
90
92
  def wrap_node(node)
91
93
  node
92
94
  end
93
- end # Subject
94
- end # Mutest
95
+ end
96
+ end