Test-suite maintenance release. No changes to the shell itself — these binaries behave identically to v1.3.59's predecessor, v1.3.58.
Fixed
-
Fixed the
internal/evaltest helpers silently losing output when a pipeline stage ran an external command.The helpers gave the same
bytes.Bufferto bothShell.StdoutandShell.Stderr. Go'sexecdrains an external child's stderr withio.Copy, which prefers anio.ReaderFrom;bytes.Buffer.ReadFromrecords the buffer length on entry, blocks until the child's stderr reaches EOF, then truncates back to that length plus the bytes it read. A child writing no stderr reads zero, so the final re-slice discarded whatever a concurrent stage had appended.This made
TestReadHeredocPipelinefail against correct shell behaviour:cat << EOF | while read line; do echo "$line"; donereturned an empty string undergo test, whileposhitself has always run it correctly. The shell binary passes real*os.Filestreams, whichexecinherits directly and never copies, so no released build was ever affected.