mirror of
https://github.com/golang/sys.git
synced 2026-01-29 07:02:06 +03:00
Test helper functions mktmpfifo and chtmpdir were written before t.Cleanup was available, which necessitated returning of a cleanup function and the use of defer. Let's use t.Cleanup (available since Go 1.14) and simplify the callers. While at it, - use t.Helper (added in Go 1.9); - simplify some error messages (errors that come from os package usually doesn't need to be wrapped). Change-Id: Id981ae1c85fa2642a76358a31fc18a9af2f78711 Reviewed-on: https://go-review.googlesource.com/c/sys/+/526695 Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Reviewed-by: Ian Lance Taylor <iant@google.com> Auto-Submit: Ian Lance Taylor <iant@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
75 lines
1.8 KiB
Go
75 lines
1.8 KiB
Go
// Copyright 2018 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.
|
|
|
|
package unix_test
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
|
|
"golang.org/x/sys/unix"
|
|
)
|
|
|
|
// stringsFromByteSlice converts a sequence of attributes to a []string.
|
|
// On NetBSD, each entry consists of a single byte containing the length
|
|
// of the attribute name, followed by the attribute name.
|
|
// The name is _not_ NULL-terminated.
|
|
func stringsFromByteSlice(buf []byte) []string {
|
|
var result []string
|
|
i := 0
|
|
for i < len(buf) {
|
|
next := i + 1 + int(buf[i])
|
|
result = append(result, string(buf[i+1:next]))
|
|
i = next
|
|
}
|
|
return result
|
|
}
|
|
|
|
func TestIoctlPtmget(t *testing.T) {
|
|
fd, err := unix.Open("/dev/ptmx", unix.O_NOCTTY|unix.O_RDWR, 0666)
|
|
if err != nil {
|
|
t.Skip("failed to open /dev/ptmx, skipping test")
|
|
}
|
|
defer unix.Close(fd)
|
|
|
|
ptm, err := unix.IoctlGetPtmget(fd, unix.TIOCPTSNAME)
|
|
if err != nil {
|
|
t.Fatalf("IoctlGetPtmget: %v\n", err)
|
|
}
|
|
|
|
t.Logf("sfd = %v, ptsname = %v", ptm.Sfd, unix.ByteSliceToString(ptm.Sn[:]))
|
|
}
|
|
|
|
func TestStatvfs(t *testing.T) {
|
|
chtmpdir(t)
|
|
touch(t, "file1")
|
|
|
|
var statvfs1, statvfs2 unix.Statvfs_t
|
|
err := unix.Statvfs("file1", &statvfs1)
|
|
if err != nil {
|
|
t.Fatalf("Statvfs: %v", err)
|
|
}
|
|
|
|
f, err := os.Open("file1")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer f.Close()
|
|
|
|
err = unix.Fstatvfs(int(f.Fd()), &statvfs2)
|
|
if err != nil {
|
|
t.Fatalf("Fstatvfs: %v", err)
|
|
}
|
|
|
|
if statvfs2.Fsid != statvfs1.Fsid {
|
|
t.Errorf("Fstatvfs: got fsid %v, expected %v", statvfs2.Fsid, statvfs1.Fsid)
|
|
}
|
|
if statvfs2.Owner != statvfs1.Owner {
|
|
t.Errorf("Fstatvfs: got owner %v, expected %v", statvfs2.Owner, statvfs1.Owner)
|
|
}
|
|
if statvfs2.Fstypename != statvfs1.Fstypename {
|
|
t.Errorf("Fstatvfs: got fstypename %s, expected %s", statvfs2.Fstypename, statvfs1.Fstypename)
|
|
}
|
|
}
|