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