Class: Mutant::Env Private
- Inherits:
-
Object
- Object
- Mutant::Env
- 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
-
.empty(world, config) ⇒ Env
private
Construct minimal empty env.
Instance Method Summary collapse
-
#amount_mutations ⇒ Integer
private
Amount of mutations.
-
#amount_selected_tests ⇒ Integer
private
Amount of selected tests.
-
#amount_subjects ⇒ Integer
private
Amount of selected subjects.
-
#amount_total_tests ⇒ Integer
private
Amount of tests reachable by integration.
-
#cover_index(mutation_index) ⇒ Result::MutationIndex
private
Cover mutation with specific index.
-
#record(name, &block) ⇒ self
private
Record segment.
-
#selected_tests ⇒ Set<Test>
private
Selected tests.
-
#selections ⇒ Object
private
The test selections.
-
#test_subject_ratio ⇒ Rational
private
Ratio between selected tests and subjects.
-
#warn(message) ⇒ self
private
Emit warning.
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
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_mutations ⇒ Integer
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
98 99 100 |
# File 'lib/mutant/env.rb', line 98 def amount_mutations mutations.length end |
#amount_selected_tests ⇒ Integer
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
122 123 124 |
# File 'lib/mutant/env.rb', line 122 def amount_selected_tests selected_tests.length end |
#amount_subjects ⇒ Integer
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
114 115 116 |
# File 'lib/mutant/env.rb', line 114 def amount_subjects subjects.length end |
#amount_total_tests ⇒ Integer
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
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
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 |
#record(name, &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.
Record segment
142 143 144 |
# File 'lib/mutant/env.rb', line 142 def record(name, &block) world.record(name, &block) end |
#selected_tests ⇒ Set<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
90 91 92 |
# File 'lib/mutant/env.rb', line 90 def selected_tests selections.values.flatten.to_set end |
#selections ⇒ 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.
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_ratio ⇒ Rational
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
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
82 83 84 85 |
# File 'lib/mutant/env.rb', line 82 def warn() config.reporter.warn() self end |