mutest 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -15,7 +15,7 @@ module Mutest
15
15
  )
16
16
  private_constant(*constants(false))
17
17
 
18
- REGEXP = /\A#{SCOPE_NAME_PATTERN}#{SCOPE_SYMBOL_PATTERN}\z/
18
+ REGEXP = /\A#{SCOPE_NAME_PATTERN}#{SCOPE_SYMBOL_PATTERN}\z/.freeze
19
19
 
20
20
  # Syntax of expression
21
21
  #
@@ -53,6 +53,6 @@ module Mutest
53
53
  def scope
54
54
  Object.const_get(scope_name)
55
55
  end
56
- end # Methods
57
- end # Expression
58
- end # Mutest
56
+ end
57
+ end
58
+ end
@@ -2,12 +2,13 @@ module Mutest
2
2
  class Expression
3
3
  # Abstract base class for expressions matching namespaces
4
4
  class Namespace < self
5
- include AbstractType, Anima.new(:scope_name)
5
+ include Anima.new(:scope_name)
6
+ include AbstractType
6
7
  private(*anima.attribute_names)
7
8
 
8
9
  # Recursive namespace expression
9
10
  class Recursive < self
10
- REGEXP = /\A#{SCOPE_NAME_PATTERN}?\*\z/
11
+ REGEXP = /\A#{SCOPE_NAME_PATTERN}?\*\z/.freeze
11
12
 
12
13
  # Initialize object
13
14
  #
@@ -48,14 +49,14 @@ module Mutest
48
49
  0
49
50
  end
50
51
  end
51
- end # Recursive
52
+ end
52
53
 
53
54
  # Exact namespace expression
54
55
  class Exact < self
55
56
  MATCHER = Matcher::Scope
56
57
  private_constant(*constants(false))
57
58
 
58
- REGEXP = /\A#{SCOPE_NAME_PATTERN}\z/
59
+ REGEXP = /\A#{SCOPE_NAME_PATTERN}\z/.freeze
59
60
 
60
61
  # Matcher matcher on expression
61
62
  #
@@ -69,7 +70,7 @@ module Mutest
69
70
  # @return [String]
70
71
  alias_method :syntax, :scope_name
71
72
  public :syntax
72
- end # Exact
73
- end # Namespace
74
- end # Expression
75
- end # Mutest
73
+ end
74
+ end
75
+ end
76
+ end
@@ -5,7 +5,7 @@ module Mutest
5
5
 
6
6
  class ParserError < RuntimeError
7
7
  include AbstractType
8
- end # ParserError
8
+ end
9
9
 
10
10
  # Error raised on invalid expressions
11
11
  class InvalidExpressionError < ParserError; end
@@ -23,7 +23,7 @@ module Mutest
23
23
  # @raise [ParserError]
24
24
  # otherwise
25
25
  def call(input)
26
- try_parse(input) or fail InvalidExpressionError, "Expression: #{input.inspect} is not valid"
26
+ try_parse(input) or raise InvalidExpressionError, "Expression: #{input.inspect} is not valid"
27
27
  end
28
28
 
29
29
  # Try to parse input into expression
@@ -38,10 +38,11 @@ module Mutest
38
38
  def try_parse(input)
39
39
  expressions = expressions(input)
40
40
  case expressions.length
41
- when 0, 1
42
- expressions.first
41
+ when 0 # rubocop:disable Lint/EmptyWhen
42
+ when 1
43
+ Util.one(expressions)
43
44
  else
44
- fail AmbiguousExpressionError, "Ambiguous expression: #{input.inspect}"
45
+ raise AmbiguousExpressionError, "Ambiguous expression: #{input.inspect}"
45
46
  end
46
47
  end
47
48
 
@@ -59,6 +60,6 @@ module Mutest
59
60
  aggregate << expression if expression
60
61
  end
61
62
  end
62
- end # Parser
63
- end # Expression
64
- end # Mutest
63
+ end
64
+ end
65
+ end
@@ -1,7 +1,9 @@
1
1
  module Mutest
2
2
  # Abstract base class mutest test framework integrations
3
3
  class Integration
4
- include AbstractType, Adamantium::Flat, Concord.new(:config)
4
+ include Concord.new(:config)
5
+ include Adamantium::Flat
6
+ include AbstractType
5
7
 
6
8
  # Setup integration
7
9
  #
@@ -47,5 +49,5 @@ module Mutest
47
49
  def expression_parser
48
50
  config.expression_parser
49
51
  end
50
- end # Integration
51
- end # Mutest
52
+ end
53
+ end
@@ -22,6 +22,6 @@ module Mutest
22
22
  tests: tests
23
23
  )
24
24
  end
25
- end # Null
26
- end # Integration
27
- end # Mutest
25
+ end
26
+ end
27
+ end
@@ -7,5 +7,5 @@ module Mutest
7
7
  # @return [Object]
