mutant 0.8.8 → 0.8.9

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