Sha256: 32158d7cc6684384df512bd1e1b1c95d3cb939b89b0f31a22d0490a4a2273af0
Contents?: true
Size: 1.77 KB
Versions: 2
Compression:
Stored size: 1.77 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 if string.respond_to?( :encode ) # We're running in >= 1.9 and we'll need to convert # Remove invalide and undefined UTF-8 character encodings return string.encode('UTF-8', 'binary', :invalid => :replace, :undef => :replace, :replace => '') else # We're running in < 1.9 and Ruby doesn't care return string end end def log(logger) logger.debug "Exited: #{exit_code}" unless exit_code == 0 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 end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
beaker-1.14.1 | lib/beaker/result.rb |
beaker-1.14.0 | lib/beaker/result.rb |