Utils.popen_read: Nonexistent program should fail

Ensure that $CHILD_STATUS.success? is false when the command does not exist.
This commit is contained in:
Shaun Jackman 2017-12-01 15:00:27 -08:00
parent dfe0a1eb89
commit 7adee6d62f
2 changed files with 15 additions and 1 deletions

View File

@ -15,6 +15,12 @@ describe Utils do
).to eq("success")
expect($CHILD_STATUS).to be_a_success
end
it "fails when the command does not exist" do
expect(subject.popen_read("./nonexistent", err: :out))
.to eq("brew: command not found: ./nonexistent\n")
expect($CHILD_STATUS).to be_a_failure
end
end
describe "::popen_write" do

View File

@ -14,7 +14,15 @@ module Utils
yield pipe
else
options[:err] ||= :close unless ENV["HOMEBREW_STDERR"]
exec(*args, options)
begin
exec(*args, options)
rescue Errno::ENOENT
$stderr.puts "brew: command not found: #{args[0]}" unless options[:err] == :close
exit! 127
rescue SystemCallError
$stderr.puts "brew: exec failed: #{args[0]}" unless options[:err] == :close
exit! 1
end
end
end
end