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
@@ -31,9 +31,9 @@ module Mutest
31
31
  alt.expressions = subexpressions
32
32
  end
33
33
  end
34
- end # ASTToExpression
35
- end # Alternative
36
- end # Transformer
37
- end # Regexp
38
- end # AST
39
- end # Mutest
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -18,7 +18,7 @@ module Mutest
18
18
  def call
19
19
  quantify(ast(*expression.members))
20
20
  end
21
- end # ExpressionToAST
21
+ end
22
22
 
23
23
  # Mapper from `Parser::AST::Node` to `Regexp::Expression`
24
24
  class ASTToExpression < Transformer::ASTToExpression
@@ -38,9 +38,9 @@ module Mutest
38
38
  expression.members = node.children
39
39
  end
40
40
  end
41
- end # ASTToExpression
42
- end # CharacterSet
43
- end # Transformer
44
- end # Regexp
45
- end # AST
46
- end # Mutest
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -28,7 +28,7 @@ module Mutest
28
28
  def call
29
29
  quantify(ast)
30
30
  end
31
- end # ExpressionToAST
31
+ end
32
32
 
33
33
  # Mapper from `Parser::AST::Node` to `Regexp::Expression`
34
34
  class ASTToExpression < Transformer::ASTToExpression
@@ -91,11 +91,11 @@ module Mutest
91
91
  def transform
92
92
  expression_class.new(expression_token)
93
93
  end
94
- end # ASTToExpression
94
+ end
95
95
 
96
96
  ASTToExpression::TABLE.types.each(&method(:register))
97
- end # Direct
98
- end # Transformer
99
- end # Regexp
100
- end # AST
101
- end # Mutest
97
+ end
98
+ end
99
+ end
100
+ end
101
+ end
@@ -14,7 +14,7 @@ module Mutest
14
14
  def call
15
15
  quantify(ast(expression.options, *children))
16
16
  end
17
- end # ExpressionToAST
17
+ end
18
18
 
19
19
  # Mapper from `Parser::AST::Node` to `Regexp::Expression`
20
20
  class ASTToExpression < Transformer::ASTToExpression
@@ -57,9 +57,9 @@ module Mutest
57
57
 
58
58
  "(?#{flags}-:"
59
59
  end
60
- end # ASTToExpression
61
- end # OptionsGroup
62
- end # Transformer
63
- end # Regexp
64
- end # AST
65
- end # Mutest
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -21,7 +21,7 @@ module Mutest
21
21
  def type
22
22
  :"regexp_#{expression.mode}_#{expression.token}"
23
23
  end
24
- end # ExpressionToAST
24
+ end
25
25
 
26
26
  # Mapper from `Parser::AST::Node` to `Regexp::Expression`
27
27
  class ASTToExpression < Transformer::ASTToExpression
@@ -101,9 +101,7 @@ module Mutest
101
101
  def initialize(*)
102
102
  super
103
103
 
104
- unless valid_min? && valid_max?
105
- fail ArgumentError, 'Unexpected quantifier interval bound.'
106
- end
104
+ raise ArgumentError, 'Unexpected quantifier interval bound.' unless valid_min? && valid_max?
107
105
  end
108
106
 
109
107
  def to_s
@@ -113,7 +111,7 @@ module Mutest
113
111
  private
114
112
 
115
113
  def compacted_interval
116
- [min, max].map { |bound| bound if bound > 0 }.uniq
114
+ [min, max].map { |bound| bound if bound.positive? }.uniq
117
115
  end
118
116
 
119
117
  def valid_min?
@@ -121,14 +119,14 @@ module Mutest
121
119
  end
122
120
 
123
121
  def valid_max?
124
- max > 0 || max.equal?(-1)
122
+ max.positive? || max.equal?(-1)
125
123
  end
126
- end # Interval
127
- end # ASTToExpression
124
+ end
125
+ end
128
126
 
129
127
  ASTToExpression::QUANTIFIER_MAP.keys.each(&method(:register))
130
- end # Quantifier
131
- end # Transformer
132
- end # Regexp
133
- end # AST
134
- end # Mutest
128
+ end
129
+ end
130
+ end
131
+ end
132
+ end
@@ -12,7 +12,7 @@ module Mutest
12
12
  def call
13
13
  quantify(ast(*children))
14
14
  end
15
- end # ExpressionToAST
15
+ end
16
16
 
17
17
  # Mapper from `Parser::AST::Node` to `Regexp::Expression`
18
18
  class ASTToExpression < Transformer::ASTToExpression
@@ -40,11 +40,11 @@ module Mutest
40
40
  expression.expressions = subexpressions
41
41
  end
42
42
  end
43
- end # ASTToExpression
43
+ end
44
44
 
45
45
  ASTToExpression::TABLE.types.each(&method(:register))
46
- end # Recursive
47
- end # Transformer
48
- end # Regexp
49
- end # AST
50
- end # Mutest
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -20,9 +20,9 @@ module Mutest
20
20
  root.expressions = subexpressions
21
21
  end
22
22
  end
