codeclimate/codeclimate

View on GitHub
lib/cc/analyzer/container/result.rb

Summary

Maintainability
A
0 mins
Test Coverage
B
87%
module CC
  module Analyzer
    class Container
      class Result
        attr_reader \
          :container_name,
          :duration,
          :exit_status,
          :output_byte_count,
          :stderr,
          :stdout

        def initialize(
          container_name: "",
          duration: 0,
          exit_status: 0,
          maximum_output_exceeded: false,
          output_byte_count: 0,
          skipped: false,
          stderr: "",
          stdout: "",
          timed_out: false
        )
          @container_name = container_name
          @duration = duration
          @exit_status = exit_status
          @maximum_output_exceeded = maximum_output_exceeded
          @output_byte_count = output_byte_count
          @skipped = skipped
          @stderr = stderr
          @stdout = stdout
          @timed_out = timed_out
        end

        def self.skipped(exception)
          new(
            exit_status: 0,
            skipped: true,
            stderr: exception.message,
          )
        end

        def merge_from_exception(exception)
          self.exit_status = 99
          self.stderr = exception.message
          self
        end

        def timed_out?
          @timed_out
        end

        def maximum_output_exceeded?
          @maximum_output_exceeded
        end

        def errored?
          timed_out? ||
            maximum_output_exceeded? ||
            exit_status.nil? ||
            exit_status.nonzero?
        end

        def skipped?
          @skipped
        end

        private

        attr_writer :exit_status, :stderr
      end
    end
  end
end