mutant 0.8.0 → 0.8.1

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 (187) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +7 -0
  3. data/config/flay.yml +1 -1
  4. data/config/reek.yml +1 -0
  5. data/lib/mutant.rb +10 -3
  6. data/lib/mutant/actor.rb +2 -5
  7. data/lib/mutant/actor/env.rb +1 -3
  8. data/lib/mutant/actor/mailbox.rb +2 -4
  9. data/lib/mutant/actor/receiver.rb +0 -2
  10. data/lib/mutant/actor/sender.rb +0 -1
  11. data/lib/mutant/ast.rb +22 -28
  12. data/lib/mutant/ast/meta.rb +8 -88
  13. data/lib/mutant/ast/named_children.rb +1 -8
  14. data/lib/mutant/ast/sexp.rb +0 -2
  15. data/lib/mutant/cache.rb +1 -3
  16. data/lib/mutant/cli.rb +9 -19
  17. data/lib/mutant/color.rb +0 -3
  18. data/lib/mutant/config.rb +6 -2
  19. data/lib/mutant/context.rb +2 -4
  20. data/lib/mutant/context/scope.rb +10 -16
  21. data/lib/mutant/delegator.rb +0 -3
  22. data/lib/mutant/diff.rb +8 -17
  23. data/lib/mutant/env.rb +3 -5
  24. data/lib/mutant/env/bootstrap.rb +32 -39
  25. data/lib/mutant/expression.rb +14 -132
  26. data/lib/mutant/expression/method.rb +25 -42
  27. data/lib/mutant/expression/methods.rb +17 -29
  28. data/lib/mutant/expression/namespace.rb +33 -28
  29. data/lib/mutant/expression/parser.rb +71 -0
  30. data/lib/mutant/integration.rb +17 -16
  31. data/lib/mutant/isolation.rb +14 -14
  32. data/lib/mutant/loader.rb +2 -4
  33. data/lib/mutant/matcher.rb +1 -11
  34. data/lib/mutant/matcher/chain.rb +0 -1
  35. data/lib/mutant/matcher/compiler.rb +19 -52
  36. data/lib/mutant/matcher/config.rb +65 -5
  37. data/lib/mutant/matcher/filter.rb +11 -1
  38. data/lib/mutant/matcher/method.rb +11 -21
  39. data/lib/mutant/matcher/method/instance.rb +2 -16
  40. data/lib/mutant/matcher/method/singleton.rb +3 -20
  41. data/lib/mutant/matcher/methods.rb +11 -21
  42. data/lib/mutant/matcher/namespace.rb +0 -4
  43. data/lib/mutant/matcher/null.rb +0 -1
  44. data/lib/mutant/matcher/scope.rb +0 -12
  45. data/lib/mutant/meta.rb +0 -1
  46. data/lib/mutant/meta/example.rb +12 -26
  47. data/lib/mutant/meta/example/dsl.rb +1 -8
  48. data/lib/mutant/mutation.rb +6 -14
  49. data/lib/mutant/mutator.rb +2 -14
  50. data/lib/mutant/mutator/node.rb +6 -33
  51. data/lib/mutant/mutator/node/and_asgn.rb +0 -1
  52. data/lib/mutant/mutator/node/argument.rb +0 -5
  53. data/lib/mutant/mutator/node/arguments.rb +1 -7
  54. data/lib/mutant/mutator/node/begin.rb +0 -2
  55. data/lib/mutant/mutator/node/binary.rb +0 -3
  56. data/lib/mutant/mutator/node/block.rb +0 -2
  57. data/lib/mutant/mutator/node/break.rb +0 -1
  58. data/lib/mutant/mutator/node/case.rb +0 -3
  59. data/lib/mutant/mutator/node/conditional_loop.rb +0 -1
  60. data/lib/mutant/mutator/node/const.rb +0 -1
  61. data/lib/mutant/mutator/node/define.rb +0 -1
  62. data/lib/mutant/mutator/node/defined.rb +0 -1
  63. data/lib/mutant/mutator/node/dstr.rb +0 -1
  64. data/lib/mutant/mutator/node/dsym.rb +0 -1
  65. data/lib/mutant/mutator/node/generic.rb +0 -1
  66. data/lib/mutant/mutator/node/if.rb +0 -4
  67. data/lib/mutant/mutator/node/kwbegin.rb +0 -1
  68. data/lib/mutant/mutator/node/literal/array.rb +0 -2
  69. data/lib/mutant/mutator/node/literal/boolean.rb +0 -1
  70. data/lib/mutant/mutator/node/literal/fixnum.rb +2 -5
  71. data/lib/mutant/mutator/node/literal/float.rb +1 -4
  72. data/lib/mutant/mutator/node/literal/hash.rb +0 -3
  73. data/lib/mutant/mutator/node/literal/nil.rb +0 -1
  74. data/lib/mutant/mutator/node/literal/range.rb +1 -5
  75. data/lib/mutant/mutator/node/literal/regex.rb +1 -3
  76. data/lib/mutant/mutator/node/literal/string.rb +0 -1
  77. data/lib/mutant/mutator/node/literal/symbol.rb +0 -1
  78. data/lib/mutant/mutator/node/masgn.rb +0 -1
  79. data/lib/mutant/mutator/node/match_current_line.rb +0 -1
  80. data/lib/mutant/mutator/node/mlhs.rb +0 -1
  81. data/lib/mutant/mutator/node/named_value/access.rb +0 -1
  82. data/lib/mutant/mutator/node/named_value/constant_assignment.rb +0 -2
  83. data/lib/mutant/mutator/node/named_value/variable_assignment.rb +0 -2
  84. data/lib/mutant/mutator/node/next.rb +0 -1
  85. data/lib/mutant/mutator/node/noop.rb +0 -1
  86. data/lib/mutant/mutator/node/nthref.rb +0 -1
  87. data/lib/mutant/mutator/node/op_asgn.rb +0 -1
  88. data/lib/mutant/mutator/node/or_asgn.rb +1 -2
  89. data/lib/mutant/mutator/node/resbody.rb +0 -2
  90. data/lib/mutant/mutator/node/rescue.rb +1 -6
  91. data/lib/mutant/mutator/node/return.rb +0 -1
  92. data/lib/mutant/mutator/node/send.rb +16 -17
  93. data/lib/mutant/mutator/node/send/attribute_assignment.rb +0 -3
  94. data/lib/mutant/mutator/node/send/binary.rb +0 -1
  95. data/lib/mutant/mutator/node/send/index.rb +0 -3
  96. data/lib/mutant/mutator/node/splat.rb +0 -1
  97. data/lib/mutant/mutator/node/super.rb +0 -1
  98. data/lib/mutant/mutator/node/when.rb +2 -7
  99. data/lib/mutant/mutator/node/yield.rb +0 -1
  100. data/lib/mutant/mutator/node/zsuper.rb +0 -1
  101. data/lib/mutant/mutator/registry.rb +1 -4
  102. data/lib/mutant/mutator/util.rb +0 -2
  103. data/lib/mutant/mutator/util/array.rb +0 -3
  104. data/lib/mutant/mutator/util/symbol.rb +0 -1
  105. data/lib/mutant/parallel.rb +3 -9
  106. data/lib/mutant/parallel/master.rb +7 -17
  107. data/lib/mutant/parallel/source.rb +2 -7
  108. data/lib/mutant/parallel/worker.rb +1 -5
  109. data/lib/mutant/reporter.rb +0 -4
  110. data/lib/mutant/reporter/cli.rb +1 -8
  111. data/lib/mutant/reporter/cli/format.rb +7 -18
  112. data/lib/mutant/reporter/cli/printer.rb +2 -12
  113. data/lib/mutant/reporter/cli/printer/config.rb +1 -4
  114. data/lib/mutant/reporter/cli/printer/env_progress.rb +3 -7
  115. data/lib/mutant/reporter/cli/printer/env_result.rb +0 -1
  116. data/lib/mutant/reporter/cli/printer/mutation_progress_result.rb +0 -2
  117. data/lib/mutant/reporter/cli/printer/mutation_result.rb +3 -11
  118. data/lib/mutant/reporter/cli/printer/status.rb +1 -4
  119. data/lib/mutant/reporter/cli/printer/status_progressive.rb +1 -3
  120. data/lib/mutant/reporter/cli/printer/subject_progress.rb +0 -5
  121. data/lib/mutant/reporter/cli/printer/subject_result.rb +0 -1
  122. data/lib/mutant/reporter/cli/printer/test_result.rb +0 -1
  123. data/lib/mutant/reporter/cli/tput.rb +4 -1
  124. data/lib/mutant/reporter/trace.rb +2 -4
  125. data/lib/mutant/repository.rb +88 -0
  126. data/lib/mutant/require_highjack.rb +0 -1
  127. data/lib/mutant/result.rb +25 -48
  128. data/lib/mutant/runner.rb +7 -16
  129. data/lib/mutant/runner/sink.rb +3 -11
  130. data/lib/mutant/selector.rb +1 -2
  131. data/lib/mutant/selector/expression.rb +1 -2
  132. data/lib/mutant/subject.rb +10 -21
  133. data/lib/mutant/subject/method.rb +11 -12
  134. data/lib/mutant/subject/method/instance.rb +1 -5
  135. data/lib/mutant/subject/method/singleton.rb +1 -3
  136. data/lib/mutant/test.rb +1 -2
  137. data/lib/mutant/version.rb +2 -2
  138. data/lib/mutant/warning_filter.rb +2 -7
  139. data/lib/mutant/zombifier.rb +6 -10
  140. data/meta/send.rb +8 -0
  141. data/spec/spec_helper.rb +5 -1
  142. data/spec/support/corpus.rb +5 -9
  143. data/spec/support/rb_bug.rb +0 -1
  144. data/spec/support/rspec.rb +0 -1
  145. data/spec/support/ruby_vm.rb +0 -2
  146. data/spec/unit/mutant/ast/meta/send_spec.rb +42 -0
  147. data/spec/unit/mutant/ast/named_children_spec.rb +51 -0
  148. data/spec/unit/mutant/ast/sexp_spec.rb +36 -0
  149. data/spec/unit/mutant/ast_spec.rb +8 -0
  150. data/spec/unit/mutant/cli_spec.rb +34 -19
  151. data/spec/unit/mutant/context/scope_spec.rb +11 -0
  152. data/spec/unit/mutant/env/boostrap_spec.rb +5 -2
  153. data/spec/unit/mutant/env_spec.rb +14 -15
  154. data/spec/unit/mutant/expression/method_spec.rb +10 -14
  155. data/spec/unit/mutant/expression/methods_spec.rb +24 -11
  156. data/spec/unit/mutant/expression/namespace/flat_spec.rb +5 -6
  157. data/spec/unit/mutant/expression/namespace/recursive_spec.rb +16 -10
  158. data/spec/unit/mutant/expression/parser_spec.rb +67 -0
  159. data/spec/unit/mutant/expression_spec.rb +24 -57
  160. data/spec/unit/mutant/integration/rspec_spec.rb +7 -7
  161. data/spec/unit/mutant/integration_spec.rb +2 -2
  162. data/spec/unit/mutant/isolation_spec.rb +31 -29
  163. data/spec/unit/mutant/matcher/compiler/subject_prefix_spec.rb +2 -2
  164. data/spec/unit/mutant/matcher/compiler_spec.rb +27 -58
  165. data/spec/unit/mutant/matcher/config_spec.rb +45 -0
  166. data/spec/unit/mutant/matcher/filter_spec.rb +12 -5
  167. data/spec/unit/mutant/matcher/method/instance_spec.rb +0 -1
  168. data/spec/unit/mutant/matcher/method/singleton_spec.rb +0 -1
  169. data/spec/unit/mutant/matcher/namespace_spec.rb +4 -4
  170. data/spec/unit/mutant/parallel/worker_spec.rb +1 -1
  171. data/spec/unit/mutant/reporter/cli/printer/config_spec.rb +4 -4
  172. data/spec/unit/mutant/reporter/cli/printer/env_progress_spec.rb +7 -7
  173. data/spec/unit/mutant/reporter/cli/printer/env_result_spec.rb +2 -2
  174. data/spec/unit/mutant/reporter/cli/printer/status_progressive_spec.rb +2 -2
  175. data/spec/unit/mutant/reporter/cli/printer/status_spec.rb +12 -12
  176. data/spec/unit/mutant/reporter/cli/printer/subject_progress_spec.rb +1 -1
  177. data/spec/unit/mutant/reporter/cli_spec.rb +9 -10
  178. data/spec/unit/mutant/repository/diff_spec.rb +80 -0
  179. data/spec/unit/mutant/repository/subject_filter_spec.rb +28 -0
  180. data/spec/unit/mutant/result/env_spec.rb +1 -1
  181. data/spec/unit/mutant/runner_spec.rb +0 -1
  182. data/spec/unit/mutant/selector/expression_spec.rb +14 -14
  183. data/spec/unit/mutant/subject/method/instance_spec.rb +2 -2
  184. data/spec/unit/mutant/subject/method/singleton_spec.rb +2 -2
  185. data/spec/unit/mutant/subject_spec.rb +5 -2
  186. metadata +20 -3
  187. data/spec/support/mutation_verifier.rb +0 -96