23
- end # ASTToExpression
24
- end # Root
25
- end # Transformer
26
- end # Regexp
27
- end # AST
28
- end # Mutest
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -12,7 +12,7 @@ module Mutest
12
12
  def call
13
13
  quantify(ast(expression.text))
14
14
  end
15
- end # ExpressionToAST
15
+ end
16
16
 
17
17
  # Mapper from `Parser::AST::Node` to `Regexp::Expression`
18
18
  class ASTToExpression < Transformer::ASTToExpression
@@ -47,11 +47,11 @@ module Mutest
47
47
  token.text = Util.one(node.children)
48
48
  expression_class.new(token)
49
49
  end
50
- end # ASTToExpression
50
+ end
51
51
 
52
52
  ASTToExpression::TABLE.types.each(&method(:register))
53
- end # Text
54
- end # Transformer
55
- end # Regexp
56
- end # AST
57
- end # Mutest
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -21,6 +21,6 @@ module Mutest
21
21
  def n_not(node)
22
22
  s(:send, node, :!)
23
23
  end
24
- end # Sexp
25
- end # AST
26
- end # Mutest
24
+ end
25
+ end
26
+ end
@@ -132,10 +132,12 @@ module Mutest
132
132
  # Nodes that are NOT generated by parser but used by mutest / unparser.
133
133
  GENERATED = symbolset.(%w[empty])
134
134
 
135
- EXTRA = symbolset.(GENERATED + REGEXP)
135
+ # Nodes missing from parser metadata
136
+ MISSING = Set.new(%i[index indexasgn lambda procarg0]).freeze
136
137
 
137
- # All node types mutest handles
138
- ALL = symbolset.((Parser::Meta::NODE_TYPES + EXTRA) - BLACKLIST)
139
- end # Types
140
- end # AST
141
- end # Mutest
138
+ ALL = Set.new(
139
+ (Parser::Meta::NODE_TYPES + GENERATED + REGEXP + MISSING) - BLACKLIST
140
+ ).freeze
141
+ end
142
+ end
143
+ end
@@ -1,7 +1,9 @@
1
1
  module Mutest
2
2
  # Commandline parser / runner
3
3
  class CLI
4
- include Adamantium::Flat, Equalizer.new(:config), Procto.call(:config)
4
+ include Procto.call(:config)
5
+ include Equalizer.new(:config)
6
+ include Adamantium::Flat
5
7
 
6
8
  # Error failed when CLI argv is invalid
7
9
  Error = Class.new(RuntimeError)
@@ -192,5 +194,5 @@ module Mutest
192
194
  def add_matcher(attribute, value)
193
195
  with(matcher: config.matcher.add(attribute, value))
194
196
  end
195
- end # CLI
196
- end # Mutest
197
+ end
198
+ end
@@ -1,7 +1,8 @@
1
1
  module Mutest
2
2
  # Class to colorize strings
3
3
  class Color
4
- include Adamantium::Flat, Concord.new(:code)
4
+ include Concord.new(:code)
5
+ include Adamantium::Flat
5
6
 
6
7
  # Format text with color
7
8
  #
@@ -35,5 +36,5 @@ module Mutest
35
36
  RED = Color.new(31)
36
37
  GREEN = Color.new(32)
37
38
  BLUE = Color.new(34)
38
- end # Color
39
- end # Mutest
39
+ end
40
+ end
@@ -4,7 +4,7 @@ module Mutest
4
4
  # Does not reference any "external" volatile state. The configuration applied
5
5
  # to current environment is being represented by the Mutest::Env object.
6
6
  class Config
