mutant 0.8.2 → 0.8.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f16485d23238c84b07b2e62df8a1c4af57badb14
4
- data.tar.gz: e0b9ddb90dccee908622683295235e177d4d7dcf
3
+ metadata.gz: d31268248349a065fe46a960fe2a0d0ace09f0d8
4
+ data.tar.gz: c35d18b21c3761d28fece74e573ef7f6ab0dfd69
5
5
  SHA512:
6
- metadata.gz: 992b3447fda4a045e9462f292f17da506141b386e9c494d94c13a6807450f9b73826f230e468a883f1177df70db409de9b400d107183d053444061c96ba7193f
7
- data.tar.gz: 3c8319ee768ca67e2a0cd9fbf65c5a3652425f73ecc8206bdca143da85f6a16fbf875505f5f14f9038319b5e35615e6a4e8ec0bf5ad2620cca4ed1d8c6e57f0c
6
+ metadata.gz: 3aec0dac703c7e91f164c60baa26d941e9a2d2149bd4542fcaac33f8e4794d9431ce4e226a5af29b88ec13e77f1ab2e32b6c4431a2a514ea4f2e1cb4200ea3bd
7
+ data.tar.gz: 9fb92420b95b0ae6fd1df55941e3df971b89d80ff7bef55a06c9823d1c96d6b4d50aedb88814a1c308ca57f99aa30e8d12ddc6275a6036073c21ca16d6d74aa9
@@ -1,14 +1,17 @@
1
+ # v0.8.3 2015-09-01
2
+
3
+ * Remove invalid mutation `super(...)` to `super`
4
+ * Add mutation from `def foo(a = true); end` to `def foo(a = true); a = true; end` #419
5
+ * Add mutation from `def foo; end` to `remove_method :foo` #413
6
+
1
7
  # v0.8.2 2015-08-11
2
8
 
3
9
  * Remove invalid mutation `foo or bar` to `!(foo or bar)` see #287
4
10
  * Add mutation from `#to_h` to `#to_hash` #218
5
- <<<<<<< 2914e9c8d906540edc1cc7d4bc6393f68db39b8d
6
- * Add mutation from `#defined?` to `true` / `false` #334
7
11
  * Add mutation from `super` to `super()` #309
8
- =======
9
12
  * Add mutation from `#defined?` to `true` / `false` #399
10
13
  * Reduce framed (multiline) progress reporter noise
11
- >>>>>>> Reduce framed progress reporter noise
14
+ * Fix a bug where killfork pipes where not properly closed
12
15
 
13
16
  # v0.8.1 2015-07-24
14
17
 
data/Gemfile CHANGED
@@ -4,4 +4,5 @@ source 'https://rubygems.org'
4
4
 
5
5
  gemspec name: 'mutant'
6
6
 
7
+ gem 'morpher', git: 'https://github.com/mbj/morpher.git'
7
8
  gem 'devtools', git: 'https://github.com/rom-rb/devtools.git'
data/README.md CHANGED
@@ -191,6 +191,25 @@ Mutation output is grouped by selection groups. Each group contains three sectio
191
191
  -----------------------
