From 23a84df277438793d988b9d3d761e8c8f4b91118 Mon Sep 17 00:00:00 2001 From: Dan Kubb Date: Tue, 23 Jul 2013 00:37:19 -0700 Subject: [PATCH] Add mutator for self nodes --- lib/mutant/mutator/node/generic.rb | 2 -- lib/mutant/mutator/node/named_value/access.rb | 4 ++-- .../mutator/node/named_value/access/mutation_spec.rb | 11 +++++++++++ spec/unit/mutant/mutator/node/send/mutation_spec.rb | 4 ++++ spec/unit/mutant/mutator/self_spec.rb | 7 ------- 5 files changed, 17 insertions(+), 11 deletions(-) delete mode 100644 spec/unit/mutant/mutator/self_spec.rb diff --git a/lib/mutant/mutator/node/generic.rb b/lib/mutant/mutator/node/generic.rb index 0bab9dd1..208a1add 100644 --- a/lib/mutant/mutator/node/generic.rb +++ b/lib/mutant/mutator/node/generic.rb @@ -5,8 +5,6 @@ module Mutant # Generic mutator class Generic < self - handle(:self) - # These nodes still need a dedicated mutator, # your contribution is that close! handle( diff --git a/lib/mutant/mutator/node/named_value/access.rb b/lib/mutant/mutator/node/named_value/access.rb index 6e7f505d..47bf6a24 100644 --- a/lib/mutant/mutator/node/named_value/access.rb +++ b/lib/mutant/mutator/node/named_value/access.rb @@ -3,10 +3,10 @@ module Mutant class Node module NamedValue - # Mutation emitter to handle value access nodes + # Mutation emitter to handle named value access nodes class Access < Node - handle(:gvar, :cvar, :ivar, :lvar, :const) + handle(:gvar, :cvar, :ivar, :lvar, :const, :self) private diff --git a/spec/unit/mutant/mutator/node/named_value/access/mutation_spec.rb b/spec/unit/mutant/mutator/node/named_value/access/mutation_spec.rb index 1ab64e1d..e955b3ff 100644 --- a/spec/unit/mutant/mutator/node/named_value/access/mutation_spec.rb +++ b/spec/unit/mutant/mutator/node/named_value/access/mutation_spec.rb @@ -74,4 +74,15 @@ describe Mutant::Mutator::Node::NamedValue::Access, 'mutations' do it_should_behave_like 'a mutator' end + + context 'self' do + let(:source) { 'self' } + + let(:mutations) do + mutants = [] + mutants << 'nil' + end + + it_should_behave_like 'a mutator' + end end diff --git a/spec/unit/mutant/mutator/node/send/mutation_spec.rb b/spec/unit/mutant/mutator/node/send/mutation_spec.rb index c53b3bad..3742a4f0 100644 --- a/spec/unit/mutant/mutator/node/send/mutation_spec.rb +++ b/spec/unit/mutant/mutator/node/send/mutation_spec.rb @@ -9,6 +9,7 @@ describe Mutant::Mutator, 'send' do let(:mutations) do mutations = [] mutations << 'foo ||= expression' + mutations << 'nil.foo ||= expression' end it_should_behave_like 'a mutator' @@ -74,6 +75,7 @@ describe Mutant::Mutator, 'send' do mutations = [] mutations << 'foo' mutations << 'self' + mutations << 'nil.foo' end it_should_behave_like 'a mutator' @@ -111,6 +113,7 @@ describe Mutant::Mutator, 'send' do mutations = [] mutations << 'self.class' mutations << 'self.foo' + mutations << 'nil.class.foo' end it_should_behave_like 'a mutator' @@ -142,6 +145,7 @@ describe Mutant::Mutator, 'send' do mutations << 'foo(nil)' mutations << 'nil' mutations << 'self.foo(::Object.new)' + mutations << 'nil.foo(nil)' end it_should_behave_like 'a mutator' diff --git a/spec/unit/mutant/mutator/self_spec.rb b/spec/unit/mutant/mutator/self_spec.rb deleted file mode 100644 index 85aa32c3..00000000 --- a/spec/unit/mutant/mutator/self_spec.rb +++ /dev/null @@ -1,7 +0,0 @@ -require 'spec_helper' - -describe Mutant::Mutator, 'self' do - let(:source) { 'self' } - - it_should_behave_like 'a noop mutator' -end