@@ -8,7 +8,6 @@ module Mutant
8
8
  # @return [undefined]
9
9
  #
10
10
  # @api private
11
- #
12
11
  def initialize(*)
13
12
  super
14
13
 
@@ -17,25 +16,21 @@ module Mutant
17
16
  run_mutation_analysis
18
17
  end
19
18
 
20
- # Return result
19
+ # Final result
21
20
  #
22
21
  # @return [Result::Env]
23
22
  #
24
23
  # @api private
25
- #
26
24
  attr_reader :result
27
25
 
28
26
  private
29
27
 
30
28
  # Run mutation analysis
31
29
  #
32
- # @return [undefined]
33
- #
34
- # @api private
30
+ # @return [undefined]
35
31
  #
32
+ # @api private
36
33
  def run_mutation_analysis
37
- config.integration.setup
38
-
39
34
  @result = run_driver(Parallel.async(mutation_test_config))
40
35
  reporter.report(@result)
41
36
  end
@@ -48,7 +43,6 @@ module Mutant
48
43
  # the last returned status payload
49
44
  #
50
45
  # @api private
51
- #
52
46
  def run_driver(driver)
53
47
  status = nil
54
48
 
@@ -64,12 +58,11 @@ module Mutant
64
58
  status.payload
65
59
  end
