mutant 0.8.8 → 0.8.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (211) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +9 -0
  3. data/README.md +1 -1
  4. data/Rakefile +12 -8
  5. data/bin/mutant +5 -1
  6. data/config/flay.yml +1 -1
  7. data/lib/mutant.rb +18 -17
  8. data/lib/mutant/actor.rb +1 -7
  9. data/lib/mutant/actor/env.rb +0 -4
  10. data/lib/mutant/actor/mailbox.rb +0 -4
  11. data/lib/mutant/actor/receiver.rb +0 -4
  12. data/lib/mutant/actor/sender.rb +0 -2
  13. data/lib/mutant/ast.rb +1 -5
  14. data/lib/mutant/ast/meta/const.rb +0 -2
  15. data/lib/mutant/ast/meta/optarg.rb +0 -2
  16. data/lib/mutant/ast/meta/send.rb +0 -12
  17. data/lib/mutant/ast/named_children.rb +0 -10
  18. data/lib/mutant/ast/sexp.rb +1 -5
  19. data/lib/mutant/cli.rb +19 -38
  20. data/lib/mutant/color.rb +1 -7
  21. data/lib/mutant/config.rb +11 -7
  22. data/lib/mutant/context.rb +0 -4
  23. data/lib/mutant/context/scope.rb +0 -18
  24. data/lib/mutant/delegator.rb +0 -6
  25. data/lib/mutant/diff.rb +0 -18
  26. data/lib/mutant/env.rb +8 -24
  27. data/lib/mutant/env/bootstrap.rb +18 -41
  28. data/lib/mutant/expression.rb +0 -8
  29. data/lib/mutant/expression/method.rb +6 -7
  30. data/lib/mutant/expression/methods.rb +5 -9
  31. data/lib/mutant/expression/namespace.rb +0 -13
  32. data/lib/mutant/expression/parser.rb +0 -6
  33. data/lib/mutant/integration.rb +2 -20
  34. data/lib/mutant/isolation.rb +0 -4
  35. data/lib/mutant/loader.rb +20 -35
  36. data/lib/mutant/matcher.rb +1 -1
  37. data/lib/mutant/matcher/chain.rb +1 -3
  38. data/lib/mutant/matcher/compiler.rb +0 -8
  39. data/lib/mutant/matcher/config.rb +2 -10
  40. data/lib/mutant/matcher/filter.rb +1 -3
  41. data/lib/mutant/matcher/method.rb +4 -26
  42. data/lib/mutant/matcher/method/instance.rb +1 -7
  43. data/lib/mutant/matcher/method/singleton.rb +0 -12
  44. data/lib/mutant/matcher/methods.rb +1 -19
  45. data/lib/mutant/matcher/namespace.rb +1 -7
  46. data/lib/mutant/matcher/null.rb +1 -3
  47. data/lib/mutant/matcher/scope.rb +1 -5
  48. data/lib/mutant/matcher/static.rb +0 -2
  49. data/lib/mutant/meta.rb +0 -2
  50. data/lib/mutant/meta/example.rb +0 -28
  51. data/lib/mutant/meta/example/dsl.rb +2 -16
  52. data/lib/mutant/mutation.rb +9 -18
  53. data/lib/mutant/mutator.rb +0 -24
  54. data/lib/mutant/mutator/node.rb +1 -33
  55. data/lib/mutant/mutator/node/and_asgn.rb +0 -2
  56. data/lib/mutant/mutator/node/argument.rb +0 -10
  57. data/lib/mutant/mutator/node/arguments.rb +0 -12
  58. data/lib/mutant/mutator/node/begin.rb +0 -4
  59. data/lib/mutant/mutator/node/binary.rb +2 -11
  60. data/lib/mutant/mutator/node/block.rb +0 -6
  61. data/lib/mutant/mutator/node/break.rb +0 -2
  62. data/lib/mutant/mutator/node/case.rb +0 -6
  63. data/lib/mutant/mutator/node/conditional_loop.rb +0 -2
  64. data/lib/mutant/mutator/node/const.rb +1 -3
  65. data/lib/mutant/mutator/node/define.rb +4 -11
  66. data/lib/mutant/mutator/node/defined.rb +0 -2
  67. data/lib/mutant/mutator/node/dstr.rb +0 -2
  68. data/lib/mutant/mutator/node/dsym.rb +0 -2
  69. data/lib/mutant/mutator/node/generic.rb +1 -3
  70. data/lib/mutant/mutator/node/if.rb +0 -8
  71. data/lib/mutant/mutator/node/kwbegin.rb +0 -2
  72. data/lib/mutant/mutator/node/literal/array.rb +0 -4
  73. data/lib/mutant/mutator/node/literal/boolean.rb +0 -2
  74. data/lib/mutant/mutator/node/literal/fixnum.rb +0 -6
  75. data/lib/mutant/mutator/node/literal/float.rb +0 -6
  76. data/lib/mutant/mutator/node/literal/hash.rb +0 -6
  77. data/lib/mutant/mutator/node/literal/nil.rb +0 -2
  78. data/lib/mutant/mutator/node/literal/range.rb +0 -8
  79. data/lib/mutant/mutator/node/literal/regex.rb +0 -4
  80. data/lib/mutant/mutator/node/literal/string.rb +0 -2
  81. data/lib/mutant/mutator/node/literal/symbol.rb +0 -2
  82. data/lib/mutant/mutator/node/masgn.rb +0 -2
  83. data/lib/mutant/mutator/node/match_current_line.rb +0 -2
  84. data/lib/mutant/mutator/node/mlhs.rb +0 -2
  85. data/lib/mutant/mutator/node/named_value/access.rb +0 -8
  86. data/lib/mutant/mutator/node/named_value/constant_assignment.rb +1 -7
  87. data/lib/mutant/mutator/node/named_value/variable_assignment.rb +0 -4
  88. data/lib/mutant/mutator/node/next.rb +0 -2
  89. data/lib/mutant/mutator/node/noop.rb +0 -2
  90. data/lib/mutant/mutator/node/nthref.rb +0 -2
  91. data/lib/mutant/mutator/node/op_asgn.rb +0 -2
  92. data/lib/mutant/mutator/node/or_asgn.rb +0 -2
  93. data/lib/mutant/mutator/node/resbody.rb +0 -4
  94. data/lib/mutant/mutator/node/rescue.rb +0 -10
  95. data/lib/mutant/mutator/node/return.rb +0 -2
  96. data/lib/mutant/mutator/node/send.rb +4 -32
  97. data/lib/mutant/mutator/node/send/attribute_assignment.rb +0 -6
  98. data/lib/mutant/mutator/node/send/binary.rb +0 -6
  99. data/lib/mutant/mutator/node/send/index.rb +0 -6
  100. data/lib/mutant/mutator/node/splat.rb +0 -2
  101. data/lib/mutant/mutator/node/super.rb +0 -2
  102. data/lib/mutant/mutator/node/when.rb +0 -10
  103. data/lib/mutant/mutator/node/yield.rb +0 -2
  104. data/lib/mutant/mutator/node/zsuper.rb +0 -2
  105. data/lib/mutant/mutator/registry.rb +0 -6
  106. data/lib/mutant/mutator/util.rb +0 -4
  107. data/lib/mutant/mutator/util/array.rb +0 -6
  108. data/lib/mutant/mutator/util/symbol.rb +0 -2
  109. data/lib/mutant/parallel.rb +21 -17
  110. data/lib/mutant/parallel/master.rb +0 -28
  111. data/lib/mutant/parallel/source.rb +0 -10
  112. data/lib/mutant/parallel/worker.rb +15 -10
  113. data/lib/mutant/parser.rb +23 -0
  114. data/lib/mutant/reporter.rb +5 -8
  115. data/lib/mutant/reporter/cli.rb +1 -15
  116. data/lib/mutant/reporter/cli/format.rb +3 -25
  117. data/lib/mutant/reporter/cli/printer.rb +0 -18
  118. data/lib/mutant/reporter/cli/printer/config.rb +0 -2
  119. data/lib/mutant/reporter/cli/printer/env_progress.rb +0 -2
  120. data/lib/mutant/reporter/cli/printer/env_result.rb +0 -2
  121. data/lib/mutant/reporter/cli/printer/mutation_progress_result.rb +0 -4
  122. data/lib/mutant/reporter/cli/printer/mutation_result.rb +0 -16
  123. data/lib/mutant/reporter/cli/printer/status.rb +0 -6
  124. data/lib/mutant/reporter/cli/printer/status_progressive.rb +0 -4
  125. data/lib/mutant/reporter/cli/printer/subject_progress.rb +0 -8
  126. data/lib/mutant/reporter/cli/printer/subject_result.rb +0 -2
  127. data/lib/mutant/reporter/cli/printer/test_result.rb +0 -2
  128. data/lib/mutant/reporter/cli/tput.rb +0 -4
  129. data/lib/mutant/repository.rb +4 -22
  130. data/lib/mutant/require_highjack.rb +0 -2
  131. data/lib/mutant/result.rb +23 -43
  132. data/lib/mutant/runner.rb +7 -20
  133. data/lib/mutant/runner/sink.rb +43 -86
  134. data/lib/mutant/selector.rb +0 -2
  135. data/lib/mutant/selector/expression.rb +0 -2
  136. data/lib/mutant/subject.rb +0 -22
  137. data/lib/mutant/subject/method.rb +2 -10
  138. data/lib/mutant/subject/method/instance.rb +0 -6
  139. data/lib/mutant/subject/method/singleton.rb +0 -2
  140. data/lib/mutant/test.rb +4 -3
  141. data/lib/mutant/version.rb +1 -1
  142. data/lib/mutant/warning_filter.rb +0 -10
  143. data/lib/mutant/zombifier.rb +5 -20
  144. data/meta/or_asgn.rb +6 -0
  145. data/meta/send.rb +29 -0
  146. data/mutant-rspec.gemspec +1 -1
  147. data/spec/integration/mutant/rspec_spec.rb +1 -1
  148. data/spec/integrations.yml +2 -3
  149. data/spec/shared/method_matcher_behavior.rb +7 -7
  150. data/spec/spec_helper.rb +2 -9
  151. data/spec/support/corpus.rb +37 -30
  152. data/spec/support/rb_bug.rb +1 -2
  153. data/spec/support/ruby_vm.rb +6 -3
  154. data/spec/support/shared_context.rb +19 -20
  155. data/spec/unit/mutant/actor/binding_spec.rb +6 -6
  156. data/spec/unit/mutant/actor/env_spec.rb +2 -2
  157. data/spec/unit/mutant/actor/mailbox_spec.rb +6 -6
  158. data/spec/unit/mutant/actor/message_spec.rb +2 -2
  159. data/spec/unit/mutant/actor/receiver_spec.rb +4 -4
  160. data/spec/unit/mutant/actor/sender_spec.rb +6 -6
  161. data/spec/unit/mutant/ast_spec.rb +9 -0
  162. data/spec/unit/mutant/cli_spec.rb +16 -10
  163. data/spec/unit/mutant/context/scope/root_spec.rb +1 -1
  164. data/spec/unit/mutant/context/scope/unqualified_name_spec.rb +1 -1
  165. data/spec/unit/mutant/context/scope_spec.rb +3 -3
  166. data/spec/unit/mutant/context_spec.rb +0 -22
  167. data/spec/unit/mutant/env/boostrap_spec.rb +34 -41
  168. data/spec/unit/mutant/env_spec.rb +74 -32
  169. data/spec/unit/mutant/integration/rspec_spec.rb +23 -17
  170. data/spec/unit/mutant/integration_spec.rb +4 -4
  171. data/spec/unit/mutant/isolation_spec.rb +4 -4
  172. data/spec/unit/mutant/loader_spec.rb +42 -0
  173. data/spec/unit/mutant/matcher/compiler_spec.rb +3 -3
  174. data/spec/unit/mutant/matcher/config_spec.rb +1 -1
  175. data/spec/unit/mutant/matcher/method/instance_spec.rb +8 -1
  176. data/spec/unit/mutant/matcher/method/singleton_spec.rb +8 -1
  177. data/spec/unit/mutant/matcher/namespace_spec.rb +7 -8
  178. data/spec/unit/mutant/matcher/null_spec.rb +3 -2
  179. data/spec/unit/mutant/mutation_spec.rb +11 -5
  180. data/spec/unit/mutant/mutator/registry_spec.rb +1 -1
  181. data/spec/unit/mutant/parallel/master_spec.rb +9 -9
  182. data/spec/unit/mutant/parallel/source/array_spec.rb +3 -3
  183. data/spec/unit/mutant/parallel/worker_spec.rb +5 -5
  184. data/spec/unit/mutant/parallel_spec.rb +4 -4
  185. data/spec/unit/mutant/parser_spec.rb +24 -0
  186. data/spec/unit/mutant/reporter/cli/printer_spec.rb +3 -3
  187. data/spec/unit/mutant/reporter/cli/tput_spec.rb +2 -2
  188. data/spec/unit/mutant/reporter/cli_spec.rb +7 -7
  189. data/spec/unit/mutant/reporter/null_spec.rb +5 -4
  190. data/spec/unit/mutant/repository/diff_spec.rb +30 -18
  191. data/spec/unit/mutant/repository/subject_filter_spec.rb +5 -5
  192. data/spec/unit/mutant/require_highjack_spec.rb +1 -1
  193. data/spec/unit/mutant/result/env_spec.rb +9 -9
  194. data/spec/unit/mutant/result/subject_spec.rb +5 -5
  195. data/spec/unit/mutant/runner/driver_spec.rb +4 -4
  196. data/spec/unit/mutant/runner/{sink/mutation_spec.rb → sink_spec.rb} +16 -4
  197. data/spec/unit/mutant/runner_spec.rb +31 -31
  198. data/spec/unit/mutant/selector/expression_spec.rb +8 -8
  199. data/spec/unit/mutant/subject/method/instance_spec.rb +9 -3
  200. data/spec/unit/mutant/subject/method/singleton_spec.rb +1 -1
  201. data/spec/unit/mutant/subject_spec.rb +1 -5
  202. data/spec/unit/mutant_spec.rb +3 -3
  203. metadata +9 -15
  204. data/config/mutant.yml +0 -14
  205. data/lib/mutant/cache.rb +0 -29
  206. data/lib/mutant/reporter/trace.rb +0 -36
  207. data/spec/support/rspec.rb +0 -21
  208. data/spec/unit/mutant/cache_spec.rb +0 -22
  209. data/spec/unit/mutant/loader/eval_spec.rb +0 -44
  210. data/spec/unit/mutant/reporter/trace_spec.rb +0 -21
  211. data/test_app/Gemfile.rspec3.2 +0 -7
