diff --git a/spec/std/process_spec.cr b/spec/std/process_spec.cr index 1de9a0ff57c7..4c5490f352d2 100644 --- a/spec/std/process_spec.cr +++ b/spec/std/process_spec.cr @@ -17,8 +17,8 @@ describe Process do it "raises if command could not be executed" do # FIXME: Oddly doubled error message - expect_raises_errno(Errno::ENOENT, "execvp: No such file or directory: No such file or directory") do - Process.new("foobarbaz") + expect_raises_errno(Errno::ENOENT, %(execvp (foobarbaz "foo"): No such file or directory: No such file or directory)) do + Process.new("foobarbaz", ["foo"]) end end diff --git a/src/process.cr b/src/process.cr index b537817752d3..36896f294498 100644 --- a/src/process.cr +++ b/src/process.cr @@ -457,7 +457,17 @@ class Process argv << Pointer(UInt8).null LibC.execvp(command, argv) - raise Errno.new("execvp") + + error_message = String.build do |io| + io << "execvp (" + command.inspect_unquoted(io) + args.try &.each do |arg| + io << ' ' + arg.inspect(io) + end + io << ")" + end + raise Errno.new(error_message) end private def self.reopen_io(src_io : IO::FileDescriptor, dst_io : IO::FileDescriptor)