blob: f2bc3f5147084494d790ff7eb8841d36935a2373 [file] [log] [blame]
Preetam Jinka4abbd4a2014-04-10 13:58:03 +10001// Copyright 2014 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// +build darwin dragonfly freebsd openbsd
6
7package syscall_test
8
9import (
Brad Fitzpatrick6db13e02016-09-06 04:11:59 +000010 "os/exec"
Preetam Jinka4abbd4a2014-04-10 13:58:03 +100011 "syscall"
12 "testing"
13)
14
15const MNT_WAIT = 1
Brad Fitzpatricka4bdd642016-09-06 17:02:19 +000016const MNT_NOWAIT = 2
Preetam Jinka4abbd4a2014-04-10 13:58:03 +100017
18func TestGetfsstat(t *testing.T) {
Brad Fitzpatricka4bdd642016-09-06 17:02:19 +000019 const flags = MNT_NOWAIT // see Issue 16937
20 n, err := syscall.Getfsstat(nil, flags)
21 t.Logf("Getfsstat(nil, %d) = (%v, %v)", flags, n, err)
Preetam Jinka4abbd4a2014-04-10 13:58:03 +100022 if err != nil {
23 t.Fatal(err)
24 }
25
26 data := make([]syscall.Statfs_t, n)
Brad Fitzpatricka4bdd642016-09-06 17:02:19 +000027 n2, err := syscall.Getfsstat(data, flags)
28 t.Logf("Getfsstat([]syscall.Statfs_t, %d) = (%v, %v)", flags, n2, err)
Preetam Jinka4abbd4a2014-04-10 13:58:03 +100029 if err != nil {
30 t.Fatal(err)
31 }
Brad Fitzpatricka4bdd642016-09-06 17:02:19 +000032 if n != n2 {
33 t.Errorf("Getfsstat(nil) = %d, but subsequent Getfsstat(slice) = %d", n, n2)
34 }
Brad Fitzpatrickb040bc92016-08-31 04:30:03 +000035 for i, stat := range data {
Brad Fitzpatricka4bdd642016-09-06 17:02:19 +000036 if stat == (syscall.Statfs_t{}) {
Brad Fitzpatrickb040bc92016-08-31 04:30:03 +000037 t.Errorf("index %v is an empty Statfs_t struct", i)
Preetam Jinka4abbd4a2014-04-10 13:58:03 +100038 }
39 }
Brad Fitzpatrick6db13e02016-09-06 04:11:59 +000040 if t.Failed() {
Brad Fitzpatricka4bdd642016-09-06 17:02:19 +000041 for i, stat := range data[:n2] {
Brad Fitzpatrick6db13e02016-09-06 04:11:59 +000042 t.Logf("data[%v] = %+v", i, stat)
43 }
44 mount, err := exec.Command("mount").CombinedOutput()
45 if err != nil {
46 t.Logf("mount: %v\n%s", err, mount)
47 } else {
48 t.Logf("mount: %s", mount)
49 }
50 }
Preetam Jinka4abbd4a2014-04-10 13:58:03 +100051}