@@ -1,107 +1,64 @@
1
1
  module Mutant
2
2
  class Runner
3
- # Abstract base class for computation sinks
4
3
  class Sink
5
- include AbstractType
4
+ include Concord.new(:env)
6
5
 
7
- # sink status
6
+ # Initialize object
8
7
  #
9
- # @return [Object]
8
+ # @return [undefined]
9
+ def initialize(*)
10
+ super
11
+ @start = Time.now
12
+ @subject_results = {}
13
+ end
14
+
15
+ # Runner status
10
16
  #
11
- # @api private
12
- abstract_method :status
17
+ # @return [Result::Env]
18
+ def status
19
+ Result::Env.new(
20
+ env: env,
21
+ runtime: Time.now - @start,
22
+ subject_results: @subject_results.values
23
+ )
24
+ end
13
25
 
14
- # Test if computation should be stopped
26
+ # Test if scheduling stopped
15
27
  #
16
28
  # @return [Boolean]
17
- #
18
- # @api private
19
- abstract_method :stop?
29
+ def stop?
30
+ env.config.fail_fast && !status.subject_results.all?(&:success?)
31
+ end
20
32
 
21
- # Consume result
33
+ # Handle mutation finish
22
34
  #
23
- # @param [Object] result
35
+ # @param [Result::Mutation] mutation_result
24
36
  #
