diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e1f1fdc..3862258f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/). ## [Master (Unreleased)] +### Added + +- Block-pass mutations (`foo(&method(:bar))` -> `foo(&public_method(:bar))`) [[#54](https://github.com/backus/mutest/pull/54/files) ([@dgollahon][])] + ## [0.0.6] - 2017-03-04 ### Fixed diff --git a/lib/mutest.rb b/lib/mutest.rb index 377696c7..62a90889 100644 --- a/lib/mutest.rb +++ b/lib/mutest.rb @@ -123,7 +123,7 @@ def self.ci? require 'mutest/mutator/node/named_value/variable_assignment' require 'mutest/mutator/node/next' require 'mutest/mutator/node/break' -require 'mutest/mutator/node/noop' +require 'mutest/mutator/node/block_pass' require 'mutest/mutator/node/or_asgn' require 'mutest/mutator/node/and_asgn' require 'mutest/mutator/node/defined' diff --git a/lib/mutest/mutator/node/noop.rb b/lib/mutest/mutator/node/block_pass.rb similarity index 59% rename from lib/mutest/mutator/node/noop.rb rename to lib/mutest/mutator/node/block_pass.rb index 5a1b037b..e906e5b4 100644 --- a/lib/mutest/mutator/node/noop.rb +++ b/lib/mutest/mutator/node/block_pass.rb @@ -1,9 +1,10 @@ module Mutest class Mutator class Node - # Mutation emitter to handle noop nodes - class Noop < self - handle(:block_pass, :cbase) + class BlockPass < self + handle(:block_pass) + + children :arg private @@ -11,9 +12,9 @@ class Noop < self # # @return [undefined] def dispatch - # noop + emit_arg_mutations end - end # Noop + end # BlockPass end # Node end # Mutator end # Mutest diff --git a/lib/mutest/mutator/node/generic.rb b/lib/mutest/mutator/node/generic.rb index 9ca6ebf5..369f8e20 100644 --- a/lib/mutest/mutator/node/generic.rb +++ b/lib/mutest/mutator/node/generic.rb @@ -4,6 +4,7 @@ class Node # Generic mutator class Generic < self unsupported_nodes = %i[ + cbase ensure redo retry diff --git a/meta/block_pass.rb b/meta/block_pass.rb index a5d0fd0b..f6e88024 100644 --- a/meta/block_pass.rb +++ b/meta/block_pass.rb @@ -1,6 +1,14 @@ Mutest::Meta::Example.add :block_pass do - source 'foo(&bar)' + source 'foo(&method(:bar))' singleton_mutations mutation 'foo' + mutation 'foo(&nil)' + mutation 'foo(&self)' + mutation 'foo(&method)' + mutation 'foo(&method(nil))' + mutation 'foo(&method(self))' + mutation 'foo(&method(:bar__mutest__))' + mutation 'foo(&public_method(:bar))' + mutation 'foo(&:bar)' end diff --git a/meta/send.rb b/meta/send.rb index 2e9181f8..c7266f21 100644 --- a/meta/send.rb +++ b/meta/send.rb @@ -404,6 +404,8 @@ singleton_mutations mutation 'foo' + mutation 'foo(&nil)' + mutation 'foo(&self)' end Mutest::Meta::Example.add :send do