From f714f8215f0c0cd8af6d13dc95ec9d4c7df8e81a Mon Sep 17 00:00:00 2001 From: Dan Kubb Date: Sat, 7 Sep 2013 23:03:25 -0700 Subject: [PATCH] Add explicit mutator for op_asgn --- lib/mutant.rb | 1 + lib/mutant/mutator/node/generic.rb | 2 +- lib/mutant/mutator/node/op_asgn.rb | 30 +++++++++++++++++++ .../mutator/node/op_assgn/mutation_spec.rb | 3 +- 4 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 lib/mutant/mutator/node/op_asgn.rb diff --git a/lib/mutant.rb b/lib/mutant.rb index f08496e3..21febcbe 100644 --- a/lib/mutant.rb +++ b/lib/mutant.rb @@ -69,6 +69,7 @@ require 'mutant/mutator/node/named_value/access' require 'mutant/mutator/node/named_value/constant_assignment' require 'mutant/mutator/node/named_value/variable_assignment' require 'mutant/mutator/node/noop' +require 'mutant/mutator/node/op_asgn' require 'mutant/mutator/node/while' require 'mutant/mutator/node/super' require 'mutant/mutator/node/zsuper' diff --git a/lib/mutant/mutator/node/generic.rb b/lib/mutant/mutator/node/generic.rb index b2b55ce7..8e8f710f 100644 --- a/lib/mutant/mutator/node/generic.rb +++ b/lib/mutant/mutator/node/generic.rb @@ -12,7 +12,7 @@ module Mutant handle( :next, :break, :ensure, :dsym, :yield, :rescue, :redo, :defined?, - :blockarg, :op_asgn, :and_asgn, + :blockarg, :and_asgn, :regopt, :restarg, :resbody, :retry, :arg_expr, :kwrestarg, :kwoptarg, :kwarg, :undef, :module, :empty, :alias, :for, :xstr, :back_ref, :class, diff --git a/lib/mutant/mutator/node/op_asgn.rb b/lib/mutant/mutator/node/op_asgn.rb new file mode 100644 index 00000000..66437a26 --- /dev/null +++ b/lib/mutant/mutator/node/op_asgn.rb @@ -0,0 +1,30 @@ +# encoding: utf-8 + +module Mutant + class Mutator + class Node + + # OpAsgn mutator + class OpAsgn < Generic + + handle(:op_asgn) + + children :left, :right + + private + + # Emit mutations + # + # @return [undefined] + # + # @api private + # + def dispatch + super + emit_nil + end + + end # OpAsgn + end # Node + end # Mutator +end # Mutant diff --git a/spec/unit/mutant/mutator/node/op_assgn/mutation_spec.rb b/spec/unit/mutant/mutator/node/op_assgn/mutation_spec.rb index b44ddf5b..6f0429d1 100644 --- a/spec/unit/mutant/mutator/node/op_assgn/mutation_spec.rb +++ b/spec/unit/mutant/mutator/node/op_assgn/mutation_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' describe Mutant::Mutator::Node::Generic, 'op_asgn' do let(:random_fixnum) { 5 } - let(:source) { '@a.b += 1' } + let(:source) { '@a.b += 1' } let(:mutations) do mutations = [] @@ -16,6 +16,7 @@ describe Mutant::Mutator::Node::Generic, 'op_asgn' do mutations << '@a += 1' mutations << '@a.b += 5' mutations << 'nil.b += 1' + mutations << 'nil' end before do