25
37
  # @return [self]
26
- #
27
- # @api private
28
- abstract_method :result
29
-
30
- # Mutation result sink
31
- class Mutation < self
32
- include Concord.new(:env)
33
-
34
- # Initialize object
35
- #
36
- # @return [undefined]
37
- #
38
- # @api private
39
- def initialize(*)
40
- super
41
- @start = Time.now
42
- @subject_results = Hash.new do |_hash, subject|
43
- Result::Subject.new(
44
- subject: subject,
45
- tests: [],
46
- mutation_results: []
47
- )
48
- end
49
- end
50
-
51
- # Runner status
52
- #
53
- # @return [Status]
54
- #
55
- # @api private
56
- def status
57
- env_result
58
- end
38
+ def result(mutation_result)
39
+ subject = mutation_result.mutation.subject
59
40
 
60
- # Test if scheduling stopped
61
- #
62
- # @return [Boolean]
63
- #
64
- # @api private
65
- def stop?
66
- env.config.fail_fast && !env_result.subject_results.all?(&:success?)
67
- end
41
+ @subject_results[subject] = Result::Subject.new(
42
+ subject: subject,
43
+ mutation_results: previous_mutation_results(subject) + [mutation_result],
44
+ tests: mutation_result.test_result.tests
45
+ )
68
46
 
