func TestGetxattrSize(t *testing.T) { t.Parallel() f := &getxattrSize{} mnt, err := fstestutil.MountedT(t, fstestutil.SimpleFS{fstestutil.ChildMap{"child": f}}) if err != nil { t.Fatal(err) } defer mnt.Close() n, err := syscallx.Getxattr(mnt.Dir+"/child", "whatever", nil) if err != nil { t.Errorf("Getxattr unexpected error: %v", err) return } if g, e := n, len("hello, world"); g != e { t.Errorf("Getxattr incorrect size: %d != %d", g, e) } }
func TestGetxattrTooSmall(t *testing.T) { t.Parallel() f := &getxattrTooSmall{} mnt, err := fstestutil.MountedT(t, fstestutil.SimpleFS{fstestutil.ChildMap{"child": f}}) if err != nil { t.Fatal(err) } defer mnt.Close() buf := make([]byte, 3) _, err = syscallx.Getxattr(mnt.Dir+"/child", "whatever", buf) if err == nil { t.Error("Getxattr = nil; want some error") } if err != syscall.ERANGE { t.Errorf("unexpected error: %v", err) return } }
func TestGetxattr(t *testing.T) { t.Parallel() f := &getxattr{} mnt, err := fstestutil.MountedT(t, fstestutil.SimpleFS{fstestutil.ChildMap{"child": f}}) if err != nil { t.Fatal(err) } defer mnt.Close() buf := make([]byte, 8192) n, err := syscallx.Getxattr(mnt.Dir+"/child", "not-there", buf) if err != nil { t.Errorf("unexpected error: %v", err) return } buf = buf[:n] if g, e := string(buf), "hello, world"; g != e { t.Errorf("wrong getxattr content: %#v != %#v", g, e) } seen := f.RecordedGetxattr() if g, e := seen.Name, "not-there"; g != e { t.Errorf("wrong getxattr name: %#v != %#v", g, e) } }