Module: Mutant

Defined in:
lib/mutant.rb,
lib/mutant/cli.rb,
lib/mutant/cache.rb,
lib/mutant/color.rb,
lib/mutant/config.rb,
lib/mutant/differ.rb,
lib/mutant/killer.rb,
lib/mutant/loader.rb,
lib/mutant/random.rb,
lib/mutant/runner.rb,
lib/mutant/context.rb,
lib/mutant/matcher.rb,
lib/mutant/mutator.rb,
lib/mutant/subject.rb,
lib/mutant/version.rb,
lib/mutant/mutation.rb,
lib/mutant/reporter.rb,
lib/mutant/strategy.rb,
lib/mutant/constants.rb,
lib/mutant/predicate.rb,
lib/mutant/zombifier.rb,
lib/mutant/cli/builder.rb,
lib/mutant/killer/rspec.rb,
lib/mutant/mutator/node.rb,
lib/mutant/mutator/util.rb,
lib/mutant/node_helpers.rb,
lib/mutant/reporter/cli.rb,
lib/mutant/context/scope.rb,
lib/mutant/killer/forked.rb,
lib/mutant/killer/static.rb,
lib/mutant/matcher/chain.rb,
lib/mutant/matcher/scope.rb,
lib/mutant/mutation/evil.rb,
lib/mutant/reporter/null.rb,
lib/mutant/runner/config.rb,
lib/mutant/cli/classifier.rb,
lib/mutant/killer/forking.rb,
lib/mutant/matcher/filter.rb,
lib/mutant/matcher/method.rb,
lib/mutant/runner/subject.rb,
lib/mutant/strategy/rspec.rb,
lib/mutant/subject/method.rb,
lib/mutant/matcher/methods.rb,
lib/mutant/mutator/node/if.rb,
lib/mutant/runner/mutation.rb,
lib/mutant/mutation/neutral.rb,
lib/mutant/mutator/registry.rb,
lib/mutant/matcher/namespace.rb,
lib/mutant/mutator/node/case.rb,
lib/mutant/mutator/node/dstr.rb,
lib/mutant/mutator/node/dsym.rb,
lib/mutant/mutator/node/mlhs.rb,
lib/mutant/mutator/node/noop.rb,
lib/mutant/mutator/node/send.rb,
lib/mutant/mutator/node/when.rb,
lib/mutant/predicate/matcher.rb,
lib/mutant/singleton_methods.rb,
lib/mutant/mutator/node/begin.rb,
lib/mutant/mutator/node/block.rb,
lib/mutant/mutator/node/const.rb,
lib/mutant/mutator/node/masgn.rb,
lib/mutant/mutator/node/splat.rb,
lib/mutant/mutator/node/super.rb,
lib/mutant/mutator/node/yield.rb,
lib/mutant/mutator/util/array.rb,
lib/mutant/mutator/node/binary.rb,
lib/mutant/mutator/node/define.rb,
lib/mutant/mutator/node/nthref.rb,
lib/mutant/mutator/node/return.rb,
lib/mutant/mutator/node/zsuper.rb,
lib/mutant/mutator/util/symbol.rb,
lib/mutant/predicate/attribute.rb,
lib/mutant/predicate/blacklist.rb,
lib/mutant/predicate/whitelist.rb,
lib/mutant/mutator/node/generic.rb,
lib/mutant/mutator/node/kwbegin.rb,
lib/mutant/mutator/node/literal.rb,
lib/mutant/mutator/node/op_asgn.rb,
lib/mutant/mutator/node/resbody.rb,
lib/mutant/mutator/node/restarg.rb,
lib/mutant/reporter/cli/printer.rb,
lib/mutant/cli/classifier/method.rb,
lib/mutant/matcher/method/finder.rb,
lib/mutant/mutator/node/argument.rb,
lib/mutant/mutator/node/blockarg.rb,
lib/mutant/mutator/node/arguments.rb,
lib/mutant/matcher/method/instance.rb,
lib/mutant/subject/method/instance.rb,
lib/mutant/cli/classifier/namespace.rb,
lib/mutant/matcher/method/singleton.rb,
lib/mutant/mutator/node/literal/nil.rb,
lib/mutant/mutator/node/send/binary.rb,
lib/mutant/subject/method/singleton.rb,
lib/mutant/mutator/node/literal/hash.rb,
lib/mutant/mutator/node/loop_control.rb,
lib/mutant/mutator/node/literal/array.rb,
lib/mutant/mutator/node/literal/float.rb,
lib/mutant/mutator/node/literal/range.rb,
lib/mutant/mutator/node/literal/regex.rb,
lib/mutant/mutator/node/literal/fixnum.rb,
lib/mutant/mutator/node/literal/string.rb,
lib/mutant/mutator/node/literal/symbol.rb,
lib/mutant/reporter/cli/printer/config.rb,
lib/mutant/reporter/cli/printer/killer.rb,
lib/mutant/mutator/node/literal/boolean.rb,
lib/mutant/mutator/node/literal/dynamic.rb,
lib/mutant/reporter/cli/printer/subject.rb,
lib/mutant/mutator/node/conditional_loop.rb,
lib/mutant/reporter/cli/printer/mutation.rb,
lib/mutant/mutator/node/named_value/access.rb,
lib/mutant/mutator/node/named_value/constant_assignment.rb,
lib/mutant/mutator/node/named_value/variable_assignment.rb

