mirror of
https://github.com/golang/go.git
synced 2025-11-11 06:01:06 +00:00
os: do not close syscall.Stdin in TestReadStdin
By calling NewConsoleFile on syscall.Stdin, we wind up closing it when the function returns, which causes errors when all the tests are run in a loop. To fix this, we instead create a duplicate handle of stdin. Fixes #43720. Change-Id: Ie6426e6306c7e1e39601794f4ff48bbf2fe67502 Reviewed-on: https://go-review.googlesource.com/c/go/+/284140 Run-TryBot: Jason A. Donenfeld <Jason@zx2c4.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Trust: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
parent
682a1d2176
commit
5a8fbb0d2d
1 changed files with 10 additions and 1 deletions
|
|
@ -692,7 +692,16 @@ func TestReadStdin(t *testing.T) {
|
||||||
poll.ReadConsole = old
|
poll.ReadConsole = old
|
||||||
}()
|
}()
|
||||||
|
|
||||||
testConsole := os.NewConsoleFile(syscall.Stdin, "test")
|
p, err := syscall.GetCurrentProcess()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Unable to get handle to current process: %v", err)
|
||||||
|
}
|
||||||
|
var stdinDuplicate syscall.Handle
|
||||||
|
err = syscall.DuplicateHandle(p, syscall.Handle(syscall.Stdin), p, &stdinDuplicate, 0, false, syscall.DUPLICATE_SAME_ACCESS)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Unable to duplicate stdin: %v", err)
|
||||||
|
}
|
||||||
|
testConsole := os.NewConsoleFile(stdinDuplicate, "test")
|
||||||
|
|
||||||
var tests = []string{
|
var tests = []string{
|
||||||
"abc",
|
"abc",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue