package pty import ( "io" "strings" "testing" ) func TestStartHonorsWorkDir(t *testing.T) { dir := t.TempDir() p, err := Start([]string{"sh", "-lc", "pwd"}, nil, dir, 80, 24) if err != nil { t.Fatalf("start: %v", err) } defer p.Close() var out strings.Builder buf := make([]byte, 256) for { n, err := p.Read(buf) if n > 0 { out.Write(buf[:n]) if strings.Contains(out.String(), dir) { break } } if err != nil { if err == io.EOF || strings.Contains(err.Error(), "input/output error") { break } t.Fatalf("read: %v", err) } } if err := p.Wait(); err != nil { t.Fatalf("wait: %v", err) } if got := out.String(); !strings.Contains(got, dir) { t.Fatalf("pwd output %q does not contain %q", got, dir) } }