Module: Mutant

Defined in:
lib/mutant.rb,
lib/mutant.rb,
lib/mutant/ast.rb,
lib/mutant/cli.rb,
lib/mutant/env.rb,
lib/mutant/diff.rb,
lib/mutant/meta.rb,
lib/mutant/test.rb,
lib/mutant/cache.rb,
lib/mutant/color.rb,
lib/mutant/config.rb,
lib/mutant/loader.rb,
lib/mutant/result.rb,
lib/mutant/runner.rb,
lib/mutant/walker.rb,
lib/mutant/context.rb,
lib/mutant/matcher.rb,
lib/mutant/mutator.rb,
lib/mutant/subject.rb,
lib/mutant/version.rb,
lib/mutant/ast/meta.rb,
lib/mutant/ast/sexp.rb,
lib/mutant/mutation.rb,
lib/mutant/reporter.rb,
lib/mutant/ast/nodes.rb,
lib/mutant/ast/types.rb,
lib/mutant/delegator.rb,
lib/mutant/isolation.rb,
lib/mutant/zombifier.rb,
lib/mutant/expression.rb,
lib/mutant/integration.rb,
lib/mutant/matcher/null.rb,
lib/mutant/meta/example.rb,
lib/mutant/mutator/node.rb,
lib/mutant/mutator/util.rb,
lib/mutant/reporter/cli.rb,
lib/mutant/context/scope.rb,
lib/mutant/matcher/chain.rb,
lib/mutant/matcher/scope.rb,
lib/mutant/reporter/null.rb,
lib/mutant/matcher/config.rb,
lib/mutant/matcher/filter.rb,
lib/mutant/matcher/method.rb,
lib/mutant/reporter/trace.rb,
lib/mutant/subject/method.rb,
lib/mutant/warning_filter.rb,
lib/mutant/zombifier/file.rb,
lib/mutant/matcher/methods.rb,
lib/mutant/mutator/node/if.rb,
lib/mutant/matcher/compiler.rb,
lib/mutant/meta/example/dsl.rb,
lib/mutant/mutator/registry.rb,
lib/mutant/require_highjack.rb,
lib/mutant/expression/method.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/next.rb,
lib/mutant/mutator/node/noop.rb,
lib/mutant/mutator/node/send.rb,
lib/mutant/mutator/node/when.rb,
lib/mutant/ast/named_children.rb,
lib/mutant/expression/methods.rb,
lib/mutant/mutator/node/begin.rb,
lib/mutant/mutator/node/block.rb,
lib/mutant/mutator/node/break.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/ast/node_predicates.rb,
lib/mutant/mutator/node/binary.rb,
lib/mutant/mutator/node/define.rb,
lib/mutant/mutator/node/nthref.rb,
lib/mutant/mutator/node/rescue.rb,
lib/mutant/mutator/node/return.rb,
lib/mutant/mutator/node/zsuper.rb,
lib/mutant/mutator/util/symbol.rb,
lib/mutant/reporter/cli/report.rb,
lib/mutant/warning_expectation.rb,
lib/mutant/expression/namespace.rb,
lib/mutant/mutator/node/defined.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/or_asgn.rb,
lib/mutant/mutator/node/resbody.rb,
lib/mutant/mutator/node/restarg.rb,
lib/mutant/reporter/cli/printer.rb,
lib/mutant/matcher/method/finder.rb,
lib/mutant/mutator/node/and_asgn.rb,
lib/mutant/mutator/node/argument.rb,
lib/mutant/mutator/node/blockarg.rb,
lib/mutant/reporter/cli/progress.rb,
lib/mutant/reporter/cli/registry.rb,
lib/mutant/mutator/node/arguments.rb,
lib/mutant/matcher/method/instance.rb,
lib/mutant/mutator/node/send/index.rb,
lib/mutant/reporter/cli/report/env.rb,
lib/mutant/subject/method/instance.rb,
lib/mutant/matcher/method/singleton.rb,
lib/mutant/mutator/node/literal/nil.rb,
lib/mutant/mutator/node/send/binary.rb,
lib/mutant/reporter/cli/report/test.rb,
lib/mutant/subject/method/singleton.rb,
lib/mutant/mutator/node/literal/hash.rb,
lib/mutant/reporter/cli/progress/env.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/reporter/cli/progress/noop.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/report/subject.rb,
lib/mutant/mutator/node/literal/boolean.rb,
lib/mutant/reporter/cli/progress/config.rb,
lib/mutant/reporter/cli/progress/result.rb,
lib/mutant/reporter/cli/report/mutation.rb,
lib/mutant/mutator/node/conditional_loop.rb,
lib/mutant/reporter/cli/progress/subject.rb,
lib/mutant/mutator/node/match_current_line.rb,
lib/mutant/mutator/node/named_value/access.rb,
lib/mutant/reporter/cli/progress/result/subject.rb,
lib/mutant/reporter/cli/progress/result/mutation.rb,
lib/mutant/mutator/node/send/attribute_assignment.rb,
lib/mutant/mutator/node/named_value/constant_assignment.rb,
lib/mutant/mutator/node/named_value/variable_assignment.rb

Overview

Library namespace

Defined Under Namespace

Modules: AST, Delegator, Isolation, Meta, Result Classes: CLI, Cache, Color, Config, Context, Diff, Env, Expression, Integration, Loader, Matcher, Mutation, Mutator, Reporter, RequireHighjack, Runner, Subject, Test, Walker, WarningExpectation, WarningFilter, Zombifier

Constant Summary collapse

EMPTY_STRING =

The frozen empty string used within mutant

''.freeze
EMPTY_ARRAY =

The frozen empty array used within mutant

[].freeze
SCOPE_OPERATOR =
'::'.freeze
VERSION =

The current mutant version

'0.5.25'.freeze

Class Method Summary collapse

Class Method Details

.constant_lookup(location) ⇒ Object

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.

Lookup constant for location

Parameters:

  • location (String)

Returns:

  • (Object)


38
39
40
41
42
# File 'lib/mutant.rb', line 38

def self.constant_lookup(location)
  location.split(SCOPE_OPERATOR).reduce(Object) do |parent, name|
    parent.const_get(name, nil)
  end
end

.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

Parameters:

  • superclass (Class)
  • name (Symbol)

Returns:

  • (self)


64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/mutant.rb', line 64

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

.zombifyself

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.

Perform self zombification

Returns:

  • (self)


50
51
52
53
# File 'lib/mutant.rb', line 50

def self.zombify
  Zombifier.run('mutant', :Zombie)
  self
end