66
60
 
67
- # Return mutation test config
61
+ # Confiugation for paralell execution engine
68
62
  #
69
- # @return [Parallell::Config]
63
+ # @return [Parallel::Config]
70
64
  #
71
65
  # @api private
72
- #
73
66
  def mutation_test_config
74
67
  Parallel::Config.new(
75
68
  env: env.actor_env,
@@ -80,22 +73,20 @@ module Mutant
80
73
  )
81
74
  end
82
75
 
83
- # Return reporter
76
+ # Reporter to use
84
77
  #
85
78
  # @return [Reporter]
86
79
  #
87
80
  # @api private
88
- #
89
81
  def reporter
90
82
  env.config.reporter
91
83
  end
92
84
 
93
- # Return config
85
+ # Config for this mutant execution
94
86
  #
95
87
  # @return [Config]
96
88
  #
97
89
  # @api private
98
- #
99
90
  def config
100
91
  env.config
101
92
  end
@@ -4,12 +4,11 @@ module Mutant
4
4
  class Sink
5
5
  include AbstractType
6
6
 
7
- # Return sink status
7
+ # sink status
8
8
  #
9
9
  # @return [Object]
10
10
  #
11
11
  # @api private
12
- #
13
12
  abstract_method :status
14
13
 
15
14
  # Test if computation should be stopped