69
- # Handle mutation finish
70
- #
71
- # @param [Result::Mutation] mutation_result
72
- #
73
- # @return [self]
74
- #
75
- # @api private
76
- def result(mutation_result)
77
- mutation = mutation_result.mutation
47
+ self
48
+ end
78
49
 
79
- original = @subject_results[mutation.subject]
50
+ private
80
51
 
81
- @subject_results[mutation.subject] = original.with(
82
- mutation_results: (original.mutation_results + [mutation_result]),
83
- tests: mutation_result.test_result.tests
84
- )
85
-
86
- self
87
- end
88
-
89
- private
90
-
91
- # Current result
92
- #
93
- # @return [Result::Env]
94
- #
95
- # @api private
96
- def env_result
97
- Result::Env.new(
98
- env: env,
99
- runtime: Time.now - @start,
100
- subject_results: @subject_results.values
101
- )
102
- end
52
+ # Return previous results
53
+ #
54
+ # @param [Subject]
55
+ #
56
+ # @return [Array<Result::Mutation>]
57
+ def previous_mutation_results(subject)
58
+ subject_result = @subject_results.fetch(subject) { return EMPTY_ARRAY }
59
+ subject_result.mutation_results
60
+ end
103
61
 
104
- end # Mutation
105
62
  end # Sink
