diff options
Diffstat (limited to 'tests/reverse')
| -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) +		} +	} +} | 