Overview

Singleton methods are defined here so zombie can pick them up

Defined Under Namespace

Modules: NodeHelpers, Random, Zombifier Classes: CLI, Cache, Color, Config, Context, Differ, Killer, Loader, Matcher, Mutation, Mutator, Predicate, Reporter, Runner, Strategy, Subject

Constant Summary collapse

EMPTY_STRING =

The empty string used within this namespace

''.freeze
VERSION =

The current mutant version

'0.3.3'.freeze
NOT_ASSIGNABLE =

Set of nodes that cannot be on the LHS of an assignment

[
  :int, :float, :str, :dstr, :class, :module, :self
].to_set.freeze
OP_ASSIGN =

Set of op-assign types

[
  :or_asgn, :and_asgn, :op_asgn
].to_set.freeze
NOT_STANDALONE =

Set of node types that are not valid when emitted standalone

[:splat, :restarg, :block_pass].to_set.freeze
METHOD_OPERATORS =

Operators ruby implementeds as methods

%w(
  <=> === []= [] <= >= == !~ != =~ <<
  >> ** * % / | ^ & < > + - ~@ +@ -@ !
).map(&:to_sym).to_set.freeze
INDEX_OPERATORS =
[:[], :[]=].to_set.freeze
UNARY_METHOD_OPERATORS =
%w(
  ~@ +@ -@ !
).map(&:to_sym).to_set.freeze
BINARY_METHOD_OPERATORS =
(
  METHOD_OPERATORS - (INDEX_OPERATORS + UNARY_METHOD_OPERATORS)
).to_set.freeze
OPERATOR_METHODS =
(
  METHOD_OPERATORS + INDEX_OPERATORS + UNARY_METHOD_OPERATORS
).to_set.freeze
NODE_BLACKLIST =

Nodes that are NOT handled by mutant.

not - 1.8 only, mutant does not support 1.8

%w(
  not
).map(&:to_sym).freeze
NODE_EXTRA =

Nodes that are NOT generated by parser but used by mutant / unparser.

%w(
  empty
).map(&:to_sym).freeze
NODE_TYPES =
((Parser::Meta::NODE_TYPES + NODE_EXTRA) - NODE_BLACKLIST).to_set.freeze

Class Method Summary collapse

Class Method Details

.singleton_subclass_instance(name, superclass, &block) ⇒ self

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Define instance of subclassed superclass as constant



15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/mutant/singleton_methods.rb', line 15

def self.singleton_subclass_instance(name, superclass, &block)
  klass = Class.new(superclass) do
    def inspect
      self.class.name
    end

    define_singleton_method(:name) do
      "#{superclass.name}::#{name}".freeze
    end
  end
  klass.class_eval(&block)
  superclass.const_set(name, klass.new)
  self
end