diff options
| author | Jakob Unterwurzacher | 2020-08-30 16:36:10 +0200 | 
|---|---|---|
| committer | Jakob Unterwurzacher | 2020-08-30 16:36:10 +0200 | 
| commit | 3806a8cc9392a11ad604b306ea4f5d34d741e86d (patch) | |
| tree | 560ac156baaa736ca8522c8388b874524e4811e0 | |
| parent | d212b246c5e24e6151bef45ad5a8185fdd12a28f (diff) | |
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.
| -rw-r--r-- | tests/reverse/xattr_test.go | 66 | 
1 files changed, 66 insertions, 0 deletions
| diff --git a/tests/reverse/xattr_test.go b/tests/reverse/xattr_test.go new file mode 100644 index 0000000..8002604 --- /dev/null +++ b/tests/reverse/xattr_test.go @@ -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) +		} +	} +} | 