8
8
  # the blocks result
9
9
  abstract_method :call
10
- end # Isolation
11
- end # Mutest
10
+ end
11
+ end
@@ -22,7 +22,7 @@ module Mutest
22
22
  io.pipe(binmode: true) do |pipes|
23
23
  parent(*pipes, &block)
24
24
  end
25
- rescue => exception
25
+ rescue StandardError => exception
26
26
  raise Error, exception
27
27
  end
28
28
 
@@ -67,6 +67,6 @@ module Mutest
67
67
  yield
68
68
  end
69
69
  end
70
- end # Fork
71
- end # Isolation
72
- end # Mutest
70
+ end
71
+ end
72
+ end
@@ -15,9 +15,9 @@ module Mutest
15
15
  # if block terminates abnormal
16
16
  def call
17
17
  yield
18
- rescue => exception
18
+ rescue StandardError => exception
19
19
  raise Error, exception
20
20
  end
21
- end # None
22
- end # Isolation
23
- end # Mutest
21
+ end
22
+ end
23
+ end
@@ -23,5 +23,5 @@ module Mutest
23
23
  subject.source_line
24
24
  )
25
25
  end
26
- end # Loader
27
- end # Mutest
26
+ end
27
+ end
@@ -1,7 +1,8 @@
1
1
  module Mutest
2
2
  # Abstract matcher to find subjects to mutate
3
3
  class Matcher
4
- include Adamantium::Flat, AbstractType
4
+ include AbstractType
5
+ include Adamantium::Flat
5
6
 
6
7
  # Call matcher
7
8
  #
@@ -10,5 +11,5 @@ module Mutest
10
11
  # @return [Enumerable<Subject>]
11
12
  #
12
13
  abstract_method :call
13
- end # Matcher
14
- end # Mutest
14
+ end
15
+ end
@@ -14,6 +14,6 @@ module Mutest
14
14
  matcher.call(env)
15
15
  end
16
16
  end
17
- end # Chain
18
- end # Matcher
19
- end # Mutest
17
+ end
18
+ end
19
+ end
@@ -2,7 +2,9 @@ module Mutest
2
2
  class Matcher
3
3
  # Compiler for complex matchers
4
4
  class Compiler
5
- include Concord.new(:config), AST::Sexp, Procto.call(:result)
5
+ include Procto.call(:result)
6
+ include AST::Sexp
7
+ include Concord.new(:config)
6
8
 
7
9
  # Generated matcher
8
10
  #
@@ -29,7 +31,7 @@ module Mutest
29
31
  def call(subject)
30
32
  expression.prefix?(subject.expression)
31
33
  end
32
- end # SubjectPrefix
34
+ end
33
35
 
34
36
  private
35
37
 
@@ -50,6 +52,6 @@ module Mutest
50
52
  def filtered_subjects
51
53
  Morpher::Evaluator::Predicate::Boolean::And.new(config.subject_filters)
52
54
  end
53
- end # Compiler
54
- end # Matcher
55
- end # Mutest
55
+ end
56
+ end
57
+ end
@@ -2,11 +2,12 @@ module Mutest
2
2
  class Matcher
3
3
  # Subject matcher configuration
4
4
  class Config
5
- include Adamantium, Anima.new(
5
+ include Anima.new(
6
6
  :ignore_expressions,
7
7
  :match_expressions,
8
8
  :subject_filters
9
9
  )
10
+ include Adamantium
10
11
 
11
12
  INSPECT_FORMAT = "#<#{self} %s>".freeze
12
13
  ATTRIBUTE_DELIMITER = ' '.freeze
@@ -74,6 +75,6 @@ module Mutest
74
75
  .join(ENUM_DELIMITER)
75
76
  )
76
77
  end
77
- end # Config
78
- end # Matcher
79
- end # Mutest
78
+ end
79
+ end
80
+ end
@@ -14,6 +14,6 @@ module Mutest
14
14
  .call(env)
15
15
  .select(&predicate.method(:call))
16
16
  end
17
- end # Filter
18
- end # Matcher
19
- end # Mutest
17
+ end
18
+ end
19
+ end
@@ -2,13 +2,13 @@ module Mutest
2
2
  class Matcher
3
3
  # Abstract base class for method matchers
4
4
  class Method < self
5
- include AbstractType,
6
- Adamantium::Flat,
7
- Concord::Public.new(:scope, :target_method, :evaluator)
5
+ include Concord::Public.new(:scope, :target_method, :evaluator)
6
+ include Adamantium::Flat
7
+ include AbstractType
8
8
 
9
9
  # Methods within rbx kernel directory are precompiled and their source
10
10
  # cannot be accessed via reading source location. Same for methods created by eval.
