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
@@ -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