Class: Evilution::Result::MutationResult
- Inherits:
-
Object
- Object
- Evilution::Result::MutationResult
- Defined in:
- lib/evilution/result/mutation_result.rb
Constant Summary collapse
- STATUSES =
%i[killed survived timeout error neutral equivalent unresolved unparseable].freeze
Instance Attribute Summary collapse
-
#duration ⇒ Object
readonly
Returns the value of attribute duration.
-
#error ⇒ Object
readonly
Returns the value of attribute error.
-
#killing_test ⇒ Object
readonly
Returns the value of attribute killing_test.
-
#memory ⇒ Object
readonly
Returns the value of attribute memory.
-
#mutation ⇒ Object
readonly
Returns the value of attribute mutation.
-
#status ⇒ Object
readonly
Returns the value of attribute status.
-
#test_command ⇒ Object
readonly
Returns the value of attribute test_command.
Instance Method Summary collapse
-
#child_rss_kb ⇒ Object
Positive type checks, not nil checks.
- #equivalent? ⇒ Boolean
- #error? ⇒ Boolean
- #error_backtrace ⇒ Object
- #error_class ⇒ Object
- #error_message ⇒ Object
-
#initialize(mutation:, status:, duration: 0.0, killing_test: nil, test_command: nil, memory: nil, error: nil) ⇒ MutationResult
constructor
A new instance of MutationResult.
- #killed? ⇒ Boolean
- #memory_delta_kb ⇒ Object
- #neutral? ⇒ Boolean
- #parent_rss_kb ⇒ Object
- #survived? ⇒ Boolean
- #timeout? ⇒ Boolean
- #unparseable? ⇒ Boolean
- #unresolved? ⇒ Boolean
Constructor Details
#initialize(mutation:, status:, duration: 0.0, killing_test: nil, test_command: nil, memory: nil, error: nil) ⇒ MutationResult
Returns a new instance of MutationResult.
12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/evilution/result/mutation_result.rb', line 12 def initialize(mutation:, status:, duration: 0.0, killing_test: nil, test_command: nil, memory: nil, error: nil) raise ArgumentError, "invalid status: #{status}" unless STATUSES.include?(status) @mutation = mutation @status = status @duration = duration @killing_test = killing_test @test_command = test_command @memory = memory @error = error freeze end |
Instance Attribute Details
#duration ⇒ Object (readonly)
Returns the value of attribute duration.
10 11 12 |
# File 'lib/evilution/result/mutation_result.rb', line 10 def duration @duration end |
#error ⇒ Object (readonly)
Returns the value of attribute error.
10 11 12 |
# File 'lib/evilution/result/mutation_result.rb', line 10 def error @error end |
#killing_test ⇒ Object (readonly)
Returns the value of attribute killing_test.
10 11 12 |
# File 'lib/evilution/result/mutation_result.rb', line 10 def killing_test @killing_test end |
#memory ⇒ Object (readonly)
Returns the value of attribute memory.
10 11 12 |
# File 'lib/evilution/result/mutation_result.rb', line 10 def memory @memory end |
#mutation ⇒ Object (readonly)
Returns the value of attribute mutation.
10 11 12 |
# File 'lib/evilution/result/mutation_result.rb', line 10 def mutation @mutation end |
#status ⇒ Object (readonly)
Returns the value of attribute status.
10 11 12 |
# File 'lib/evilution/result/mutation_result.rb', line 10 def status @status end |
#test_command ⇒ Object (readonly)
Returns the value of attribute test_command.
10 11 12 |
# File 'lib/evilution/result/mutation_result.rb', line 10 def test_command @test_command end |
Instance Method Details
#child_rss_kb ⇒ Object
Positive type checks, not nil checks. EV-s5br / GH #1174: the nil_replacement mutator can swap a nil default into ‘false` (or some other non-typed value), and `nil?` then returns false, sending a missing method to the wrong receiver and crashing the parent worker. Asking the field explicitly whether it is the expected struct keeps the parent process alive and lets the mutation count as a measured (errored) result.
32 33 34 |
# File 'lib/evilution/result/mutation_result.rb', line 32 def child_rss_kb @memory.is_a?(Evilution::Result::MemoryStats) ? @memory.child_rss_kb : nil end |
#equivalent? ⇒ Boolean
76 77 78 |
# File 'lib/evilution/result/mutation_result.rb', line 76 def equivalent? status == :equivalent end |
#error? ⇒ Boolean
68 69 70 |
# File 'lib/evilution/result/mutation_result.rb', line 68 def error? status == :error end |
#error_backtrace ⇒ Object
52 53 54 |
# File 'lib/evilution/result/mutation_result.rb', line 52 def error_backtrace @error.is_a?(Evilution::Result::ErrorInfo) ? @error.backtrace : nil end |
#error_class ⇒ Object
48 49 50 |
# File 'lib/evilution/result/mutation_result.rb', line 48 def error_class @error.is_a?(Evilution::Result::ErrorInfo) ? @error.klass : nil end |
#error_message ⇒ Object
44 45 46 |
# File 'lib/evilution/result/mutation_result.rb', line 44 def @error.is_a?(Evilution::Result::ErrorInfo) ? @error. : nil end |
#killed? ⇒ Boolean
56 57 58 |
# File 'lib/evilution/result/mutation_result.rb', line 56 def killed? status == :killed end |
#memory_delta_kb ⇒ Object
36 37 38 |
# File 'lib/evilution/result/mutation_result.rb', line 36 def memory_delta_kb @memory.is_a?(Evilution::Result::MemoryStats) ? @memory.memory_delta_kb : nil end |
#neutral? ⇒ Boolean
72 73 74 |
# File 'lib/evilution/result/mutation_result.rb', line 72 def neutral? status == :neutral end |
#parent_rss_kb ⇒ Object
40 41 42 |
# File 'lib/evilution/result/mutation_result.rb', line 40 def parent_rss_kb @memory.is_a?(Evilution::Result::MemoryStats) ? @memory.parent_rss_kb : nil end |
#survived? ⇒ Boolean
60 61 62 |
# File 'lib/evilution/result/mutation_result.rb', line 60 def survived? status == :survived end |
#timeout? ⇒ Boolean
64 65 66 |
# File 'lib/evilution/result/mutation_result.rb', line 64 def timeout? status == :timeout end |
#unparseable? ⇒ Boolean
84 85 86 |
# File 'lib/evilution/result/mutation_result.rb', line 84 def unparseable? status == :unparseable end |
#unresolved? ⇒ Boolean
80 81 82 |
# File 'lib/evilution/result/mutation_result.rb', line 80 def unresolved? status == :unresolved end |