Sha256: e1046ddd6bea5bd14cf119ae81f0ef374681cf7da61f41ce71f3df72c935ed9b

Contents?: true

Size: 1.75 KB

Versions: 60

Compression:

Stored size: 1.75 KB

Contents

module Beaker
  class Result
    attr_accessor :host, :cmd, :exit_code, :stdout, :stderr, :output,
                  :raw_stdout, :raw_stderr, :raw_output
    def initialize(host, cmd)
      @host       = host
      @cmd        = cmd
      @stdout     = ''
      @stderr     = ''
      @output     = ''
      @exit_code  = nil
    end

    # Ruby assumes chunked data (like something it receives from Net::SSH)
    # to be binary (ASCII-8BIT). We need to gather all chunked data and then
    # re-encode it as the default encoding it assumes for external text
    # (ie our test files and the strings they're trying to match Net::SSH's
    # output from)
    # This is also the lowest overhead place to normalize line endings, IIRC
    def finalize!
      @raw_stdout = @stdout
      @stdout     = normalize_line_endings( convert( @stdout ) )
      @raw_stderr = @stderr
      @stderr     = normalize_line_endings( convert( @stderr ) )
      @raw_output = @output
      @output     = normalize_line_endings( convert( @output ) )
    end

    def normalize_line_endings string
      return string.gsub(/\r\n?/, "\n")
    end

    def convert string
      # Remove invalid and undefined UTF-8 character encodings
      string.to_s.force_encoding('UTF-8')
      string.to_s.chars.select{|i| i.valid_encoding?}.join
    end

    def log(logger)
      logger.debug "Exited: #{exit_code}" unless exit_code == 0 or !exit_code
    end

    def formatted_output(limit=10)
      @output.split("\n").last(limit).collect {|x| "\t" + x}.join("\n")
    end

    def exit_code_in?(range)
      range.include?(@exit_code)
    end

    def success?
      exit_code == 0
    end
  end

  class NullResult < Result
    def initialize(host, cmd)
      super(host, cmd)
      @exit_code = 0
    end
  end
end

Version data entries

60 entries across 60 versions & 1 rubygems

Version Path
beaker-4.42.0 lib/beaker/result.rb
beaker-4.41.2 lib/beaker/result.rb
beaker-4.41.1 lib/beaker/result.rb
beaker-4.41.0 lib/beaker/result.rb
beaker-4.40.2 lib/beaker/result.rb
beaker-4.40.1 lib/beaker/result.rb
beaker-4.40.0 lib/beaker/result.rb
beaker-4.39.0 lib/beaker/result.rb
beaker-4.38.1 lib/beaker/result.rb
beaker-4.38.0 lib/beaker/result.rb
beaker-4.37.2 lib/beaker/result.rb
beaker-4.37.1 lib/beaker/result.rb
beaker-4.37.0 lib/beaker/result.rb
beaker-4.36.1 lib/beaker/result.rb
beaker-4.36.0 lib/beaker/result.rb
beaker-4.35.0 lib/beaker/result.rb
beaker-4.34.0 lib/beaker/result.rb
beaker-4.33.0 lib/beaker/result.rb
beaker-4.32.0 lib/beaker/result.rb
beaker-4.31.0 lib/beaker/result.rb