mutant 0.3.0.beta15 → 0.3.0.beta16

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1042e4c0fc2031a03918edcdfdfa7dfcdac388e7
4
- data.tar.gz: b4f7f5d0b9d8e4ac9d59a147e8b25860d173145f
3
+ metadata.gz: 38a209c1a41689899473f5ffd76d4778793ae359
4
+ data.tar.gz: 36a5e1f2cce948d7eec65367d905578f55007359
5
5
  SHA512:
6
- metadata.gz: 85fadf546e6df77875b1d36ce8c9010037a1ed94571ec3e48b92ac73c89729d62321910872046295cbdf757ca715b88f1bf0b714ed0e9f5d443705664dc8454f
7
- data.tar.gz: af84ddf9ba4c27c335b7c58c48a35e899bc568871ab53141db7f175ed99cdb3383c4307ee9b257fc5ef61ec15307dbfcb9ab981c5b65fcb1c489e6ffd4fc3097
6
+ metadata.gz: 559f63b87a732ccaec3da0135beb866f07aee549d659ffdf8842c39ba6660d4a6c62c49e4c2b14facfd1e826dd340bcfa94e5696c2ca474db459dbfabf75655e
7
+ data.tar.gz: 77faa291d42db7fb15a7150919bda98827130e876f1a3b2d987677a972e2e0f7c6efa5e6eea816c2e1ab877e8e2f8e61f8ae5374754441a01960853e7ccdb238
data/config/flay.yml CHANGED
@@ -1,3 +1,3 @@
1
1
  ---
2
2
  threshold: 16
3
- total_score: 692
3
+ total_score: 698
data/config/reek.yml CHANGED
@@ -64,6 +64,7 @@ TooManyInstanceVariables:
64
64
  - Mutant::CLI # 4 vars
65
65
  - Mutant::Killer # 4 vars
66
66
  - Mutant::Mutator # 4 vars
67
+ - Mutant::Runner # 4 vars
67
68
  max_instance_variables: 3
68
69
  TooManyMethods:
69
70
  enabled: true
@@ -79,6 +80,7 @@ TooManyStatements:
79
80
  - Mutant::Reporter::CLI::Printer::Config::Runner#run
80
81
  - Mutant#self.singleton_subclass_instance
81
82
  - Mutant::Zombifier::File#self.find_uncached
83
+ - Mutant::Runner#dispatch
82
84
  max_statements: 6
83
85
  UncommunicativeMethodName:
84
86
  enabled: true
data/lib/mutant.rb CHANGED
@@ -69,6 +69,7 @@ require 'mutant/mutator/node/return'
69
69
  require 'mutant/mutator/node/block'
70
70
  require 'mutant/mutator/node/if'
71
71
  require 'mutant/mutator/node/case'
72
+ require 'mutant/mutator/node/splat'
72
73
  require 'mutant/config'
73
74
  require 'mutant/loader'
74
75
  require 'mutant/context'
@@ -12,7 +12,7 @@ module Mutant
12
12
  :zsuper, :not, :or, :and, :defined,
13
13
  :next, :break, :match, :gvar, :cvar, :ensure,
14
14
  :dstr, :dsym, :yield, :rescue, :redo, :defined?,
15
- :lvar, :splat, :const, :blockarg, :block_pass, :op_asgn, :and_asgn,
15
+ :lvar, :const, :blockarg, :block_pass, :op_asgn, :and_asgn,
16
16
  :regopt, :ivar, :restarg, :casgn, :resbody, :retry, :arg_expr,
17
17
  :kwrestarg, :kwoptarg, :kwarg, :undef, :module, :cbase, :empty,
18
18
  :alias, :for, :xstr, :back_ref, :nth_ref, :class,
@@ -0,0 +1,28 @@
1
+ module Mutant
2
+ class Mutator
3
+ class Node
4
+ # Mutator for splat nodes
5
+ class Splat < self
6
+
7
+ handle :splat
8
+
9
+ children :expression
10
+
11
+ private
12
+
13
+ # Perform dispatch
14
+ #
15
+ # @return [undefined]
16
+ #
17
+ # @api private
18
+ #
19
+ def dispatch
20
+ emit_nil
21
+ emit_expression_mutations
22
+ emit(expression)
23
+ end
24
+
25
+ end # Splat
26
+ end # Node
27
+ end # Mutator
28
+ end # Mutant
data/lib/mutant/runner.rb CHANGED
@@ -14,7 +14,7 @@ module Mutant
14
14
  # @api private
15
15
  #
16
16
  def self.register(klass)
17
- REGISTRY[klass]=self
17
+ REGISTRY[klass] = self
18
18
  end
19
19
  private_class_method :register
20
20
 
@@ -29,10 +29,8 @@ module Mutant
29
29
  def self.lookup(klass)
30
30
  current = klass
31
31
  while current
32
- handler = REGISTRY.fetch(current) do
33
- current = current.superclass; nil
34
- end
35
- return handler if handler
32
+ return REGISTRY.fetch(current) if REGISTRY.key?(current)
33
+ current = current.superclass
36
34
  end
37
35
 
38
36
  raise ArgumentError, "No handler for: #{klass}"
@@ -84,6 +82,8 @@ module Mutant
84
82
  # @return [false]
85
83
  # otherwise
86
84
  #
85
+ # @api private
86
+ #
87
87
  def stop?
88
88
  !!@stop
89
89
  end
@@ -32,13 +32,16 @@ module Mutant
32
32
 
33
33
  # Return mutations
34
34
  #
35
- # @return [Enumerable<Mutation>]
35
+ # @param [#<<] emitter
36
+ #
37
+ # @return [undefined]
36
38
  #
37
39
  # @api private
38
40
  #
39
- def mutations
40
- Mutator.each(node).map do |mutant|
41
- Mutation::Evil.new(self, memoizer_node(mutant))
41
+ def generate_mutations(emitter)
42
+ emitter << noop_mutation
43
+ Mutator.each(node) do |mutant|
44
+ emitter << Mutation::Evil.new(self, memoizer_node(mutant))
42
45
  end
43
46
  end
44
47
 
data/mutant.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |gem|
4
4
  gem.name = 'mutant'
5
- gem.version = '0.3.0.beta15'
5
+ gem.version = '0.3.0.beta16'
6
6
  gem.authors = [ 'Markus Schirp' ]
7
7
  gem.email = [ 'mbj@schirp-dso.com' ]
8
8
 
@@ -31,6 +31,8 @@ describe Mutant::Mutator, 'send' do
31
31
  let(:mutations) do
32
32
  mutations = []
33
33
  mutations << 'foo'
34
+ mutations << 'foo(nil)'
35
+ mutations << 'foo(bar)'
34
36
  end
35
37
 
36
38
  it_should_behave_like 'a mutator'
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.3.0.beta15
4
+ version: 0.3.0.beta16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Markus Schirp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-14 00:00:00.000000000 Z
11
+ date: 2013-07-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser
@@ -245,6 +245,7 @@ files:
245
245
  - lib/mutant/mutator/node/return.rb
246
246
  - lib/mutant/mutator/node/send.rb
247
247
  - lib/mutant/mutator/node/send/binary.rb
248
+ - lib/mutant/mutator/node/splat.rb
248
249
  - lib/mutant/mutator/node/super.rb
249
250
  - lib/mutant/mutator/node/when.rb
250
251
  - lib/mutant/mutator/node/while.rb