mutest 0.0.9 → 0.0.10

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