106
63
  end # Runner
107
64
  end # Mutant
@@ -8,8 +8,6 @@ module Mutant
8
8
  # @param [Subject] subjecto
9
9
  #
10
10
  # @return [Enumerable<Test>]
11
- #
12
- # @api private
13
11
  abstract_method :call
14
12
 
15
13
  end # Selector
@@ -9,8 +9,6 @@ module Mutant
9
9
  # @param [Subject] subject
10
10
  #
11
11
  # @return [Enumerable<Test>]
12
- #
13
- # @api private
14
12
  def call(subject)
15
13
  subject.match_expressions.each do |match_expression|
16
14
  subject_tests = integration.all_tests.select do |test|
@@ -8,8 +8,6 @@ module Mutant
8
8
  #
9
9
  # @return [Enumerable<Mutation>]
10
10
  # @return [undefined]
11
- #
12
- # @api private
13
11
  def mutations
14
12
  mutations = [neutral_mutation]
15
13
  Mutator.each(node) do |mutant|
@@ -22,8 +20,6 @@ module Mutant
22
20
  # Source path
23
21
  #
24
22
  # @return [Pathname]
25
- #
26
- # @api private
27
23
  def source_path
28
24
  context.source_path
29
25
  end
@@ -31,8 +27,6 @@ module Mutant
31
27
  # Prepare subject for insertion of mutation
32
28
  #
33
29
  # @return [self]
34
- #
35
- # @api private
36
30
  def prepare
37
31
  self
38
32
  end
@@ -40,8 +34,6 @@ module Mutant
40
34
  # Source line range
41
35
  #
42
36
  # @return [Range<Fixnum>]
43
- #
44
- # @api private
45
37
  def source_lines
46
38
  expression = node.location.expression
47
39
  expression.line..expression.source_buffer.decompose_position(expression.end_pos).first
@@ -51,8 +43,6 @@ module Mutant
51
43
  # First source line
52
44
  #
53
45
  # @return [Fixnum]
54
- #
55
- # @api private
56
46
  def source_line
57
47
  source_lines.begin
58
48
  end
@@ -60,8 +50,6 @@ module Mutant
60
50
  # Identification string
61
51
  #
62
52
  # @return [String]
63
- #
64
- # @api private
65
53
  def identification
66
54
  "#{expression.syntax}:#{source_path}:#{source_line}"
67
55
  end
@@ -70,8 +58,6 @@ module Mutant
70
58
  # Source representation of AST
71
59
  #
72
60
  # @return [String]
73
- #
74
- # @api private
75
61
  def source
76
62
  Unparser.unparse(wrap_node(node))
77
63
  end
@@ -80,15 +66,11 @@ module Mutant
80
66
  # Match expression
81
67
  #
82
68
  # @return [Expression]
