github.com/pkg/sftp@v1.13.6/client_integration_linux_test.go (about)

     1  package sftp
     2  
     3  import (
     4  	"syscall"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func TestClientStatVFS(t *testing.T) {
    11  	if *testServerImpl {
    12  		t.Skipf("go server does not support FXP_EXTENDED")
    13  	}
    14  	sftp, cmd := testClient(t, READWRITE, NODELAY)
    15  	defer cmd.Wait()
    16  	defer sftp.Close()
    17  
    18  	_, ok := sftp.HasExtension("statvfs@openssh.com")
    19  	require.True(t, ok, "server doesn't list statvfs extension")
    20  
    21  	vfs, err := sftp.StatVFS("/")
    22  	if err != nil {
    23  		t.Fatal(err)
    24  	}
    25  
    26  	// get system stats
    27  	s := syscall.Statfs_t{}
    28  	err = syscall.Statfs("/", &s)
    29  	if err != nil {
    30  		t.Fatal(err)
    31  	}
    32  
    33  	// check some stats
    34  	if vfs.Frsize != uint64(s.Frsize) {
    35  		t.Fatalf("fr_size does not match, expected: %v, got: %v", s.Frsize, vfs.Frsize)
    36  	}
    37  
    38  	if vfs.Bsize != uint64(s.Bsize) {
    39  		t.Fatalf("f_bsize does not match, expected: %v, got: %v", s.Bsize, vfs.Bsize)
    40  	}
    41  
    42  	if vfs.Namemax != uint64(s.Namelen) {
    43  		t.Fatalf("f_namemax does not match, expected: %v, got: %v", s.Namelen, vfs.Namemax)
    44  	}
    45  }