Move assert_success to SystemCommand::Result.

This commit is contained in:
Markus Reiter 2019-10-04 09:17:26 +02:00
parent e351e6b31c
commit 7f39d333bc
4 changed files with 15 additions and 15 deletions

View File

@ -49,7 +49,8 @@ class SystemCommand
end
end
assert_success if must_succeed?
result = Result.new(command, @output, @status, secrets: @secrets)
result.assert_success! if must_succeed?
result
end
@ -105,12 +106,6 @@ class SystemCommand
["/usr/bin/sudo", *askpass_flags, "-E", "--"]
end
def assert_success
return if @status.success?
raise ErrorDuringExecution.new(command, status: @status, output: @output, secrets: @secrets)
end
def expanded_args
@expanded_args ||= args.map do |arg|
if arg.respond_to?(:to_path)
@ -166,18 +161,21 @@ class SystemCommand
sources.each(&:close_read)
end
def result
Result.new(command, @output, @status)
end
class Result
attr_accessor :command, :status, :exit_status
def initialize(command, output, status)
def initialize(command, output, status, secrets:)
@command = command
@output = output
@status = status
@exit_status = status.exitstatus
@secrets = secrets
end
def assert_success!
return if @status.success?
raise ErrorDuringExecution.new(command, status: @status, output: @output, secrets: @secrets)
end
def stdout

View File

@ -152,7 +152,8 @@ describe Cask::Pkg, :cask do
"/usr/sbin/pkgutil",
args: ["--pkg-info-plist", pkg_id],
).and_return(
SystemCommand::Result.new(nil, [[:stdout, pkg_info_plist]], instance_double(Process::Status, exitstatus: 0)),
SystemCommand::Result.new(nil, [[:stdout, pkg_info_plist]], instance_double(Process::Status, exitstatus: 0),
secrets: []),
)
info = pkg.info

View File

@ -55,7 +55,7 @@ class FakeSystemCommand
if response.respond_to?(:call)
response.call(command_string, options)
else
SystemCommand::Result.new(command, [[:stdout, response]], OpenStruct.new(exitstatus: 0))
SystemCommand::Result.new(command, [[:stdout, response]], OpenStruct.new(exitstatus: 0), secrets: [])
end
end

View File

@ -4,7 +4,8 @@ require "system_command"
describe SystemCommand::Result do
subject(:result) {
described_class.new([], output_array, instance_double(Process::Status, exitstatus: 0, success?: true))
described_class.new([], output_array, instance_double(Process::Status, exitstatus: 0, success?: true),
secrets: [])
}
let(:output_array) {