@@ -17,7 +16,6 @@ module Mutant
17
16
  # @return [Boolean]
18
17
  #
19
18
  # @api private
20
- #
21
19
  abstract_method :stop?
22
20
 
23
21
  # Consume result
@@ -27,7 +25,6 @@ module Mutant
27
25
  # @return [self]
28
26
  #
29
27
  # @api private
30
- #
31
28
  abstract_method :result
32
29
 
33
30
  # Mutation result sink
@@ -39,7 +36,6 @@ module Mutant
39
36
  # @return [undefined]
40
37
  #
41
38
  # @api private
42
- #
43
39
  def initialize(*)
44
40
  super
45
41
  @start = Time.now
@@ -52,12 +48,11 @@ module Mutant
52
48
  end
53
49
  end
54
50
 
55
- # Return runner status
51
+ # Runner status
56
52
  #
57
53
  # @return [Status]
58
54
  #
59
55
  # @api private
60
- #
61
56
  def status
62
57
  env_result
63
58
  end
@@ -67,7 +62,6 @@ module Mutant
67
62
  # @return [Boolean]
68
63
  #
69
64
  # @api private
70
- #
71
65
  def stop?
72
66
  env.config.fail_fast && !env_result.subject_results.all?(&:success?)
73
67
  end
@@ -79,7 +73,6 @@ module Mutant
79
73
  # @return [self]
80
74
  #
81
75
  # @api private
82
- #
83
76
  def result(mutation_result)
84
77
  mutation = mutation_result.mutation
85
78
 
@@ -95,12 +88,11 @@ module Mutant
95
88
 
96
89
  private
