golang.org/x/sys@v0.20.1-0.20240517151509-673e0f94c16d/unix/syscall_netbsd_test.go (about) 1 // Copyright 2018 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package unix_test 6 7 import ( 8 "os" 9 "testing" 10 11 "golang.org/x/sys/unix" 12 ) 13 14 // stringsFromByteSlice converts a sequence of attributes to a []string. 15 // On NetBSD, each entry consists of a single byte containing the length 16 // of the attribute name, followed by the attribute name. 17 // The name is _not_ NULL-terminated. 18 func stringsFromByteSlice(buf []byte) []string { 19 var result []string 20 i := 0 21 for i < len(buf) { 22 next := i + 1 + int(buf[i]) 23 result = append(result, string(buf[i+1:next])) 24 i = next 25 } 26 return result 27 } 28 29 func TestIoctlPtmget(t *testing.T) { 30 fd, err := unix.Open("/dev/ptmx", unix.O_NOCTTY|unix.O_RDWR, 0666) 31 if err != nil { 32 t.Skip("failed to open /dev/ptmx, skipping test") 33 } 34 defer unix.Close(fd) 35 36 ptm, err := unix.IoctlGetPtmget(fd, unix.TIOCPTSNAME) 37 if err != nil { 38 t.Fatalf("IoctlGetPtmget: %v\n", err) 39 } 40 41 t.Logf("sfd = %v, ptsname = %v", ptm.Sfd, unix.ByteSliceToString(ptm.Sn[:])) 42 } 43 44 func TestStatvfs(t *testing.T) { 45 chtmpdir(t) 46 touch(t, "file1") 47 48 var statvfs1, statvfs2 unix.Statvfs_t 49 err := unix.Statvfs("file1", &statvfs1) 50 if err != nil { 51 t.Fatalf("Statvfs: %v", err) 52 } 53 54 f, err := os.Open("file1") 55 if err != nil { 56 t.Fatal(err) 57 } 58 defer f.Close() 59 60 err = unix.Fstatvfs(int(f.Fd()), &statvfs2) 61 if err != nil { 62 t.Fatalf("Fstatvfs: %v", err) 63 } 64 65 if statvfs2.Fsid != statvfs1.Fsid { 66 t.Errorf("Fstatvfs: got fsid %v, expected %v", statvfs2.Fsid, statvfs1.Fsid) 67 } 68 if statvfs2.Owner != statvfs1.Owner { 69 t.Errorf("Fstatvfs: got owner %v, expected %v", statvfs2.Owner, statvfs1.Owner) 70 } 71 if statvfs2.Fstypename != statvfs1.Fstypename { 72 t.Errorf("Fstatvfs: got fstypename %s, expected %s", statvfs2.Fstypename, statvfs1.Fstypename) 73 } 74 }