From 99c3d69c2c27d4f16bc6cb2698ad877a3ba5fe75 Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Fri, 28 Jan 2022 16:01:37 +0100 Subject: [PATCH] unix: enable sysctl tests on netbsd Except for Getfsstat, all functions tested in syscall_bsd_test.go also exist on netbsd. Move TestGetfsstat to a separate file so the other tests can run on netbsd. Change-Id: I63973e9c15a7f64c52b4edff034c03650658c4f6 Reviewed-on: https://go-review.googlesource.com/c/sys/+/381714 Trust: Tobias Klauser Run-TryBot: Tobias Klauser TryBot-Result: Gopher Robot Reviewed-by: Ian Lance Taylor --- unix/getfsstat_test.go | 47 ++++++++++++++++++++++++++++++++++++++++ unix/syscall_bsd_test.go | 42 +++++------------------------------ 2 files changed, 52 insertions(+), 37 deletions(-) create mode 100644 unix/getfsstat_test.go diff --git a/unix/getfsstat_test.go b/unix/getfsstat_test.go new file mode 100644 index 00000000..3b5f9d15 --- /dev/null +++ b/unix/getfsstat_test.go @@ -0,0 +1,47 @@ +// Copyright 2022 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. + +//go:build darwin || dragonfly || freebsd || openbsd +// +build darwin dragonfly freebsd openbsd + +package unix_test + +import ( + "os/exec" + "testing" + + "golang.org/x/sys/unix" +) + +func TestGetfsstat(t *testing.T) { + n, err := unix.Getfsstat(nil, unix.MNT_NOWAIT) + if err != nil { + t.Fatal(err) + } + + data := make([]unix.Statfs_t, n) + n2, err := unix.Getfsstat(data, unix.MNT_NOWAIT) + if err != nil { + t.Fatal(err) + } + if n != n2 { + t.Errorf("Getfsstat(nil) = %d, but subsequent Getfsstat(slice) = %d", n, n2) + } + for i, stat := range data { + if stat == (unix.Statfs_t{}) { + t.Errorf("index %v is an empty Statfs_t struct", i) + } + } + if t.Failed() { + for i, stat := range data[:n2] { + t.Logf("data[%v] = %+v", i, stat) + } + mount, err := exec.Command("mount").CombinedOutput() + if err != nil { + t.Logf("mount: %v\n%s", err, mount) + } else { + t.Logf("mount: %s", mount) + } + } +} diff --git a/unix/syscall_bsd_test.go b/unix/syscall_bsd_test.go index 8946647f..9646c567 100644 --- a/unix/syscall_bsd_test.go +++ b/unix/syscall_bsd_test.go @@ -2,13 +2,12 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build darwin || dragonfly || freebsd || openbsd -// +build darwin dragonfly freebsd openbsd +//go:build darwin || dragonfly || freebsd || netbsd || openbsd +// +build darwin dragonfly freebsd netbsd openbsd package unix_test import ( - "os/exec" "runtime" "testing" "time" @@ -16,41 +15,10 @@ import ( "golang.org/x/sys/unix" ) -func TestGetfsstat(t *testing.T) { - n, err := unix.Getfsstat(nil, unix.MNT_NOWAIT) - if err != nil { - t.Fatal(err) - } - - data := make([]unix.Statfs_t, n) - n2, err := unix.Getfsstat(data, unix.MNT_NOWAIT) - if err != nil { - t.Fatal(err) - } - if n != n2 { - t.Errorf("Getfsstat(nil) = %d, but subsequent Getfsstat(slice) = %d", n, n2) - } - for i, stat := range data { - if stat == (unix.Statfs_t{}) { - t.Errorf("index %v is an empty Statfs_t struct", i) - } - } - if t.Failed() { - for i, stat := range data[:n2] { - t.Logf("data[%v] = %+v", i, stat) - } - mount, err := exec.Command("mount").CombinedOutput() - if err != nil { - t.Logf("mount: %v\n%s", err, mount) - } else { - t.Logf("mount: %s", mount) - } - } -} - func TestSysctlRaw(t *testing.T) { - if runtime.GOOS == "openbsd" { - t.Skip("kern.proc.pid does not exist on OpenBSD") + switch runtime.GOOS { + case "netbsd", "openbsd": + t.Skipf("kern.proc.pid does not exist on %s", runtime.GOOS) } _, err := unix.SysctlRaw("kern.proc.pid", unix.Getpid())