Class: Henitai::ScenarioExecutionResult

Inherits:
Object
  • Object
show all
Defined in:
lib/henitai/scenario_execution_result.rb

Overview

Captures the result of one baseline or mutant test run.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(status:, stdout:, stderr:, log_path:, exit_status: nil) ⇒ ScenarioExecutionResult

Returns a new instance of ScenarioExecutionResult.



8
9
10
11
12
13
14
# File 'lib/henitai/scenario_execution_result.rb', line 8

def initialize(status:, stdout:, stderr:, log_path:, exit_status: nil)
  @status = status
  @stdout = stdout.to_s
  @stderr = stderr.to_s
  @log_path = log_path
  @exit_status = exit_status
end

Instance Attribute Details

#exit_statusObject (readonly)

Returns the value of attribute exit_status.



6
7
8
# File 'lib/henitai/scenario_execution_result.rb', line 6

def exit_status
  @exit_status
end

#log_pathObject (readonly)

Returns the value of attribute log_path.



6
7
8
# File 'lib/henitai/scenario_execution_result.rb', line 6

def log_path
  @log_path
end

#statusObject (readonly)

Returns the value of attribute status.



6
7
8
# File 'lib/henitai/scenario_execution_result.rb', line 6

def status
  @status
end

#stderrObject (readonly)

Returns the value of attribute stderr.



6
7
8
# File 'lib/henitai/scenario_execution_result.rb', line 6

def stderr
  @stderr
end

#stdoutObject (readonly)

Returns the value of attribute stdout.



6
7
8
# File 'lib/henitai/scenario_execution_result.rb', line 6

def stdout
  @stdout
end

Instance Method Details

#==(other) ⇒ Object



28
29
30
31
32
33
# File 'lib/henitai/scenario_execution_result.rb', line 28

def ==(other)
  return status == other.status if other.respond_to?(:status)
  return status == other if other.is_a?(Symbol)

  super
end

#combined_outputObject



43
44
45
46
47
48
# File 'lib/henitai/scenario_execution_result.rb', line 43

def combined_output
  [
    (stdout.empty? ? nil : stream_section("stdout", stdout)),
    (stderr.empty? ? nil : stream_section("stderr", stderr))
  ].compact.join("\n")
end

#failure_tail(all_logs: false, lines: 12) ⇒ Object



58
59
60
61
62
63
# File 'lib/henitai/scenario_execution_result.rb', line 58

def failure_tail(all_logs: false, lines: 12)
  return combined_output if all_logs
  return "" unless should_show_logs?(all_logs:)

  tail(lines)
end

#killed?Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/henitai/scenario_execution_result.rb', line 20

def killed?
  status == :killed
end

#log_textObject



35
36
37
38
39
40
41
# File 'lib/henitai/scenario_execution_result.rb', line 35

def log_text
  @log_text ||= if File.exist?(log_path)
                  File.read(log_path)
                else
                  combined_output
                end
end

#should_show_logs?(all_logs: false) ⇒ Boolean

Returns:

  • (Boolean)


54
55
56
# File 'lib/henitai/scenario_execution_result.rb', line 54

def should_show_logs?(all_logs: false)
  all_logs || timeout?
end

#survived?Boolean

Returns:

  • (Boolean)


16
17
18
# File 'lib/henitai/scenario_execution_result.rb', line 16

def survived?
  status == :survived
end

#tail(lines = 12) ⇒ Object



50
51
52
# File 'lib/henitai/scenario_execution_result.rb', line 50

def tail(lines = 12)
  log_text.lines.last(lines).join
end

#timeout?Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/henitai/scenario_execution_result.rb', line 24

def timeout?
  status == :timeout
end