Class: Mutant::Env Private

Inherits:
Object
  • Object
show all
Includes:
Adamantium::Flat
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:



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

def self.empty(world, config)
  new(
    config:           config,
    integration:      Integration::Null.new(
      expression_parser: config.expression_parser,
      timer:             world.timer
    ),
    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)


94
95
96
# File 'lib/mutant/env.rb', line 94

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)


118
119
120
# File 'lib/mutant/env.rb', line 118

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)


110
111
112
# File 'lib/mutant/env.rb', line 110

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)


102
103
104
# File 'lib/mutant/env.rb', line 102

def amount_total_tests
  integration.all_tests.length
end

#kill(mutation) ⇒ Result::Mutation

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.

Kill mutation

Parameters:

Returns:



51
52
53
54
55
56
57
58
59
60
61
# File 'lib/mutant/env.rb', line 51

def kill(mutation)
  start = timer.now

  tests = selections.fetch(mutation.subject)

  Result::Mutation.new(
    isolation_result: run_mutation_tests(mutation, tests),
    mutation:         mutation,
    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:



86
87
88
# File 'lib/mutant/env.rb', line 86

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



66
67
68
69
70
# File 'lib/mutant/env.rb', line 66

def selections
  subjects.map do |subject|
    [subject, selector.call(subject)]
  end.to_h
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)


126
127
128
129
130
# File 'lib/mutant/env.rb', line 126

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)


78
79
80
81
# File 'lib/mutant/env.rb', line 78

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