97
90
 
98
- # Return current result
91
+ # Current result
99
92
  #
100
93
  # @return [Result::Env]
101
94
  #
102
95
  # @api private
103
- #
104
96
  def env_result
105
97
  Result::Env.new(
106
98
  env: env,
@@ -3,14 +3,13 @@ module Mutant
3
3
  class Selector
4
4
  include AbstractType, Adamantium::Flat
5
5
 
6
- # Return tests for subject
6
+ # Tests for subject
7
7
  #
8
8
  # @param [Subject] subjecto
9
9
  #
10
10
  # @return [Enumerable<Test>]
11
11
  #
12
12
  # @api private
13
- #
14
13
  abstract_method :call
15
14
 
16
15
  end # Selector
@@ -4,14 +4,13 @@ module Mutant
4
4
  class Expression < self
5
5
  include Concord.new(:integration)
6
6
 
7
- # Return tests for subject
7
+ # Tests for subject
8
8
  #
9
9
  # @param [Subject] subject
10
10
  #
11
11
  # @return [Enumerable<Test>]
12
12
  #
13
13
  # @api private
14
- #
15
14
  def call(subject)
16
15
  subject.match_expressions.each do |match_expression|
17
16
  subject_tests = integration.all_tests.select do |test|
@@ -4,13 +4,12 @@ module Mutant
4
4
  include AbstractType, Adamantium::Flat, Enumerable
5
5
  include Concord::Public.new(:context, :node)
6
6
 
7
- # Return mutations
7
+ # Mutations for this subject
8
8
  #
9
9
  # @return [Enumerable<Mutation>]
10
10
  # @return [undefined]
11
11
  #
12
12
  # @api private
13
- #
14
13
  def mutations
15
14
  mutations = [neutral_mutation]
16
15
  Mutator.each(node) do |mutant|
@@ -20,94 +19,85 @@ module Mutant
20
19
  end
21
20
  memoize :mutations
22
21
 
23
- # Return source path
22
+ # Source path
24
23
  #
25
24
  # @return [String]
26
25
  #
27
26
  # @api private
28
- #
29
27
  def source_path
30
28
  context.source_path
31
29
  end
32
30
 
33
- # Prepare the subject for the insertion of mutation
31
+ # Prepare subject for insertion of mutation
34
32
  #
35
33
  # @return [self]
36
34
  #
37
35
  # @api private
38
- #
39
36
  def prepare
40
37
  self
41
38
  end
42
39
 
43
- # Return source lines
40
+ # Source line range
44
41
  #
45
42
  # @return [Range<Fixnum>]
46
43
  #
47
44
  # @api private
48
- #
49
45
  def source_lines
50
46
  expression = node.location.expression
51
47
  expression.line..expression.source_buffer.decompose_position(expression.end_pos).first
52
48
  end
53
49
  memoize :source_lines
54
50
 
55
- # Return source line
51
+ # First source line
56
52
  #
57
53
  # @return [Fixnum]
58
54
  #
59
55
  # @api private
60
- #
61
56
  def source_line
62
57
  source_lines.begin
63
58
  end
64
59
 
65
- # Return subject identification
60
+ # Identification string
66
61
  #
67
62
  # @return [String]
68
63
  #
69
64
  # @api private
70
- #
71
65
  def identification
72
66
  "#{expression.syntax}:#{source_path}:#{source_line}"
73
67
  end
74
68
  memoize :identification
75
69
 
76
- # Return source representation of ast
70
+ # Source representation of AST
77
71
  #
78
72
  # @return [String]
79
73
  #
80
74
  # @api private
81
- #
82
75
  def source
83
76
  Unparser.unparse(wrap_node(node))
84
77
  end
85
78
  memoize :source
86
79
 
87
- # Return match expression
80
+ # Match expression
88
81
  #
89
82
  # @return [Expression]
90
83
  #
91
84
  # @api private
92
- #
93
85
  abstract_method :expression
94
86
 
95
- # Return match expressions
87
+ # Match expressions
96
88
  #
97
89
  # @return [Enumerable<Expression>]
98
90
  #
99
91
  # @api private
100
- #
101
92
  abstract_method :match_expressions
102
93
 
103
94
  private
104
95
 
105
- # Return neutral mutation
96
+ # Neutral mutation
106
97
  #
107
98
  # @return [Mutation::Neutral]
108
99
  #
109
100
  # @api private
110
- #
111
101
  def neutral_mutation
112
102
  Mutation::Neutral.new(self, wrap_node(node))
113
103
  end
@@ -119,7 +109,6 @@ module Mutant
119
109
  # @return [Parser::AST::Node]
120
110
  #
121
111
  # @api private
122
- #
123
112
  def wrap_node(node)
124
113
  node
125
114
  end
@@ -8,36 +8,36 @@ module Mutant
8
8
  # @return [Boolean]
9
9
  #
10
10
  # @api private
11
- #
12
11
  abstract_method :public?
13
12
 
14
- # Return method name
13
+ # Method name
15
14
  #
16
- # @return [Symbol]
15
+ # @return [Expression]
17
16
  #
18
17
  # @api private
19
- #
20
18
  def name
21
- node.children[self.class::NAME_INDEX]
19
+ node.children.fetch(self.class::NAME_INDEX)
22
20
  end
23
21
 
24
- # Return match expression
22
+ # Match expression
25
23
  #
26
24
  # @return [String]
27
25
  #
28
26
  # @api private
29
- #
30
27
  def expression
31
- Expression.parse("#{context.identification}#{self.class::SYMBOL}#{name}")
28
+ Expression::Method.new(
29
+ scope_symbol: self.class::SYMBOL,
30
+ scope_name: scope.name,
31
+ method_name: name.to_s
32
+ )
32
33
  end
33
34
  memoize :expression
34
35
 
35
- # Return match expressions
36
+ # Match expressions
36
37
  #
37
38
  # @return [Array<Expression>]
38
39
  #
39
40
  # @api private
40
- #
41
41
  def match_expressions
42
42
  [expression].concat(context.match_expressions)
43
43
  end
@@ -45,12 +45,11 @@ module Mutant
45
45
 
46
46
  private
47
47
 
48
- # Return scope
48
+ # The scope
49
49
  #
50
50
  # @return [Class, Module]
51
51
  #
52
52
  # @api private
53
- #
54
53
  def scope
55
54
  context.scope
56
55
  end
@@ -12,7 +12,6 @@ module Mutant
12
12
  # @return [Boolean]
13
13
  #
14
14
  # @api private
15
- #
16
15
  def public?
17
16
  scope.public_method_defined?(name)
18
17
  end
@@ -23,7 +22,6 @@ module Mutant
23
22
  # @return [self]
24
23
  #
25
24
  # @api private
26
- #
27
25
  def prepare
28
26
  scope.__send__(:undef_method, name)
29
27
  self
@@ -38,7 +36,6 @@ module Mutant
38
36
  # @return [self]
39
37
  #
40
38
  # @api private
41
- #
42
39
  def prepare
43
40
  scope.__send__(:memoized_methods).instance_variable_get(:@memory).delete(name)
44
41
  super
@@ -47,14 +44,13 @@ module Mutant
47
44
 
48
45
  private
49
46
 
50
- # Return memoizer node for mutant
47
+ # Memoizer node for mutant
51
48
  #
52
49
  # @param [Parser::AST::Node] mutant
53
50
  #
54
51
  # @return [Parser::AST::Node]
55
52
  #
56
53
  # @api private
57
- #
58
54
  def wrap_node(mutant)
59
55
  s(:begin, mutant, s(:send, nil, :memoize, s(:args, s(:sym, name))))
60
56
  end
@@ -5,14 +5,13 @@ module Mutant
5
5
  class Singleton < self
6
6
 
7
7
  NAME_INDEX = 1
8
- SYMBOL = '.'.freeze
8
+ SYMBOL = '.'.freeze
9
9
 
10
10
  # Test if method is public
11
11
  #
12
12
  # @return [Boolean]
13
13
  #
14
14
  # @api private
15
- #
16
15
  def public?
17
16
  scope.singleton_class.public_method_defined?(name)
18
17
  end
@@ -23,7 +22,6 @@ module Mutant
23
22
  # @return [self]
24
23
  #
25
24
  # @api private
26
- #
27
25
  def prepare
28
26
  scope.singleton_class.__send__(:undef_method, name)
29
27
  self
@@ -3,12 +3,11 @@ module Mutant
3
3
  class Test
4
4
  include Adamantium::Flat, Anima.new(:id, :expression)
5
5
 
6
- # Return test identification
6
+ # Identification string
7
7
  #
8
8
  # @return [String]
9
9
  #
10
10
  # @api private
11
- #
12
11
  alias_method :identification, :id
13
12
 
14
13
  end # Test