Skip to content

Commit 98a076f

Browse files
authored
chore(pty/ptytest): add sync.Once to close (#10220)
1 parent ac623b4 commit 98a076f

File tree

1 file changed

+18
-12
lines changed

1 file changed

+18
-12
lines changed

pty/ptytest/ptytest.go

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -350,22 +350,28 @@ func (e *outExpecter) fatalf(reason string, format string, args ...interface{})
350350
type PTY struct {
351351
outExpecter
352352
pty.PTY
353+
closeOnce sync.Once
354+
closeErr error
353355
}
354356

355357
func (p *PTY) Close() error {
356358
p.t.Helper()
357-
pErr := p.PTY.Close()
358-
if pErr != nil {
359-
p.logf("PTY: Close failed: %v", pErr)
360-
}
361-
eErr := p.outExpecter.close("PTY close")
362-
if eErr != nil {
363-
p.logf("PTY: close expecter failed: %v", eErr)
364-
}
365-
if pErr != nil {
366-
return pErr
367-
}
368-
return eErr
359+
p.closeOnce.Do(func() {
360+
pErr := p.PTY.Close()
361+
if pErr != nil {
362+
p.logf("PTY: Close failed: %v", pErr)
363+
}
364+
eErr := p.outExpecter.close("PTY close")
365+
if eErr != nil {
366+
p.logf("PTY: close expecter failed: %v", eErr)
367+
}
368+
if pErr != nil {
369+
p.closeErr = pErr
370+
return
371+
}
372+
p.closeErr = eErr
373+
})
374+
return p.closeErr
369375
}
370376

371377
func (p *PTY) Attach(inv *clibase.Invocation) *PTY {

0 commit comments

Comments
 (0)