Class: Mutant::Mutation Private

Inherits:
Object
  • Object
show all
Includes:
AbstractType, Adamantium::Flat
Defined in:
lib/mutant/mutation.rb

Overview

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

Represent a mutated node with its subject

API:

  • private

Direct Known Subclasses

Evil, Neutral

Defined Under Namespace

Classes: Evil, Neutral, Noop

Constant Summary collapse

CODE_DELIMITER =

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

API:

  • private

"\0"
CODE_RANGE =

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

API:

  • private

(0..4).freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.success?(test_result) ⇒ Boolean

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.

Test if mutation is killed by test reports

Parameters:

Returns:

API:

  • private



56
57
58
# File 'lib/mutant/mutation.rb', line 56

def self.success?(test_result)
  self::TEST_PASS_SUCCESS.equal?(test_result.passed)
end

Instance Method Details

#codeString

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.

Mutation identification code

Returns:

API:

  • private



15
16
17
# File 'lib/mutant/mutation.rb', line 15

def code
  sha1[CODE_RANGE]
end

#identificationString

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.

Identification string

Returns:

API:

  • private



31
32
33
# File 'lib/mutant/mutation.rb', line 31

def identification
  "#{self.class::SYMBOL}:#{subject.identification}:#{code}"
end

#insert(kernel) ⇒ Loader::Result

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.

Insert mutated node

Parameters:

Returns:

API:

  • private



65
66
67
68
69
70
71
72
73
# File 'lib/mutant/mutation.rb', line 65

def insert(kernel)
  subject.prepare
  Loader.call(
    binding: TOPLEVEL_BINDING,
    kernel:  kernel,
    source:  monkeypatch,
    subject: subject
  )
end

#monkeypatchString

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.

The monkeypatch to insert the mutation

Returns:

API:

  • private



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

def monkeypatch
  Unparser.unparse(subject.context.root(node))
end

#original_sourceString

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.

Normalized original source

Returns:

API:

  • private



47
48
49
# File 'lib/mutant/mutation.rb', line 47

def original_source
  subject.source
end

#sourceString

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.

Normalized mutation source

Returns:

API:

  • private



23
24
25
# File 'lib/mutant/mutation.rb', line 23

def source
  Unparser.unparse(node)
end