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
@@ -37,6 +37,6 @@ module Mutest
37
37
  def scope
38
38
  context.scope
39
39
  end
40
- end # Method
41
- end # Subject
42
- end # Mutest
40
+ end
41
+ end
42
+ end
@@ -36,8 +36,8 @@ module Mutest
36
36
  def wrap_node(mutest)
37
37
  s(:begin, mutest, s(:send, nil, :memoize, s(:args, s(:sym, name))))
38
38
  end
39
- end # Memoized
40
- end # Instance
41
- end # Method
42
- end # Subject
43
- end # Mutest
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -13,7 +13,7 @@ module Mutest
13
13
  scope.singleton_class.__send__(:undef_method, name)
14
14
  self
15
15
  end
16
- end # Singleton
17
- end # Method
18
- end # Subject
19
- end # Mutest
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,14 +1,15 @@
1
1
  module Mutest
2
2
  # Abstract base class for test that might kill a mutation
3
3
  class Test
4
- include Adamantium::Flat, Anima.new(
4
+ include Anima.new(
5
5
  :expression,
6
6
  :id
7
7
  )
8
+ include Adamantium::Flat
8
9
 
9
10
  # Identification string
10
11
  #
11
12
  # @return [String]
12
13
  alias_method :identification, :id
13
- end # Test
14
- end # Mutest
14
+ end
15
+ end
@@ -12,7 +12,7 @@ module Mutest
12
12
  def self.one(array)
13
13
  return array.first if array.one?
14
14
 
15
- fail SizeError, "expected size to be exactly 1 but size was #{array.size}"
15
+ raise SizeError, "expected size to be exactly 1 but size was #{array.size}"
16
16
  end
17
- end # Util
18
- end # Mutest
17
+ end
18
+ end
@@ -1,4 +1,4 @@
1
1
  module Mutest
2
2
  # Current mutest version
3
- VERSION = '0.0.9'.freeze
4
- end # Mutest
3
+ VERSION = '0.0.10'.freeze
4
+ end
@@ -3,7 +3,7 @@ module Mutest
3
3
  class WarningFilter
4
4
  include Equalizer.new(:target)
5
5
 
6
- WARNING_PATTERN = /\A(?:.+):(?:\d+): warning: (?:.+)\n\z/
6
+ WARNING_PATTERN = /\A(?:.+):(?:\d+): warning: (?:.+)\n\z/.freeze
7
7
 
8
8
  # Initialize object
9
9
  #
@@ -54,5 +54,5 @@ module Mutest
54
54
  ensure
55
55
  $stderr = original
56
56
  end
57
- end # WarningFilter
58
- end # Mutest
57
+ end
58
+ end
@@ -68,6 +68,7 @@ module Mutest
68
68
  logical_name = logical_name.to_s
69
69
  loaded = original.call(logical_name)
70
70
  return loaded unless include?(logical_name)
71
+
71
72
  @zombified << logical_name
72
73
  zombify(find(logical_name))
73
74
  true
@@ -89,7 +90,7 @@ module Mutest
89
90
  return path if path.file?
90
91
  end
91
92
 
92
- fail LoadError, "Cannot find file #{file_name.inspect} in load path"
93
+ raise LoadError, "Cannot find file #{file_name.inspect} in load path"
93
94
  end
94
95
 
95
96
  # Zombify contents of file
@@ -113,7 +114,7 @@ module Mutest
113
114
  #
114
115
  # @return [Parser::AST::Node]
115
116
  def namespaced_node(source_path)
116
- s(:module, s(:const, nil, namespace), ::Parser::CurrentRuby.parse(source_path.read))
117
+ s(:module, s(:const, nil, namespace), Unparser.parse(source_path.read))
117
118
  end
118
- end # Zombifier
119
- end # Mutest
119
+ end
120
+ end
@@ -23,8 +23,8 @@ Mutest::Meta::Example.add :block do
23
23
  mutation 'foo { |a, b| raise }'
24
24
  mutation 'foo { |a, _b| }'
25
25
  mutation 'foo { |_a, b| }'
26
- mutation 'foo { |a| }'
27
- mutation 'foo { |b| }'
26
+ mutation 'foo { |a, | }'
27
+ mutation 'foo { |b, | }'
28
28
  mutation 'foo { || }'
29
29
  end
30
30
 
@@ -39,7 +39,7 @@ Mutest::Meta::Example.add :block do
39
39
  mutation 'foo { |(a), c| }'
40
40
  mutation 'foo { |(b), c| }'
41
41
  mutation 'foo { |(a, b)| }'
42
- mutation 'foo { |c| }'
42
+ mutation 'foo { |c, | }'
43
43
  mutation 'foo { |(_a, b), c| }'
44
44
  mutation 'foo { |(a, _b), c| }'
45
45
  mutation 'foo { |(a, b), _c| }'
@@ -61,6 +61,25 @@ Mutest::Meta::Example.add :block do
61
61
  mutation 'foo {}'
62
62
  end
63
63
 
64
+ Mutest::Meta::Example.add :block do
65
+ source 'foo { |_a| }'
66
+
67
+ singleton_mutations
68
+ mutation 'foo { || }'
69
+ mutation 'foo { |_a| raise }'
70
+ mutation 'foo'
71
+ end
72
+
73
+ Mutest::Meta::Example.add :block do
74
+ source 'foo { |a| }'
75
+
76
+ singleton_mutations
77
+ mutation 'foo { || }'
78
+ mutation 'foo { |a| raise }'
79
+ mutation 'foo { |_a| }'
80
+ mutation 'foo'
81
+ end
82
+
64
83
  Mutest::Meta::Example.add :block do
65
84
  source 'foo { |(a)| }'
66
85
 
@@ -23,7 +23,35 @@ Mutest::Meta::Example.add :case do
23
23
  RUBY
24
24
  end
25
25
 
26
- # rubocop:disable Metrics/BlockLength
26
+ Mutest::Meta::Example.add :case do
27
+ source <<-RUBY
28
+ case true
29
+ when true
30
+ end
31
+ RUBY
32
+
33
+ singleton_mutations
34
+
35
+ mutation <<-RUBY
36
+ case true
37
+ when true
38
+ raise
39
+ end
40
+ RUBY
41
+
42
+ mutation <<-RUBY
43
+ case false
44
+ when true
45
+ end
46
+ RUBY
47
+
48
+ mutation <<-RUBY
49
+ case true
50
+ when false
51
+ end
52
+ RUBY
53
+ end
54
+
27
55
  Mutest::Meta::Example.add :case do
28
56
  source <<-RUBY
29
57
  case condition
@@ -0,0 +1,132 @@
1
+ # frozen_string_literal: true
2
+
3
+ Mutest::Meta::Example.add :index do
4
+ source 'self.foo[]'
5
+
6
+ singleton_mutations
7
+ mutation 'self.foo'
8
+ mutation 'self.foo.at()'
9
+ mutation 'self.foo.fetch()'
10
+ mutation 'self.foo.key?()'
11
+ mutation 'self[]'
12
+ mutation 'foo[]'
13
+ end
14
+
15
+ Mutest::Meta::Example.add :index do
16
+ source 'foo[1]'
17
+
18
+ singleton_mutations
19
+ mutation '1'
20
+ mutation 'foo'
21
+ mutation 'foo[]'
22
+ mutation 'foo.at(1)'
23
+ mutation 'foo.fetch(1)'
24
+ mutation 'foo.key?(1)'
25
+ mutation 'self[1]'
26
+ mutation 'foo[0]'
27
+ mutation 'foo[2]'
28
+ mutation 'foo[-1]'
29
+ mutation 'foo[nil]'
30
+ mutation 'foo[self]'
31
+ end
32
+
33
+ Mutest::Meta::Example.add :index do
34
+ source 'foo[n..-2]'
35
+
36
+ singleton_mutations
37
+ mutation 'n..-2'
38
+ mutation 'foo'
39
+ mutation 'foo[]'
40
+ mutation 'foo.at(n..-2)'
41
+ mutation 'foo.fetch(n..-2)'
42
+ mutation 'foo.key?(n..-2)'
43
+ mutation 'self[n..-2]'
44
+ mutation 'foo[nil]'
45
+ mutation 'foo[self]'
46
+ mutation 'foo[n..nil]'
47
+ mutation 'foo[n..self]'
48
+ mutation 'foo[n..-1]'
49
+ mutation 'foo[n..2]'
50
+ mutation 'foo[n..0]'
51
+ mutation 'foo[n..1]'
52
+ mutation 'foo[n..-3]'
53
+ mutation 'foo[n...-2]'
54
+ mutation 'foo[nil..-2]'
55
+ mutation 'foo[self..-2]'
56
+ end
57
+
58
+ Mutest::Meta::Example.add :index do
59
+ source 'foo[n...-1]'
60
+
61
+ singleton_mutations
62
+ mutation 'n...-1'
63
+ mutation 'foo'
64
+ mutation 'foo[]'
65
+ mutation 'foo.at(n...-1)'
66
+ mutation 'foo.fetch(n...-1)'
67
+ mutation 'foo.key?(n...-1)'
68
+ mutation 'self[n...-1]'
69
+ mutation 'foo[nil]'
70
+ mutation 'foo[self]'
71
+ mutation 'foo[n...nil]'
72
+ mutation 'foo[n...self]'
73
+ mutation 'foo[n..-1]'
74
+ mutation 'foo[n...0]'
75
+ mutation 'foo[n...1]'
76
+ mutation 'foo[n...-2]'
77
+ mutation 'foo[nil...-1]'
78
+ mutation 'foo[self...-1]'
79
+ end
80
+
81
+ Mutest::Meta::Example.add :index do
82
+ source 'foo[n..-1]'
83
+
84
+ singleton_mutations
85
+ mutation 'n..-1'
86
+ mutation 'foo'
87
+ mutation 'foo[]'
88
+ mutation 'foo.at(n..-1)'
89
+ mutation 'foo.fetch(n..-1)'
90
+ mutation 'foo.key?(n..-1)'
91
+ mutation 'self[n..-1]'
92
+ mutation 'foo[nil]'
93
+ mutation 'foo[self]'
94
+ mutation 'foo[n..nil]'
95
+ mutation 'foo[n..self]'
96
+ mutation 'foo[n..0]'
97
+ mutation 'foo[n..1]'
98
+ mutation 'foo[n..-2]'
99
+ mutation 'foo[n...-1]'
100
+ mutation 'foo[nil..-1]'
101
+ mutation 'foo[self..-1]'
102
+ mutation 'foo.drop(n)'
103
+ end
104
+
105
+ Mutest::Meta::Example.add :index do
106
+ source 'self[foo]'
107
+
108
+ singleton_mutations
109
+ mutation 'self[self]'
110
+ mutation 'self[nil]'
111
+ mutation 'self[]'
112
+ mutation 'self.at(foo)'
113
+ mutation 'self.fetch(foo)'
114
+ mutation 'self.key?(foo)'
115
+ mutation 'foo'
116
+ end
117
+
118
+ Mutest::Meta::Example.add :index do
119
+ source 'foo[*bar]'
120
+
121
+ singleton_mutations
122
+ mutation 'foo'
123
+ mutation 'foo[]'
124
+ mutation 'foo.at(*bar)'
125
+ mutation 'foo.fetch(*bar)'
126
+ mutation 'foo.key?(*bar)'
127
+ mutation 'foo[nil]'
128
+ mutation 'foo[self]'
129
+ mutation 'foo[bar]'
130
+ mutation 'foo[*self]'
131
+ mutation 'self[*bar]'
132
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ Mutest::Meta::Example.add :indexasgn do
4
+ source 'foo[bar] = baz'
5
+
6
+ singleton_mutations
7
+ mutation 'self[bar] = baz'
8
+ mutation 'foo'
9
+ mutation 'foo[bar]'
10
+ mutation 'foo.at(bar)'
11
+ mutation 'foo.fetch(bar)'
12
+ mutation 'foo.key?(bar)'
13
+ mutation 'foo[bar] = self'
14
+ mutation 'foo[bar] = nil'
15
+ mutation 'foo[nil] = baz'
16
+ mutation 'foo[self] = baz'
17
+ mutation 'foo[] = baz'
18
+ mutation 'baz'
19
+ mutation 'bar'
20
+ end
21
+
22
+ Mutest::Meta::Example.add :indexasgn do
23
+ source 'self[foo] += bar'
24
+
25
+ singleton_mutations
26
+ mutation 'self[] += bar'
27
+ mutation 'self[nil] += bar'
28
+ mutation 'self[self] += bar'
29
+ mutation 'self[foo] += nil'
30
+ mutation 'self[foo] += self'
31
+ end
32
+
33
+ Mutest::Meta::Example.add :op_asgn do
34
+ source 'self[foo] += bar'
35
+
36
+ singleton_mutations
37
+ mutation 'self[] += bar'
38
+ mutation 'self[nil] += bar'
39
+ mutation 'self[self] += bar'
40
+ mutation 'self[foo] += nil'
41
+ mutation 'self[foo] += self'
42
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ Mutest::Meta::Example.add :block do
4
+ source '->() {}'
5
+
6
+ singleton_mutations
7
+
8
+ mutation '->() { raise }'
9
+ end
10
+
11
+ Mutest::Meta::Example.add :lambda do
12
+ source '->() {}'
13
+
14
+ singleton_mutations
15
+
16
+ mutation '->() { raise }'
17
+ end
@@ -373,17 +373,14 @@ Mutest::Meta::Example.add :send do
373
373
  end
374
374
 
375
375
  Mutest::Meta::Example.add :send do
376
- source 'foo[bar] = baz'
376
+ source 'foo(*bar)'
377
377
 
378
378
  singleton_mutations
379
379
  mutation 'foo'
380
- mutation 'foo[bar]'
381
- mutation 'foo[bar] = self'
382
- mutation 'foo[bar] = nil'
383
- mutation 'foo[nil] = baz'
384
- mutation 'foo[self] = baz'
385
- mutation 'foo[] = baz'
386
- mutation 'baz'
380
+ mutation 'foo(nil)'
381
+ mutation 'foo(bar)'
382
+ mutation 'foo(self)'
383
+ mutation 'foo(*self)'
387
384
  end
388
385
 
389
386
  Mutest::Meta::Example.add :send do
@@ -493,36 +490,6 @@ Mutest::Meta::Example.add :send do
493
490
  mutation 'self / foo'
494
491
  end
495
492
 
496
- Mutest::Meta::Example.add :send do
497
- source 'foo[1]'
498
-
499
- singleton_mutations
500
- mutation '1'
501
- mutation 'foo'
502
- mutation 'foo[]'
503
- mutation 'foo.at(1)'
504
- mutation 'foo.fetch(1)'
505
- mutation 'foo.key?(1)'
506
- mutation 'self[1]'
507
- mutation 'foo[0]'
508
- mutation 'foo[2]'
509
- mutation 'foo[-1]'
510
- mutation 'foo[nil]'
511
- mutation 'foo[self]'
512
- end
513
-
514
- Mutest::Meta::Example.add :send do
515
- source 'self.foo[]'
516
-
517
- singleton_mutations
518
- mutation 'self.foo'
519
- mutation 'self.foo.at()'
520
- mutation 'self.foo.fetch()'
521
- mutation 'self.foo.key?()'
522
- mutation 'self[]'
523
- mutation 'foo[]'
524
- end
525
-
526
493
  Mutest::Meta::Example.add :send do
527
494
  source 'foo(n..-1)'
528
495
 
@@ -541,107 +508,6 @@ Mutest::Meta::Example.add :send do
541
508
  mutation 'foo(n..-2)'
542
509
  end
543
510
 
544
- Mutest::Meta::Example.add :send do
545
- source 'foo[n..-2]'
546
-
547
- singleton_mutations
548
- mutation 'n..-2'
549
- mutation 'foo'
550
- mutation 'foo[]'
551
- mutation 'foo.at(n..-2)'
552
- mutation 'foo.fetch(n..-2)'
553
- mutation 'foo.key?(n..-2)'
554
- mutation 'self[n..-2]'
555
- mutation 'foo[nil]'
556
- mutation 'foo[self]'
557
- mutation 'foo[n..nil]'
558
- mutation 'foo[n..self]'
559
- mutation 'foo[n..-1]'
560
- mutation 'foo[n..2]'
561
- mutation 'foo[n..0]'
562
- mutation 'foo[n..1]'
563
- mutation 'foo[n..-3]'
564
- mutation 'foo[n...-2]'
565
- mutation 'foo[nil..-2]'
566
- mutation 'foo[self..-2]'
567
- end
568
-
569
- Mutest::Meta::Example.add :send do
570
- source 'foo[n...-1]'
571
-
572
- singleton_mutations
573
- mutation 'n...-1'
574
- mutation 'foo'
575
- mutation 'foo[]'
576
- mutation 'foo.at(n...-1)'
577
- mutation 'foo.fetch(n...-1)'
578
- mutation 'foo.key?(n...-1)'
579
- mutation 'self[n...-1]'
580
- mutation 'foo[nil]'
581
- mutation 'foo[self]'
582
- mutation 'foo[n...nil]'
583
- mutation 'foo[n...self]'
584
- mutation 'foo[n..-1]'
585
- mutation 'foo[n...0]'
586
- mutation 'foo[n...1]'
587
- mutation 'foo[n...-2]'
588
- mutation 'foo[nil...-1]'
589
- mutation 'foo[self...-1]'
590
- end
591
-
592
- Mutest::Meta::Example.add :send do
593
- source 'foo[n..-1]'
594
-
595
- singleton_mutations
596
- mutation 'n..-1'
597
- mutation 'foo'
598
- mutation 'foo[]'
599
- mutation 'foo.at(n..-1)'
600
- mutation 'foo.fetch(n..-1)'
601
- mutation 'foo.key?(n..-1)'
602
- mutation 'self[n..-1]'
603
- mutation 'foo[nil]'
604
- mutation 'foo[self]'
605
- mutation 'foo[n..nil]'
606
- mutation 'foo[n..self]'
607
- mutation 'foo[n..0]'
608
- mutation 'foo[n..1]'
609
- mutation 'foo[n..-2]'
610
- mutation 'foo[n...-1]'
611
- mutation 'foo[nil..-1]'
612
- mutation 'foo[self..-1]'
613
- mutation 'foo.drop(n)'
614
- end
615
-
616
- Mutest::Meta::Example.add :send do
617
- source 'self[foo]'
618
-
619
- singleton_mutations
620
- mutation 'self[self]'
621
- mutation 'self[nil]'
622
- mutation 'self[]'
623
- mutation 'self.at(foo)'
624
- mutation 'self.fetch(foo)'
625
- mutation 'self.key?(foo)'
626
- mutation 'foo'
627
- end
628
-
629
- Mutest::Meta::Example.add :send do
630
- source 'foo[*bar]'
631
-
632
- singleton_mutations
633
- mutation 'foo'
634
- mutation 'foo[]'
635
- mutation 'foo.at(*bar)'
636
- mutation 'foo.fetch(*bar)'
637
- mutation 'foo.key?(*bar)'
638
- mutation 'foo[nil]'
639
- mutation 'foo[self]'
640
- mutation 'foo[bar]'
641
- mutation 'foo[*self]'
642
- mutation 'self[*bar]'
643
- end
644
-
645
511
  (Mutest::AST::Types::BINARY_METHOD_OPERATORS - %i[=~ <= >= < > == != eql? ===]).each do |operator|
646
512
  Mutest::Meta::Example.add :send do
647
513
  source "true #{operator} false"