192
192
  ```
193
193
 
194
+ Planning a presentation?
195
+ ------------------------
196
+
197
+ Mutation testing lately (not only mutant) seems to attract some attention. So naturally
198
+ people do talks about it at conferences, user groups or other chances. Thx for that!
199
+
200
+ As I (the author @mbj) am not too happy with some of the facts being presented about
201
+ mutant the last month.
202
+
203
+ So if you plan to do a presentation: I offer to review your slides / talk - for free off course.
204
+ My intention is NOT to change your bias pro / against this tool. Just to help to fix
205
+ invalid statements about the tool.
206
+
207
+ Also in many cases a conversation to the author, should help you to imporve the talk
208
+ significantly. One of mutants biggest weaknesses is the bad documentation, but instead of
209
+ assumptions based on the absence of docs, use the tool authors brain to fill the gaps.
210
+
211
+ Hint, same applies to papers.
212
+
194
213
  Rails
195
214
  -------
196
215
 
@@ -1,3 +1,3 @@
1
1
  ---
2
2
  threshold: 18
3
- total_score: 1193
3
+ total_score: 1200
@@ -48,6 +48,9 @@ require 'mutant/ast/nodes'
48
48
  require 'mutant/ast/named_children'
49
49
  require 'mutant/ast/node_predicates'
50
50
  require 'mutant/ast/meta'
51
+ require 'mutant/ast/meta/send'
52
+ require 'mutant/ast/meta/optarg'
53
+ require 'mutant/ast/meta/resbody'
51
54
  require 'mutant/actor'
52
55
  require 'mutant/actor/receiver'
53
56
  require 'mutant/actor/sender'
@@ -2,68 +2,6 @@ module Mutant
2
2
  module AST
3
3
  # Node meta information mixin
4
4
  module Meta
5
-
6
- # Metadata for resbody nods
7
- class Resbody
8
- include NamedChildren, Concord.new(:node)
9
-
10
- children :captures, :assignment, :body
11
- end # Resbody
12
-
13
- # Metadata for send nodes
14
- class Send
15
- include NamedChildren, Concord.new(:node)
16
-
17
- children :receiver, :selector
18
-
19
- INDEX_ASSIGNMENT_SELECTOR = :[]=
20
- ATTRIBUTE_ASSIGNMENT_SELECTOR_SUFFIX = '='.freeze
21
-
22
- # Arguments of mutated node
23
- #
24
- # @return [Enumerable<Parser::AST::Node>]
25
- #
26
- # @api private
27
- alias_method :arguments, :remaining_children
28
-
29
- # Test if AST node is a valid assignment target
30
- #
31
- # @return [Boolean]
32
- #
33
- # @api private
34
- def assignment?
35
- index_assignment? || attribute_assignment?
36
- end
37
-
38
- # Test if AST node is an attribute assignment?
39
- #
40
- # @return [Boolean]
41
- #
42
- # @api private
43
- def attribute_assignment?
44
- !Types::METHOD_OPERATORS.include?(selector) &&
45
- selector.to_s.end_with?(ATTRIBUTE_ASSIGNMENT_SELECTOR_SUFFIX)
46
- end
47
-
48
- # Test if AST node is an index assign
49
- #
50
- # @return [Boolean]
51
- #
52
- # @api private
53
- def index_assignment?
54
- selector.equal?(INDEX_ASSIGNMENT_SELECTOR)
55
- end
56
-
57
- # Test for binary operator implemented as method
58
- #
59
- # @return [Boolean]
60
- #
61
- # @api private
62
- def binary_method_operator?
63
- Types::BINARY_METHOD_OPERATORS.include?(selector)
64
- end
65
-
66
- end # Send
67
5
  end # Meta
68
6
  end # AST
69
7
  end # Mutant
@@ -0,0 +1,26 @@
1
+ module Mutant
2
+ module AST
3
+ # Node meta information mixin
4
+ module Meta
5
+
6
+ # Metadata for optional argument nodes
7
+ class Optarg
8
+ include NamedChildren, Concord.new(:node)
9
+
10
+ UNDERSCORE = '_'.freeze
11
+
12
+ children :name, :default_value
13
+
14
+ # Test if optarg definition intends to be used
15
+ #
16
+ # @return [Boolean]
17
+ #
18
+ # @api private
19
+ def used?
20
+ !name.to_s.start_with?(UNDERSCORE)
21
+ end
22
+ end # Optarg
23
+
24
+ end # Meta
25
+ end # AST
26
+ end # Mutant
@@ -0,0 +1,15 @@
1
+ module Mutant
2
+ module AST
3
+ # Node meta information mixin
4
+ module Meta
5
+
6
+ # Metadata for resbody nodes
7
+ class Resbody
8
+ include NamedChildren, Concord.new(:node)
9
+
10
+ children :captures, :assignment, :body
11
+ end # Resbody
12
+
13
+ end # Meta
14
+ end # AST
15
+ end # Mutant
@@ -0,0 +1,62 @@
1
+ module Mutant
2
+ module AST
3
+ # Node meta information mixin
4
+ module Meta
5
+
6
+ # Metadata for send nodes
7
+ class Send
8
+ include NamedChildren, Concord.new(:node)
9
+
10
+ children :receiver, :selector
11
+
12
+ INDEX_ASSIGNMENT_SELECTOR = :[]=
13
+ ATTRIBUTE_ASSIGNMENT_SELECTOR_SUFFIX = '='.freeze
14
+
15
+ # Arguments of mutated node
16
+ #
17
+ # @return [Enumerable<Parser::AST::Node>]
18
+ #
19
+ # @api private
20
+ alias_method :arguments, :remaining_children
21
+
22
+ # Test if AST node is a valid assignment target
23
+ #
24
+ # @return [Boolean]
25
+ #
26
+ # @api private
27
+ def assignment?
28
+ index_assignment? || attribute_assignment?
29
+ end
30
+
31
+ # Test if AST node is an attribute assignment?
32
+ #
33
+ # @return [Boolean]
34
+ #
35
+ # @api private
36
+ def attribute_assignment?
37
+ !Types::METHOD_OPERATORS.include?(selector) &&
38
+ selector.to_s.end_with?(ATTRIBUTE_ASSIGNMENT_SELECTOR_SUFFIX)
39
+ end
40
+
41
+ # Test if AST node is an index assign
42
+ #
43
+ # @return [Boolean]
44
+ #
45
+ # @api private
46
+ def index_assignment?
47
+ selector.equal?(INDEX_ASSIGNMENT_SELECTOR)
48
+ end
49
+
50
+ # Test for binary operator implemented as method
51
+ #
52
+ # @return [Boolean]
53
+ #
54
+ # @api private
55
+ def binary_method_operator?
56
+ Types::BINARY_METHOD_OPERATORS.include?(selector)
57
+ end
58
+
59
+ end # Send
60
+ end # Meta
61
+ end # AST
62
+ end # Mutant
@@ -28,9 +28,7 @@ module Mutant
28
28
  # @api private
29
29
  def emit_name_mutation
30
30
  return if skip?
31
- Mutator::Util::Symbol.each(name, self) do |name|
32
- emit_name(name)
33
- end
31
+ emit_name(:"#{UNDERSCORE}#{name}")
34
32
  end
35
33
 
36
34
  # Test if argument mutation is skipped
@@ -13,11 +13,40 @@ module Mutant
13
13
  # @api private
14
14
  def dispatch
15
15
  emit_arguments_mutations
16
+ emit_optarg_body_assignments
16
17
  emit_body(N_RAISE)
17
18
  emit_body(nil)
18
19
  emit_body_mutations if body
19
20
  end
20
21
 
22
+ # Emit mutations with optional arguments as assignments in method
23
+ #
24
+ # @return [undefined]
25
+ #
26
+ # @api private
27
+ def emit_optarg_body_assignments
28
+ arguments.children.each do |argument|
29
+ next unless n_optarg?(argument) && AST::Meta::Optarg.new(argument).used?
30
+
31
+ emit_body_prepend(s(:lvasgn, *argument))
32
+ end
33
+ end
34
+
35
+ # Emit valid body ASTs depending on instance body
36
+ #
37
+ # @param node [Parser::AST::Node]
38
+ #
39
+ # @return [undefined]
40
+ #
41
+ # @api private
42
+ def emit_body_prepend(node)
43
+ if body
44
+ emit_body(s(:begin, node, body))
45
+ else
46
+ emit_body(node)
47
+ end
48
+ end
49
+
21
50
  # Mutator for instance method defines
22
51
  class Instance < self
23
52
 
@@ -25,6 +54,19 @@ module Mutant
25
54
 
26
55
  children :name, :arguments, :body
27
56
 
57
+ def dispatch
58
+ super()
59
+ emit_remove_method
60
+ end
61
+
62
+ # Remove an instance method
63
+ #
64
+ # @return [undefined]
65
+ #
66
+ # @api private
67
+ def emit_remove_method
68
+ emit(s(:send, nil, :remove_method, s(:sym, name)))
69
+ end
28
70
  end # Instance
29
71
 
30
72
  # Mutator for singleton method defines
@@ -19,7 +19,17 @@ module Mutant
19
19
  # @api private
20
20
  def dispatch
21
21
  mutate_name
22
- emit_value_mutations if value
22
+ emit_value_mutations
23
+ emit_remove_const
24
+ end
25
+
26
+ # Emit remove_const
27
+ #
28
+ # @return [undefined]
29
+ #
30
+ # @api private
31
+ def emit_remove_const
32
+ emit(s(:send, cbase, :remove_const, s(:sym, name)))
23
33
  end
24
34
 
25
35
  # Emit name mutations
@@ -16,7 +16,6 @@ module Mutant
16
16
  # @api private
17
17
  def dispatch
18
18
  emit_singletons
19
- emit(N_ZSUPER)
20
19
  emit(N_EMPTY_SUPER)
21
20
  children.each_index do |index|
22
21
  mutate_child(index)
@@ -27,7 +27,7 @@ module Mutant
27
27
  self
28
28
  end
29
29
 
30
- # Mutator for memoized instance methods
30
+ # Mutator for memoizable memoized instance methods
31
31
  class Memoized < self
32
32
  include AST::Sexp
33
33
 
@@ -1,4 +1,4 @@
1
1
  module Mutant
2
2
  # Current mutant version
3
- VERSION = '0.8.2'.freeze
3
+ VERSION = '0.8.3'.freeze
4
4
  end # Mutant
@@ -20,8 +20,8 @@ Mutant::Meta::Example.add do
20
20
  singleton_mutations
21
21
  mutation 'foo'
22
22
  mutation 'foo { |a, b| raise }'
23
- mutation 'foo { |a, b__mutant__| }'
24
- mutation 'foo { |a__mutant__, b| }'
23
+ mutation 'foo { |a, _b| }'
24
+ mutation 'foo { |_a, b| }'
25
25
  mutation 'foo { |a| }'
26
26
  mutation 'foo { |b| }'
27
27
  mutation 'foo { || }'
@@ -38,9 +38,9 @@ Mutant::Meta::Example.add do
38
38
  mutation 'foo { |(b), c| }'
39
39
  mutation 'foo { |(a, b)| }'
40
40
  mutation 'foo { |c| }'
41
- mutation 'foo { |(a__mutant__, b), c| }'
42
- mutation 'foo { |(a, b__mutant__), c| }'
43
- mutation 'foo { |(a, b), c__mutant__| }'
41
+ mutation 'foo { |(_a, b), c| }'
42
+ mutation 'foo { |(a, _b), c| }'
43
+ mutation 'foo { |(a, b), _c| }'
44
44
  mutation 'foo'
45
45
  end
46
46
 
@@ -66,6 +66,6 @@ Mutant::Meta::Example.add do
66
66
  mutation 'foo { || }'
67
67
  mutation 'foo { |a| }'
68
68
  mutation 'foo { |(a)| raise }'
69
- mutation 'foo { |(a__mutant__)| }'
69
+ mutation 'foo { |(_a)| }'
70
70
  mutation 'foo'
71
71
  end
@@ -4,4 +4,14 @@ Mutant::Meta::Example.add do
4
4
  mutation 'A__MUTANT__ = true'
5
5
  mutation 'A = false'
6
6
  mutation 'A = nil'
7
+ mutation 'remove_const :A'
8
+ end
9
+
10
+ Mutant::Meta::Example.add do
11
+ source 'self::A = true'
12
+
13
+ mutation 'self::A__MUTANT__ = true'
14
+ mutation 'self::A = false'
15
+ mutation 'self::A = nil'
16
+ mutation 'self.remove_const :A'
7
17
  end
@@ -2,6 +2,7 @@ Mutant::Meta::Example.add do
2
2
  source 'def foo; end'
3
3
 
4
4
  mutation 'def foo; raise; end'
5
+ mutation 'remove_method :foo'
5
6
  end
6
7
 
7
8
  Mutant::Meta::Example.add do
@@ -11,6 +12,7 @@ Mutant::Meta::Example.add do
11
12
  mutation 'def foo; nil; rescue; end'
12
13
  mutation 'def foo; self; rescue; end'
13
14
  mutation 'def foo; end'
15
+ mutation 'remove_method :foo'
14
16
 
15
17
  # Promote rescue resbody bodies
16
18
  mutation 'def foo; foo; end'
@@ -41,6 +43,8 @@ Mutant::Meta::Example.add do
41
43
 
42
44
  # Failing body
43
45
  mutation 'def a; raise; end'
46
+
47
+ mutation 'remove_method :a'
44
48
  end
45
49
 
46
50
  Mutant::Meta::Example.add do
@@ -60,6 +64,8 @@ Mutant::Meta::Example.add do
60
64
  mutation 'def foo; end'
61
65
 
62
66
  mutation 'def foo; raise; end'
67
+
68
+ mutation 'remove_method :foo'
63
69
  end
64
70
 
65
71
  Mutant::Meta::Example.add do
@@ -73,11 +79,30 @@ Mutant::Meta::Example.add do
73
79
  mutation 'def foo; end'
74
80
 
75
81
  # Rename each argument
76
- mutation 'def foo(a__mutant__, b); end'
77
- mutation 'def foo(a, b__mutant__); end'
82
+ mutation 'def foo(_a, b); end'
83
+ mutation 'def foo(a, _b); end'
78
84
 
79
85
  # Mutation of body
80
86
  mutation 'def foo(a, b); raise; end'
87
+
88
+ mutation 'remove_method :foo'
89
+ end
90
+
91
+ Mutant::Meta::Example.add do
92
+ source 'def foo(a, b = nil); true; end'
93
+
94
+ mutation 'def foo(_a, b = nil); true; end'
95
+ mutation 'def foo(a, b = nil); end'
96
+ mutation 'def foo; true; end'
97
+ mutation 'def foo(a, b = nil); raise; end'
98
+ mutation 'def foo(a, b = nil); nil; end'
99
+ mutation 'def foo(a, b = nil); false; end'
100
+ mutation 'def foo(a); true; end'
101
+ mutation 'def foo(a, b = nil); b = nil; true; end'
102
+ mutation 'def foo(b = nil); true; end'
103
+ mutation 'def foo(a, _b = nil); true; end'
104
+ mutation 'def foo(a, b); true; end'
105
+ mutation 'remove_method :foo'
81
106
  end
82
107
 
83
108
  Mutant::Meta::Example.add do
@@ -85,6 +110,7 @@ Mutant::Meta::Example.add do
85
110
 
86
111
  mutation 'def foo(_unused); raise; end'
87
112
  mutation 'def foo; end'
113
+ mutation 'remove_method :foo'
88
114
  end
89
115
 
90
116
  Mutant::Meta::Example.add do
@@ -95,12 +121,13 @@ Mutant::Meta::Example.add do
95
121
  mutation 'def foo(_unused = true); raise; end'
96
122
  mutation 'def foo(_unused); end'
97
123
  mutation 'def foo; end'
124
+ mutation 'remove_method :foo'
98
125
  end
99
126
 
100
127
  Mutant::Meta::Example.add do
101
128
  source 'def foo(a = 0, b = 0); end'
102
- mutation 'def foo(a = 0, b__mutant__ = 0); end'
103
- mutation 'def foo(a__mutant__ = 0, b = 0); end'
129
+ mutation 'def foo(a = 0, _b = 0); end'
130
+ mutation 'def foo(_a = 0, b = 0); end'
104
131
  mutation 'def foo(a = 0, b = 1); end'
105
132
  mutation 'def foo(a = 0, b = -1); end'
106
133
  mutation 'def foo(a = 0, b = self); end'
@@ -113,7 +140,10 @@ Mutant::Meta::Example.add do
113
140
  mutation 'def foo(b = 0); end'
114
141
  mutation 'def foo(a, b = 0); end'
115
142
  mutation 'def foo; end'
143
+ mutation 'def foo(a = 0, b = 0); a = 0; end'
144
+ mutation 'def foo(a = 0, b = 0); b = 0; end'
116
145
  mutation 'def foo(a = 0, b = 0); raise; end'
146
+ mutation 'remove_method :foo'
117
147
  end
118
148
 
119
149
  Mutant::Meta::Example.add do
@@ -123,8 +153,10 @@ Mutant::Meta::Example.add do
123
153
  mutation 'def foo(); end'
124
154
  mutation 'def foo(a = false); end'
125
155
  mutation 'def foo(a = nil); end'
126
- mutation 'def foo(a__mutant__ = true); end'
156
+ mutation 'def foo(_a = true); end'
127
157
  mutation 'def foo(a = true); raise; end'
158
+ mutation 'def foo(a = true); a = true; end'
159
+ mutation 'remove_method :foo'
128
160
  end
129
161
 
130
162
  Mutant::Meta::Example.add do
@@ -158,8 +190,8 @@ Mutant::Meta::Example.add do
158
190
  mutation 'def self.foo; end'
159
191
 
160
192
  # Rename each argument
161
- mutation 'def self.foo(a__mutant__, b); end'
162
- mutation 'def self.foo(a, b__mutant__); end'
193
+ mutation 'def self.foo(_a, b); end'
194
+ mutation 'def self.foo(a, _b); end'
163
195
 
164
196
  # Mutation of body
165
197
  mutation 'def self.foo(a, b); raise; end'
@@ -9,15 +9,12 @@ Mutant::Meta::Example.add do
9
9
  source 'super()'
10
10
 
11
11
  singleton_mutations
12
- # this is zsuper a totally different node than super()
13
- mutation 'super'
14
12
  end
15
13
 
16
14
  Mutant::Meta::Example.add do
17
15
  source 'super(foo, bar)'
18
16
 
19
17
  singleton_mutations
20
- mutation 'super'
21
18
  mutation 'super()'
22
19
  mutation 'super(foo)'
23
20
  mutation 'super(bar)'
@@ -24,10 +24,10 @@ Gem::Specification.new do |gem|
24
24
  gem.required_ruby_version = '>= 2.1'
25
25
 
26
26
  gem.add_runtime_dependency('parser', '~> 2.2.2')
27
- gem.add_runtime_dependency('ast', '~> 2.0')
27
+ gem.add_runtime_dependency('ast', '~> 2.1')
28
28
  gem.add_runtime_dependency('diff-lcs', '~> 1.2')
29
29
  gem.add_runtime_dependency('parallel', '~> 1.3')
30
- gem.add_runtime_dependency('morpher', '~> 0.2.3')
30
+ gem.add_runtime_dependency('morpher', '~> 0.2.4')
31
31
  gem.add_runtime_dependency('procto', '~> 0.0.2')
32
32
  gem.add_runtime_dependency('abstract_type', '~> 0.0.7')
33
33
  gem.add_runtime_dependency('unparser', '~> 0.2.4')
@@ -0,0 +1,22 @@
1
+ RSpec.describe Mutant::AST::Meta::Optarg do
2
+ subject(:object) { described_class.new(node) }
3
+
4
+ let(:node) { s(:optarg, name, value) }
5
+ let(:name) { :foo }
6
+ let(:value) { s(:sym, :bar) }
7
+
8
+ its(:name) { should be(:foo) }
9
+ its(:default_value) { should eql(s(:sym, :bar)) }
10
+
11
+ describe '#used?' do
12
+ subject { object.used? }
13
+
14
+ it { should be true }
15
+
16
+ context 'when name is prefixed with an underscore' do
17
+ let(:name) { :_foo }
18
+ it { should be false }
19
+ end
20
+ end
21
+
22
+ end
@@ -144,6 +144,11 @@ RSpec.describe Mutant::Subject::Method::Instance::Memoized do
144
144
  object,
145
145
  s(:begin,
146
146
  s(:def, :foo, s(:args), nil), s(:send, nil, :memoize, s(:args, s(:sym, :foo))))
147
+ ),
148
+ Mutant::Mutation::Evil.new(
149
+ object,
150
+ s(:begin,
151
+ s(:send, nil, :remove_method, s(:sym, :foo)), s(:send, nil, :memoize, s(:args, s(:sym, :foo))))
147
152
  )
148
153
  ]
149
154
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mutant
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.2
4
+ version: 0.8.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Markus Schirp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-11 00:00:00.000000000 Z
11
+ date: 2015-09-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '2.0'
33
+ version: '2.1'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '2.0'
40
+ version: '2.1'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: diff-lcs
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.2.3
75
+ version: 0.2.4
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.2.3
82
+ version: 0.2.4
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: procto
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -279,6 +279,9 @@ files:
279
279
  - lib/mutant/actor/sender.rb
280
280
  - lib/mutant/ast.rb
281
281
  - lib/mutant/ast/meta.rb
282
+ - lib/mutant/ast/meta/optarg.rb
283
+ - lib/mutant/ast/meta/resbody.rb
284
+ - lib/mutant/ast/meta/send.rb
282
285
  - lib/mutant/ast/named_children.rb
283
286
  - lib/mutant/ast/node_predicates.rb
284
287
  - lib/mutant/ast/nodes.rb
@@ -494,6 +497,7 @@ files:
494
497
  - spec/unit/mutant/actor/message_spec.rb
495
498
  - spec/unit/mutant/actor/receiver_spec.rb
496
499
  - spec/unit/mutant/actor/sender_spec.rb
500
+ - spec/unit/mutant/ast/meta/optarg_spec.rb
497
501
  - spec/unit/mutant/ast/meta/send_spec.rb
498
502
  - spec/unit/mutant/ast/named_children_spec.rb
499
503
  - spec/unit/mutant/ast/sexp_spec.rb
@@ -595,7 +599,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
595
599
  version: '0'
596
600
  requirements: []
597
601
  rubyforge_project:
598
- rubygems_version: 2.4.5
602
+ rubygems_version: 2.4.5.1
599
603
  signing_key:
600
604
  specification_version: 4
601
605
  summary: Mutation testing tool for ruby under MRI and Rubinius
@@ -610,6 +614,7 @@ test_files:
610
614
  - spec/unit/mutant/actor/message_spec.rb
611
615
  - spec/unit/mutant/actor/receiver_spec.rb
612
616
  - spec/unit/mutant/actor/sender_spec.rb
617
+ - spec/unit/mutant/ast/meta/optarg_spec.rb
613
618
  - spec/unit/mutant/ast/meta/send_spec.rb
614
619
  - spec/unit/mutant/ast/named_children_spec.rb
615
620
  - spec/unit/mutant/ast/sexp_spec.rb