83
- #
84
- # @api private
85
69
  abstract_method :expression
86
70
 
87
71
  # Match expressions
88
72
  #
89
73
  # @return [Enumerable<Expression>]
90
- #
91
- # @api private
92
74
  abstract_method :match_expressions
93
75
 
94
76
  private
@@ -96,8 +78,6 @@ module Mutant
96
78
  # Neutral mutation
97
79
  #
98
80
  # @return [Mutation::Neutral]
99
- #
100
- # @api private
101
81
  def neutral_mutation
102
82
  Mutation::Neutral.new(self, wrap_node(node))
103
83
  end
@@ -107,8 +87,6 @@ module Mutant
107
87
  # @param [Parser::AST::Node] node
108
88
  #
109
89
  # @return [Parser::AST::Node]
110
- #
111
- # @api private
112
90
  def wrap_node(node)
113
91
  node
114
92
  end
@@ -6,8 +6,6 @@ module Mutant
6
6
  # Method name
7
7
  #
8
8
  # @return [Expression]
9
- #
10
- # @api private
11
9
  def name
12
10
  node.children.fetch(self.class::NAME_INDEX)
13
11
  end
@@ -15,13 +13,11 @@ module Mutant
15
13
  # Match expression
16
14
  #
17
15
  # @return [String]
18
- #
19
- # @api private
20
16
  def expression
21
17
  Expression::Method.new(
18
+ method_name: name.to_s,
22
19
  scope_symbol: self.class::SYMBOL,
23
- scope_name: scope.name,
24
- method_name: name.to_s
20
+ scope_name: scope.name
25
21
  )
26
22
  end
27
23
  memoize :expression
@@ -29,8 +25,6 @@ module Mutant
29
25
  # Match expressions
30
26
  #
31
27
  # @return [Array<Expression>]
32
- #
33
- # @api private
34
28
  def match_expressions
35
29
  [expression].concat(context.match_expressions)
36
30
  end
@@ -41,8 +35,6 @@ module Mutant
41
35
  # The scope
42
36
  #
43
37
  # @return [Class, Module]
44
- #
45
- # @api private
46
38
  def scope
47
39
  context.scope
48
40
  end
@@ -10,8 +10,6 @@ module Mutant
10
10
  # Prepare subject for mutation insertion
11
11
  #
12
12
  # @return [self]
13
- #
14
- # @api private
15
13
  def prepare
16
14
  scope.__send__(:undef_method, name)
17
15
  self
@@ -24,8 +22,6 @@ module Mutant
24
22
  # Prepare subject for mutation insertion
25
23
  #
26
24
  # @return [self]
27
- #
28
- # @api private
29
25
  def prepare
30
26
  scope.__send__(:memoized_methods).instance_variable_get(:@memory).delete(name)
31
27
  super
@@ -39,8 +35,6 @@ module Mutant
39
35
  # @param [Parser::AST::Node] mutant
40
36
  #
41
37
  # @return [Parser::AST::Node]
42
- #
43
- # @api private
44
38
  def wrap_node(mutant)
45
39
  s(:begin, mutant, s(:send, nil, :memoize, s(:args, s(:sym, name))))
46
40
  end
@@ -10,8 +10,6 @@ module Mutant
10
10
  # Prepare subject for mutation insertion
11
11
  #
12
12
  # @return [self]
13
- #
14
- # @api private
15
13
  def prepare
16
14
  scope.singleton_class.__send__(:undef_method, name)
17
15
  self
@@ -1,13 +1,14 @@
1
1
  module Mutant
2
2
  # Abstract base class for test that might kill a mutation
3
3
  class Test
4
- include Adamantium::Flat, Anima.new(:id, :expression)
4
+ include Adamantium::Flat, Anima.new(
5
+ :expression,
6
+ :id
7
+ )
5
8
 
6
9
  # Identification string
7
10
  #
8
11
  # @return [String]
9
- #
10
- # @api private
11
12
  alias_method :identification, :id
12
13
 
13
14
  end # Test
@@ -1,4 +1,4 @@
1
1
  module Mutant
2
2
  # Current mutant version
3
- VERSION = '0.8.8'.freeze
3
+ VERSION = '0.8.9'.freeze
4
4
  end # Mutant
@@ -10,8 +10,6 @@ module Mutant
10
10
  # @param [#write] target
11
11
  #
12
12
  # @return [undefined]
