diff options
| author | Brad Fitzpatrick <bradfitz@golang.org> | 2016-12-06 18:22:42 +0000 |
|---|---|---|
| committer | Brad Fitzpatrick <bradfitz@golang.org> | 2016-12-07 01:12:22 +0000 |
| commit | 0be4ef3ea6a915e3b2ab0cac35209566a1ae3068 (patch) | |
| tree | c9dfe1f4eeb2ec3607e887931f78dcf091273c9d /src/cmd/go/testdata | |
| parent | 94a4485f702c9681a12b25b6db2ef1be68cffc01 (diff) | |
| download | go-git-0be4ef3ea6a915e3b2ab0cac35209566a1ae3068.tar.gz | |
cmd/go: ensure streaming test's stdout, stderr are same as cmd/go's
Fixes #18153
Change-Id: Ie8a32dd6fe306f00e51cde77dd4ea353f7109940
Reviewed-on: https://go-review.googlesource.com/34010
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/cmd/go/testdata')
| -rw-r--r-- | src/cmd/go/testdata/testterminal18153/terminal_test.go | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/cmd/go/testdata/testterminal18153/terminal_test.go b/src/cmd/go/testdata/testterminal18153/terminal_test.go new file mode 100644 index 0000000000..d662e55ee5 --- /dev/null +++ b/src/cmd/go/testdata/testterminal18153/terminal_test.go @@ -0,0 +1,39 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux + +// This test is run by src/cmd/dist/test.go (cmd_go_test_terminal), +// and not by cmd/go's tests. This is because this test requires that +// that it be called with its stdout and stderr being a terminal. +// dist doesn't run `cmd/go test` against this test directory if +// dist's stdout/stderr aren't terminals. +// +// See issue 18153. + +package p + +import ( + "syscall" + "testing" + "unsafe" +) + +const ioctlReadTermios = syscall.TCGETS + +// isTerminal reports whether fd is a terminal. +func isTerminal(fd uintptr) bool { + var termios syscall.Termios + _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, fd, ioctlReadTermios, uintptr(unsafe.Pointer(&termios)), 0, 0, 0) + return err == 0 +} + +func TestIsTerminal(t *testing.T) { + if !isTerminal(1) { + t.Errorf("stdout is not a terminal") + } + if !isTerminal(2) { + t.Errorf("stderr is not a terminal") + } +} |