7
- include Adamantium::Flat, Anima.new(
7
+ include Anima.new(
8
8
  :expression_parser,
9
9
  :fail_fast,
10
10
  :integration,
@@ -21,9 +21,10 @@ module Mutest
21
21
  :reporter,
22
22
  :zombie
23
23
  )
24
+ include Adamantium::Flat
24
25
 
25
26
  %i[fail_fast zombie].each do |name|
26
27
  define_method(:"#{name}?") { public_send(name) }
27
28
  end
28
- end # Config
29
- end # Mutest
29
+ end
30
+ end
@@ -1,7 +1,8 @@
1
1
  module Mutest
2
2
  # An abstract context where mutations can be applied to.
3
3
  class Context
4
- include Adamantium::Flat, Concord::Public.new(:scope, :source_file)
4
+ include Concord::Public.new(:scope, :source_file)
5
+ include Adamantium::Flat
5
6
  extend AST::Sexp
6
7
 
7
8
  NAMESPACE_DELIMITER = '::'.freeze
@@ -94,5 +95,5 @@ module Mutest
94
95
  scope.name.split(NAMESPACE_DELIMITER)
95
96
  end
96
97
  memoize :name_nesting
97
- end # Context
98
- end # Mutest
98
+ end
99
+ end
@@ -1,7 +1,8 @@
1
1
  module Mutest
2
2
  # Class to create diffs from source code
3
3
  class Diff
4
- include Adamantium::Flat, Concord.new(:old, :new)
4
+ include Concord.new(:old, :new)
5
+ include Adamantium::Flat
5
6
 
6
7
  ADDITION = '+'.freeze
7
8
  DELETION = '-'.freeze
@@ -30,6 +31,7 @@ module Mutest
30
31
  # otherwise
31
32
  def colorized_diff
32
33
  return unless diff
34
+
33
35
  diff.lines.map(&self.class.method(:colorize_line)).join
34
36
  end
35
37
  memoize :colorized_diff
@@ -107,5 +109,5 @@ module Mutest
107
109
  end.format(line)
108
110
  end
109
111
  private_class_method :colorize_line
110
- end # Diff
111
- end # Mutest
112
+ end
113
+ end
@@ -1,7 +1,7 @@
1
1
  module Mutest
2
2
  # Abstract base class for mutest environments
3
3
  class Env
4
- include Adamantium::Flat, Anima.new(
4
+ include Anima.new(
5
5
  :actor_env,
6
6
  :config,
7
7
  :integration,
@@ -11,6 +11,7 @@ module Mutest
11
11
  :selector,
12
12
  :subjects
13
13
  )
14
+ include Adamantium::Flat
14
15
 
15
16
  SEMANTICS_MESSAGE =
16
17
  "Fix your lib to follow normal ruby semantics!\n" \
@@ -33,8 +34,7 @@ module Mutest
33
34
 
34
35
  # Kill mutation under isolation with integration
35
36
  #
36
- # @param [Isolation] isolation
37
- # @param [Integration] integration
37
+ # @param [Mutation] mutation
38
38
  #
39
39
  # @return [Result::Test]
40
40
  #
@@ -55,5 +55,5 @@ module Mutest
55
55
  tests: tests
56
56
  )
57
57
  end
58
- end # Env
59
- end # Mutest
58
+ end
59
+ end
@@ -2,7 +2,9 @@ module Mutest
2
2
  class Env
3
3
  # Bootstrap environment
4
4
  class Bootstrap
5
- include Adamantium::Flat, Concord::Public.new(:config), Procto.call(:env)
5
+ include Procto.call(:env)
6
+ include Concord::Public.new(:config)
7
+ include Adamantium::Flat
6
8
 
7
9
  SEMANTICS_MESSAGE_FORMAT =
8
10
  "%<message>s. Fix your lib to follow normal ruby semantics!\n" \
@@ -83,7 +85,7 @@ module Mutest
83
85
  # otherwise
84
86
  def scope_name(scope)
85
87
  scope.name
86
- rescue => exception
88
+ rescue StandardError => exception
87
89
  semantics_warning(
88
90
  CLASS_NAME_RAISED_EXCEPTION,
89
91
  exception: exception.inspect,
@@ -154,6 +156,6 @@ module Mutest
154
156
  message = format % options
155
157
  warn(format(SEMANTICS_MESSAGE_FORMAT, message: message))
156
158
  end
157
- end # Bootstrap
158
- end # Env
159
- end # Mutest
159
+ end
160
+ end
161
+ end
@@ -1,10 +1,11 @@
1
1
  module Mutest
2
2
  # Abstract base class for match expression
3
3
  class Expression
4
- include AbstractType, Adamantium::Flat
4
+ include Adamantium::Flat
5
+ include AbstractType
5
6
 
6
7
  fragment = /[A-Za-z][A-Za-z\d_]*/
7
- SCOPE_NAME_PATTERN = /(?<scope_name>#{fragment}(?:#{SCOPE_OPERATOR}#{fragment})*)/
8
+ SCOPE_NAME_PATTERN = /(?<scope_name>#{fragment}(?:#{SCOPE_OPERATOR}#{fragment})*)/.freeze
8
9
  SCOPE_SYMBOL_PATTERN = '(?<scope_symbol>[.#])'.freeze
9
10
 
10
11
  private_constant(*constants(false))
@@ -48,8 +49,9 @@ module Mutest
48
49
  def self.try_parse(input)
49
50
  match = self::REGEXP.match(input)
50
51
  return unless match
52
+
51
53
  names = anima.attribute_names
52
- new(Hash[names.zip(names.map(&match.method(:[])))])
54
+ new(Hash[names.zip(names.map(&match.public_method(:[])))])
53
55
  end
54
- end # Expression
55
- end # Mutest
56
+ end
57
+ end
@@ -22,7 +22,7 @@ module Mutest
22
22
 
23
23
  private_constant(*constants(false))
24
24
 
25
- REGEXP = /\A#{SCOPE_NAME_PATTERN}#{SCOPE_SYMBOL_PATTERN}#{METHOD_NAME_PATTERN}\z/
25
+ REGEXP = /\A#{SCOPE_NAME_PATTERN}#{SCOPE_SYMBOL_PATTERN}#{METHOD_NAME_PATTERN}\z/.freeze
26
26
 
27
27
  # Syntax of expression
28
28
  #
@@ -49,6 +49,6 @@ module Mutest
49
49
  def scope
50
50
  Object.const_get(scope_name)
51
51
  end
52
- end # Method
53
- end # Expression
54
- end # Mutest
52
+ end
53
+ end
54
+ end