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 <tobias.klauser@gmail.com>
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
diff --git a/unix/getfsstat_test.go b/unix/getfsstat_test.go
new file mode 100644
index 0000000..3b5f9d1
--- /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 8946647..9646c56 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 @@
 	"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())