Class: Mutant::Env Private

Inherits:
Object
  • Object
show all
Includes:
Unparser::Adamantium
Defined in:
lib/mutant/env.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.

Abstract base class for mutant environments

Constant Summary collapse

SEMANTICS_MESSAGE =

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.

"Fix your lib to follow normal ruby semantics!\n" \
'{Module,Class}#name should return resolvable constant name as String or nil'

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.empty(world, config) ⇒ Env

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.

Construct minimal empty env

rubocop:disable Metrics/MethodLength

Parameters:

Returns:



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/mutant/env.rb', line 30

def self.empty(world, config)
  new(
    config:           config,
    hooks:            Hooks.empty,
    integration:      Integration::Null.new(
      expression_parser: config.expression_parser,
      world:             world
    ),
    matchable_scopes: EMPTY_ARRAY,
    mutations:        EMPTY_ARRAY,
    parser:           Parser.new,
    selector:         Selector::Null.new,
    subjects:         EMPTY_ARRAY,
    world:            world
  )
end

Instance Method Details

#amount_mutationsInteger

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.

Amount of mutations

Returns:

  • (Integer)


98
99
100
# File 'lib/mutant/env.rb', line 98

def amount_mutations
  mutations.length
end

#amount_selected_testsInteger

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.

Amount of selected tests

Returns:

  • (Integer)


122
123
124
# File 'lib/mutant/env.rb', line 122

def amount_selected_tests
  selected_tests.length
end

#amount_subjectsInteger

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.

Amount of selected subjects

Returns:

  • (Integer)


114
115
116
# File 'lib/mutant/env.rb', line 114

def amount_subjects
  subjects.length
end

#amount_total_testsInteger

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.

Amount of tests reachable by integration

Returns:

  • (Integer)


106
107
108
# File 'lib/mutant/env.rb', line 106

def amount_total_tests
  integration.all_tests.length
end

#cover_index(mutation_index) ⇒ Result::MutationIndex

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.

Cover mutation with specific index

Parameters:

  • mutation_index (Integer)

Returns:



53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/mutant/env.rb', line 53

def cover_index(mutation_index)
  mutation = mutations.fetch(mutation_index)

  start = timer.now

  tests = selections.fetch(mutation.subject)

  Result::MutationIndex.new(
    isolation_result: run_mutation_tests(mutation, tests),
    mutation_index:   mutation_index,
    runtime:          timer.now - start
  )
end

#selected_testsSet<Test>

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.

Selected tests

Returns:



90
91
92
# File 'lib/mutant/env.rb', line 90

def selected_tests
  selections.values.flatten.to_set
end

#selectionsObject

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 test selections



70
71
72
73
74
# File 'lib/mutant/env.rb', line 70

def selections
  subjects.to_h do |subject|
    [subject, selector.call(subject)]
  end
end

#test_subject_ratioRational

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.

Ratio between selected tests and subjects

Returns:

  • (Rational)


130
131
132
133
134
# File 'lib/mutant/env.rb', line 130

def test_subject_ratio
  return Rational(0) if amount_subjects.zero?

  Rational(amount_selected_tests, amount_subjects)
end

#warn(message) ⇒ 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.

Emit warning

Parameters:

  • warning (String)

Returns:

  • (self)


82
83
84
85
# File 'lib/mutant/env.rb', line 82

def warn(message)
  config.reporter.warn(message)
  self
end