integtest/spec/helper/sh.rb (12 lines of code) (raw):
# frozen_string_literal: true
require 'open3'
##
# Defines methods to run commands in example blocks like `it` and `before`.
module Sh
##
# Execute a command and return the result. Use this to execute commands in
# `before` sections to prepare the environment to test.
def sh(cmd)
out, status = Open3.capture2e cmd
raise_status cmd, out, status unless status.success?
out
end
##
# Raise an exception based on a return status.
def raise_status(cmd, out, status)
outmsg = out == '' ? '' : " with stdout/stderr:\n#{out}"
raise "#{status.exitstatus} [#{cmd}] returned [#{status}]#{outmsg}"
end
end