class CC::Analyzer::RaisingContainerListener

Attributes

failure_ex[R]
maximum_output_ex[R]
timeout_ex[R]

Public Class Methods

new(failure_ex, timeout_ex = nil, maximum_output_ex = nil) click to toggle source
# File lib/cc/analyzer/raising_container_listener.rb, line 4
def initialize(failure_ex, timeout_ex = nil, maximum_output_ex = nil)
  @failure_ex = failure_ex
  @timeout_ex = timeout_ex || failure_ex
  @maximum_output_ex = maximum_output_ex || failure_ex
end

Public Instance Methods

finished(engine, _details, result) click to toggle source
# File lib/cc/analyzer/raising_container_listener.rb, line 10
def finished(engine, _details, result)
  if result.timed_out?
    message = "engine #{engine.name} ran for #{result.duration / 1000}"
    message << " seconds and was killed"
    raise timeout_ex.new(message, engine.name)
  elsif result.maximum_output_exceeded?
    message = "engine #{engine.name} produced too much output"
    message << " (#{result.output_byte_count} bytes)"
    raise maximum_output_ex.new(message, engine.name)
  elsif result.exit_status.nonzero?
    message = "engine #{engine.name} failed"
    message << " with status #{result.exit_status}"
    message << " and stderr \n#{result.stderr}"
    raise failure_ex.new(message, engine.name)
  end
end