The execute_executable function in src/executor.rs currently inherits the parent process's stdio handles (noted by the TODO comment on line 107). This means external command output bypasses the ShellIo abstraction entirely, breaking testability and violating ferrish's I/O design.
Expected behavior: Child process stdout and stderr must be piped through the ShellIo trait so that MockIo captures output in tests and the abstraction is consistent across builtins and executables.
Acceptance criteria:
The
execute_executablefunction insrc/executor.rscurrently inherits the parent process's stdio handles (noted by theTODOcomment on line 107). This means external command output bypasses theShellIoabstraction entirely, breaking testability and violating ferrish's I/O design.Expected behavior: Child process stdout and stderr must be piped through the
ShellIotrait so thatMockIocaptures output in tests and the abstraction is consistent across builtins and executables.Acceptance criteria:
ShellIo::out_writer()ShellIo::err_writer()MockIoTODOcomment inexecutor.rsis resolved