tests/reverse: implement (skipped) xattr test
v1api reverse mode did not have xattr support, the v2api version may have at some point. Prep the test already.
This commit is contained in:
parent
d212b246c5
commit
3806a8cc93
66
tests/reverse/xattr_test.go
Normal file
66
tests/reverse/xattr_test.go
Normal file
@ -0,0 +1,66 @@
|
||||
package reverse_test
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"path/filepath"
|
||||
"syscall"
|
||||
"testing"
|
||||
|
||||
"github.com/pkg/xattr"
|
||||
)
|
||||
|
||||
func xattrSupported(path string) bool {
|
||||
_, err := xattr.LGet(path, "user.xattrSupported-dummy-value")
|
||||
if err == nil {
|
||||
return true
|
||||
}
|
||||
err2 := err.(*xattr.Error)
|
||||
if err2.Err == syscall.EOPNOTSUPP {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func TestXattrList(t *testing.T) {
|
||||
t.Skip("TODO: not implemented yet in reverse mode")
|
||||
|
||||
if !xattrSupported(dirA) {
|
||||
t.Skip()
|
||||
}
|
||||
fnA := filepath.Join(dirA, t.Name())
|
||||
err := ioutil.WriteFile(fnA, nil, 0700)
|
||||
if err != nil {
|
||||
t.Fatalf("creating empty file failed: %v", err)
|
||||
}
|
||||
val := []byte("xxxxxxxxyyyyyyyyyyyyyyyzzzzzzzzzzzzz")
|
||||
num := 20
|
||||
var namesA map[string]string
|
||||
for i := 1; i <= num; i++ {
|
||||
attr := fmt.Sprintf("user.TestXattrList.%02d", i)
|
||||
err = xattr.LSet(fnA, attr, val)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
namesA[attr] = string(val)
|
||||
}
|
||||
fnC := filepath.Join(dirC, t.Name())
|
||||
tmp, err := xattr.LList(fnC)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
var namesC map[string]string
|
||||
for _, n := range tmp {
|
||||
namesC[n] = string(val)
|
||||
}
|
||||
if len(namesA) != len(namesC) {
|
||||
t.Errorf("wrong number of names, want=%d have=%d", len(namesA), len(namesC))
|
||||
}
|
||||
for i := range namesC {
|
||||
valA := namesA[i]
|
||||
valC := namesC[i]
|
||||
if valC != valA {
|
||||
t.Errorf("mismatch on attr %q: valA = %q, valC = %q", i, valA, valC)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user