11
- BLACKLIST = %r{\A(kernel/|\(eval\)\z)}
11
+ BLACKLIST = %r{\A(kernel/|\(eval\)\z)}.freeze
12
12
 
13
13
  SOURCE_LOCATION_WARNING_FORMAT =
14
14
  '%s does not have a valid source location, unable to emit subject'.freeze
@@ -31,11 +31,11 @@ module Mutest
31
31
  # logic would be implemented directly on the Matcher::Method
32
32
  # instance
33
33
  class Evaluator
34
- include AbstractType,
35
- Adamantium,
36
- Concord.new(:scope, :target_method, :env),
37
- Procto.call,
38
- AST::NodePredicates
34
+ include AST::NodePredicates
35
+ include Procto.call
36
+ include Concord.new(:scope, :target_method, :env)
37
+ include Adamantium
38
+ include AbstractType
39
39
 
40
40
  # Matched subjects
41
41
  #
@@ -128,9 +128,9 @@ module Mutest
128
128
  AST.find_last_path(ast, &method(:match?))
129
129
  end
130
130
  memoize :matched_node_path
131
- end # Evaluator
131
+ end
132
132
 
133
133
  private_constant(*constants(false))
134
- end # Method
135
- end # Matcher
136
- end # Mutest
134
+ end
135
+ end
136
+ end
@@ -53,11 +53,11 @@ module Mutest
53
53
  .unmemoized_instance_method(method_name)
54
54
  .source_location
55
55
  end
56
- end # Memoized
57
- end # Evaluator
56
+ end
57
+ end
58
58
 
59
59
  private_constant(*constants(false))
60
- end # Instance
61
- end # Method
62
- end # Matcher
63
- end # Mutest
60
+ end
61
+ end
62
+ end
63
+ end
@@ -79,10 +79,10 @@ module Mutest
79
79
  name = node.children.fetch(NAME_INDEX)
80
80
  name.to_s.eql?(context.unqualified_name)
81
81
  end
82
- end # Evaluator
82
+ end
83
83
 
84
84
  private_constant(*constants(false))
85
- end # Singleton
86
- end # Method
87
- end # Matcher
88
- end # Mutest
85
+ end
86
+ end
87
+ end
88
+ end
@@ -2,7 +2,8 @@ module Mutest
2
2
  class Matcher
3
3
  # Abstract base class for matcher that returns method subjects from scope
4
4
  class Methods < self
5
- include AbstractType, Concord.new(:scope)
5
+ include Concord.new(:scope)
6
+ include AbstractType
6
7
 
7
8
  CANDIDATE_NAMES = IceNine.deep_freeze(%i[
8
9
  public_instance_methods
@@ -80,7 +81,7 @@ module Mutest
80
81
  scope.singleton_class
81
82
  end
82
83
  memoize :candidate_scope, freezer: :noop
83
- end # Singleton
84
+ end
84
85
 
85
86
  # Matcher for instance methods
86
87
  class Instance < self
@@ -103,7 +104,7 @@ module Mutest
103
104
  def candidate_scope
104
105
  scope
105
106
  end
106
- end # Instance
107
- end # Methods
108
- end # Matcher
109
- end # Mutest
107
+ end
108
+ end
109
+ end
110
+ end
@@ -36,6 +36,6 @@ module Mutest
36
36
  def match?(scope)
37
37
  expression.prefix?(scope.expression)
38
38
  end
39
- end # Namespace
40
- end # Matcher
41
- end # Mutest
39
+ end
40
+ end
41
+ end
@@ -12,6 +12,6 @@ module Mutest
12
12
  def call(_env)
13
13
  EMPTY_ARRAY
14
14
  end
15
- end # Null
16
- end # Matcher
17
- end # Mutest
15
+ end
16
+ end
17
+ end
@@ -33,6 +33,6 @@ module Mutest
33
33
  def effective_matchers
34
34
  MATCHERS.map { |matcher| matcher.new(scope) }
35
35
  end
36
- end # Scope
37
- end # Matcher
38
- end # Mutest
36
+ end
37
+ end
38
+ end
@@ -10,6 +10,6 @@ module Mutest
10
10
  def call(_env)
11
11
  subjects
12
12
  end
13
- end # Static
14
- end # Matcher
15
- end # Mutest
13
+ end
14
+ end
15
+ end
@@ -14,7 +14,7 @@ module Mutest
14
14
  #
15
15
  # @return [undefined]
16
16
  def self.add(type, &block)
17
- file = caller.first.split(':in', 2).first
17
+ file = caller(1..1).first.split(':in', 2).first
18
18
  ALL << DSL.call(file, type, block)
19
19
  end
20
20
 
@@ -28,6 +28,6 @@ module Mutest
28
28
  class << self
29
29
  undef_method :add
30
30
  end
31
- end # Example
32
- end # Meta
33
- end # Mutest
31
+ end
32
+ end
33
+ end