unix: fix Test{Fd,}Xattr failure on NetBSD

On NetBSD the namespace of an xattr is stored separately from the name
and isn't returned by Listxattr and Flistxattr. Like on FreeBSD, strip
the namespace before checking the returned xattrs.

Fixes golang/go#69313
Fixes golang/go#69314

Change-Id: I7f2393cc63f9860332c0e07a51f3b9d32911e892
Cq-Include-Trybots: luci.golang.try:x_sys-gotip-netbsd-arm64
Reviewed-on: https://go-review.googlesource.com/c/sys/+/611695
Auto-Submit: Tobias Klauser <tobias.klauser@gmail.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Benny Siegert <bsiegert@gmail.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Commit-Queue: Ian Lance Taylor <iant@google.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>
This commit is contained in:
Tobias Klauser
2024-09-08 18:48:53 +02:00
committed by Gopher Robot
parent 68ed59b20b
commit 30de3524c2

View File

@@ -56,8 +56,9 @@ func TestXattr(t *testing.T) {
xattrs := stringsFromByteSlice(buf[:read])
xattrWant := xattrName
if runtime.GOOS == "freebsd" {
// On FreeBSD, the namespace is stored separately from the xattr
switch runtime.GOOS {
case "freebsd", "netbsd":
// On FreeBSD and NetBSD, the namespace is stored separately from the xattr
// name and Listxattr doesn't return the namespace prefix.
xattrWant = strings.TrimPrefix(xattrWant, "user.")
}
@@ -65,11 +66,12 @@ func TestXattr(t *testing.T) {
for _, name := range xattrs {
if name == xattrWant {
found = true
break
}
}
if !found {
t.Errorf("Listxattr did not return previously set attribute '%s'", xattrName)
t.Errorf("Listxattr did not return previously set attribute %q in attributes %v", xattrName, xattrs)
}
// find size
@@ -162,8 +164,9 @@ func TestFdXattr(t *testing.T) {
xattrs := stringsFromByteSlice(buf[:read])
xattrWant := xattrName
if runtime.GOOS == "freebsd" {
// On FreeBSD, the namespace is stored separately from the xattr
switch runtime.GOOS {
case "freebsd", "netbsd":
// On FreeBSD and NetBSD, the namespace is stored separately from the xattr
// name and Listxattr doesn't return the namespace prefix.
xattrWant = strings.TrimPrefix(xattrWant, "user.")
}
@@ -171,11 +174,12 @@ func TestFdXattr(t *testing.T) {
for _, name := range xattrs {
if name == xattrWant {
found = true
break
}
}
if !found {
t.Errorf("Flistxattr did not return previously set attribute '%s'", xattrName)
t.Errorf("Flistxattr did not return previously set attribute %q in attributes %v", xattrName, xattrs)
}
// find size