From 91b07943297d10e063dacca8cec39c759d7151d4 Mon Sep 17 00:00:00 2001 From: Markus Reiter Date: Wed, 19 Sep 2018 03:09:07 +0200 Subject: [PATCH] Add `SystemCommand::Result#merged_output`. --- Library/Homebrew/system_command.rb | 5 ++ .../test/system_command_result_spec.rb | 49 ++++++++++++------- 2 files changed, 37 insertions(+), 17 deletions(-) diff --git a/Library/Homebrew/system_command.rb b/Library/Homebrew/system_command.rb index fa0c678b7a..e53dd9bb66 100644 --- a/Library/Homebrew/system_command.rb +++ b/Library/Homebrew/system_command.rb @@ -185,6 +185,11 @@ class SystemCommand .join end + def merged_output + @merged_output ||= @output.map { |_, line| line } + .join + end + def success? @exit_status.zero? end diff --git a/Library/Homebrew/test/system_command_result_spec.rb b/Library/Homebrew/test/system_command_result_spec.rb index 508dad2212..0a24083270 100644 --- a/Library/Homebrew/test/system_command_result_spec.rb +++ b/Library/Homebrew/test/system_command_result_spec.rb @@ -1,32 +1,47 @@ require "system_command" describe SystemCommand::Result do - describe "#to_ary" do - let(:output) { - [ - [:stdout, "output"], - [:stderr, "error"], - ] - } - subject(:result) { - described_class.new([], output, instance_double(Process::Status, exitstatus: 0, success?: true)) - } + let(:output_array) { + [ + [:stdout, "output\n"], + [:stderr, "error\n"], + ] + } + subject(:result) { + described_class.new([], output_array, instance_double(Process::Status, exitstatus: 0, success?: true)) + } + describe "#to_ary" do it "can be destructed like `Open3.capture3`" do out, err, status = result - expect(out).to eq "output" - expect(err).to eq "error" + expect(out).to eq "output\n" + expect(err).to eq "error\n" expect(status).to be_a_success end end - describe "#plist" do - subject { - described_class.new(command, [[:stdout, stdout]], instance_double(Process::Status, exitstatus: 0)).plist - } + describe "#stdout" do + it "returns the standard output" do + expect(result.stdout).to eq "output\n" + end + end - let(:command) { ["true"] } + describe "#stderr" do + it "returns the standard error output" do + expect(result.stderr).to eq "error\n" + end + end + + describe "#merged_output" do + it "returns the combined standard and standard error output" do + expect(result.merged_output).to eq "output\nerror\n" + end + end + + describe "#plist" do + subject { result.plist } + let(:output_array) { [[:stdout, stdout]] } let(:garbage) { <<~EOS Hello there! I am in no way XML am I?!?!