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.
Mutation testing execution environment rubocop:disable Metrics/ClassLength
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_all_tests ⇒ Integer
private
Amount of all tests the integration provides.
-
#amount_available_tests ⇒ Integer
private
Amount of tests available for mutation testing.
-
#amount_mutations ⇒ Integer
private
Amount of mutations.
-
#amount_selected_tests ⇒ Integer
private
Amount of selected tests.
-
#amount_subjects ⇒ Integer
private
Amount of selected subjects.
-
#cover_index(mutation_index) ⇒ Result::MutationIndex
private
Cover mutation with specific index.
- #emit_mutation_worker_process_start(index:) ⇒ Object private
- #emit_test_worker_process_start(index:) ⇒ Object private
-
#record(name) ⇒ self
private
Record segment.
- #run_test_index(test_index) ⇒ Object private
-
#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
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/mutant/env.rb', line 31 def self.empty(world, config) new( config:, hooks: Hooks.empty, integration: Integration::Null.new( arguments: EMPTY_ARRAY, expression_parser: config.expression_parser, world: ), matchable_scopes: EMPTY_ARRAY, mutations: EMPTY_ARRAY, parser: Parser.new, selector: Selector::Null.new, subjects: EMPTY_ARRAY, world: ) end |
Instance Method Details
#amount_all_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 all tests the integration provides
120 121 122 |
# File 'lib/mutant/env.rb', line 120 def amount_all_tests integration.all_tests.length end |
#amount_available_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 available for mutation testing
128 129 130 |
# File 'lib/mutant/env.rb', line 128 def amount_available_tests integration.available_tests.length end |
#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
112 113 114 |
# File 'lib/mutant/env.rb', line 112 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
144 145 146 |
# File 'lib/mutant/env.rb', line 144 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
136 137 138 |
# File 'lib/mutant/env.rb', line 136 def amount_subjects subjects.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
55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/mutant/env.rb', line 55 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:, runtime: timer.now - start ) end |
#emit_mutation_worker_process_start(index:) ⇒ 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.
73 74 75 |
# File 'lib/mutant/env.rb', line 73 def emit_mutation_worker_process_start(index:) hooks.run(:mutation_worker_process_start, index:) end |
#emit_test_worker_process_start(index:) ⇒ 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.
77 78 79 |
# File 'lib/mutant/env.rb', line 77 def emit_test_worker_process_start(index:) hooks.run(:test_worker_process_start, index:) end |
#record(name) ⇒ 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
164 165 166 |
# File 'lib/mutant/env.rb', line 164 def record(name, &) world.record(name, &) end |
#run_test_index(test_index) ⇒ 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.
69 70 71 |
# File 'lib/mutant/env.rb', line 69 def run_test_index(test_index) integration.call([integration.all_tests.fetch(test_index)]) 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
104 105 106 |
# File 'lib/mutant/env.rb', line 104 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
84 85 86 87 88 |
# File 'lib/mutant/env.rb', line 84 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
152 153 154 155 156 |
# File 'lib/mutant/env.rb', line 152 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
96 97 98 99 |
# File 'lib/mutant/env.rb', line 96 def warn() config.reporter.warn() self end |