13
- #
14
- # @api private
15
13
  def initialize(target)
16
14
  @target = target
17
15
  @warnings = []
@@ -20,8 +18,6 @@ module Mutant
20
18
  # Warnings captured by filter
21
19
  #
22
20
  # @return [Array<String>]
23
- #
24
- # @api private
25
21
  attr_reader :warnings
26
22
 
27
23
  # Target stream to capture warnings on
@@ -29,8 +25,6 @@ module Mutant
29
25
  # @return [#write] target
30
26
  #
31
27
  # @return [undefined]
32
- #
33
- # @api private
34
28
  attr_reader :target
35
29
  protected :target
36
30
 
@@ -39,8 +33,6 @@ module Mutant
39
33
  # @param [String] message
40
34
  #
41
35
  # @return [self]
42
- #
43
- # @api private
44
36
  def write(message)
45
37
  if WARNING_PATTERN =~ message
46
38
  warnings << message
@@ -54,8 +46,6 @@ module Mutant
54
46
  # Use warning filter during block execution
55
47
  #
56
48
  # @return [Array<String>]
57
- #
58
- # @api private
59
49
  def self.use
60
50
  original = $stderr
61
51
  $stderr = filter = new(original)
@@ -3,13 +3,14 @@ module Mutant
3
3
  class Zombifier
4
4
  include Anima.new(
5
5
  :includes,
6
- :namespace,
7
6
  :load_path,
8
7
  :kernel,
8
+ :namespace,
9
+ :pathname,
9
10
  :require_highjack,
10
- :root_require,
11
- :pathname
11
+ :root_require
12
12
  )
13
+
13
14
  private(*anima.attribute_names)
14
15
 
15
16
  include AST::Sexp
@@ -21,8 +22,6 @@ module Mutant
21
22
  # @param [Symbol] namespace
22
23
  #
23
24
  # @return [undefined]
24
- #
25
- # @api private
26
25
  def initialize(*)
27
26
  super
28
27
  @includes = %r{\A#{Regexp.union(includes)}(?:/.*)?\z}
@@ -32,8 +31,6 @@ module Mutant
32
31
  # Call zombifier
33
32
  #
34
33
  # @return [self]
35
- #
36
- # @api private
37
34
  def self.call(*args)
38
35
  new(*args).__send__(:call)
39
36
  self
@@ -44,8 +41,6 @@ module Mutant
44
41
  # Run zombifier
45
42
  #
46
43
  # @return [undefined]
47
- #
48
- # @api private
49
44
  def call
50
45
  @original = require_highjack.call(method(:require))
51
46
  require(root_require)
@@ -54,8 +49,6 @@ module Mutant
54
49
  # Test if logical name is subjected to zombification
55
50
  #
56
51
  # @param [String]
57
- #
58
- # @api private
59
52
  def include?(logical_name)
60
53
  !@zombified.include?(logical_name) && includes =~ logical_name
61
54
  end
@@ -65,8 +58,6 @@ module Mutant
65
58
  # @param [#to_s] logical_name
66
59
  #
67
60
  # @return [undefined]
68
- #
69
- # @api private
70
61
  def require(logical_name)
71
62
  logical_name = logical_name.to_s
72
63
  @original.call(logical_name)
@@ -83,8 +74,6 @@ module Mutant
83
74
  #
84
75
  # @raise [LoadError]
85
76
  # otherwise
86
- #
87
- # @api private
88
77
  def find(logical_name)
89
78
  file_name = "#{logical_name}.rb"
90
79
 
@@ -103,8 +92,6 @@ module Mutant
103
92
  # @param [Pathname] source_path
104
93
  #
105
94
  # @return [undefined]
106
- #
107
- # @api private
108
95
  def zombify(source_path)
109
96
  kernel.eval(
110
97
  Unparser.unparse(namespaced_node(source_path)),
@@ -118,10 +105,8 @@ module Mutant
118
105
  # @param [Pathname] source_path
119
106
  #
120
107
  # @return [Parser::AST::Node]
121
- #
122
- # @api private
123
108
  def namespaced_node(source_path)
124
- s(:module, s(:const, nil, namespace), Parser::CurrentRuby.parse(source_path.read))
109
+ s(:module, s(:const, nil, namespace), ::Parser::CurrentRuby.parse(source_path.read))
125
110
  end
126
111
 
127
112
  end # Zombifier