diff --git a/Library/Homebrew/test/utils/fork_spec.rb b/Library/Homebrew/test/utils/fork_spec.rb index a276568714d50..e642fc07d7483 100644 --- a/Library/Homebrew/test/utils/fork_spec.rb +++ b/Library/Homebrew/test/utils/fork_spec.rb @@ -46,6 +46,19 @@ ) end end + + it "preserves an ErrorDuringExecution with a Pathname command" do + error = ErrorDuringExecution.new([Pathname("/usr/bin/false"), "arg"], status: 1) + + IO.pipe do |reader, writer| + described_class.report_forked_child_error(writer, error) + + expect(described_class.rewrite_child_error(JSON.parse(reader.read))).to have_attributes( + class: ErrorDuringExecution, + cmd: ["/usr/bin/false", "arg"], + ) + end + end end describe "#safe_fork" do diff --git a/Library/Homebrew/utils/fork.rb b/Library/Homebrew/utils/fork.rb index 75b8df9903aad..35726104ccbd1 100644 --- a/Library/Homebrew/utils/fork.rb +++ b/Library/Homebrew/utils/fork.rb @@ -93,6 +93,7 @@ def self.report_forked_child_error(error_pipe, error) coder = JSON::Coder.new do |object| case object when Exception then child_error_hash(object) + when Pathname then object.to_s else object end end