37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
# File 'lib/beaker/local_connection.rb', line 37
def execute command, _options = {}, stdout_callback = nil, _stderr_callback = stdout_callback
result = Result.new(@hostname, command)
envs = {}
if File.readable?(@ssh_env_file)
File.foreach(@ssh_env_file) do |line|
key, value = line.split('=')
envs[key] = value
end
end
begin
clean_env = ENV.reject { |k| /^BUNDLE|^RUBY|^GEM/.match?(k) }
with_env(clean_env) do
std_out, std_err, status = Open3.capture3(envs, command)
result.stdout << std_out
result.stderr << std_err
result.exit_code = status.exitstatus
@logger.info(result.stdout) unless result.stdout.empty?
@logger.info(result.stderr) unless result.stderr.empty?
end
rescue => e
result.stderr << e.inspect
@logger.info(result.stderr)
result.exit_code = 1
end
result.finalize!
@logger.last_result = result
result
end
|