aboutsummaryrefslogtreecommitdiff
path: root/src/os
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2021-01-18 13:31:28 +0100
committerJason A. Donenfeld <Jason@zx2c4.com>2021-01-18 17:21:53 +0000
commit5a8fbb0d2d339fa87a02c0794f5a92c1ce121631 (patch)
treea27816d362f0db6cdb6cb52d6b1b1455b61e93dc /src/os
parent682a1d2176b02337460aeede0ff9e49429525195 (diff)
downloadgo-5a8fbb0d2d339fa87a02c0794f5a92c1ce121631.tar.gz
go-5a8fbb0d2d339fa87a02c0794f5a92c1ce121631.zip
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>
Diffstat (limited to 'src/os')
-rw-r--r--src/os/os_windows_test.go11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/os/os_windows_test.go b/src/os/os_windows_test.go
index 8d1d1f61b2..b0929b4f30 100644
--- a/src/os/os_windows_test.go
+++ b/src/os/os_windows_test.go
@@ -692,7 +692,16 @@ func TestReadStdin(t *testing.T) {
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{
"abc",