diff options
Diffstat (limited to 'tests/xattr')
| -rw-r--r-- | tests/xattr/xattr_fd_test.go | 61 | ||||
| -rw-r--r-- | tests/xattr/xattr_integration_test.go | 8 | 
2 files changed, 68 insertions, 1 deletions
| diff --git a/tests/xattr/xattr_fd_test.go b/tests/xattr/xattr_fd_test.go new file mode 100644 index 0000000..7d37a57 --- /dev/null +++ b/tests/xattr/xattr_fd_test.go @@ -0,0 +1,61 @@ +//+build linux + +// Darwin does not support Fgetxattr and friends! + +package xattr_tests + +import ( +	"io/ioutil" +	"syscall" +	"testing" + +	"golang.org/x/sys/unix" + +	"github.com/rfjakob/gocryptfs/tests/test_helpers" +) + +func TestFdXattr(t *testing.T) { +	attr := "user.foo" +	fn := test_helpers.DefaultPlainDir + "/TestFdXattr" +	err := ioutil.WriteFile(fn, nil, 0700) +	if err != nil { +		t.Fatalf("creating empty file failed: %v", err) +	} +	fd, err := syscall.Open(fn, syscall.O_RDONLY, 0) +	if err != nil { +		t.Fatal(err) +	} +	defer syscall.Close(fd) +	buf := make([]byte, 1000) +	sz, err := unix.Flistxattr(fd, buf) +	if sz != 0 { +		t.Errorf("expected zero size, got %d", sz) +	} +	val1 := []byte("123456789") +	unix.Fsetxattr(fd, attr, val1, 0) +	sz, err = unix.Flistxattr(fd, buf) +	// Length of "user.attr" + terminating null byte +	expectedSz := len(attr) + 1 +	if sz != expectedSz { +		t.Errorf("expected size %d, got %d", expectedSz, sz) +	} +	str := string(buf[:sz-1]) +	if str != attr { +		t.Errorf("expected name %q, got %q", attr, str) +	} +	// Check content +	sz, err = unix.Fgetxattr(fd, attr, buf) +	str = string(buf[:sz]) +	if str != string(val1) { +		t.Errorf("expected val %q, got %q", val1, str) +	} +	// Delete value +	err = unix.Fremovexattr(fd, attr) +	if err != nil { +		t.Error(err) +	} +	sz, err = unix.Flistxattr(fd, buf) +	if sz != 0 { +		t.Errorf("expected zero size, got %d", sz) +	} +} diff --git a/tests/xattr/xattr_integration_test.go b/tests/xattr/xattr_integration_test.go index a989060..8e48399 100644 --- a/tests/xattr/xattr_integration_test.go +++ b/tests/xattr/xattr_integration_test.go @@ -1,4 +1,10 @@ -package defaults +package xattr_tests + +// xattr integration tests. +// +// These tests are not integrated into the "matrix" tests because of the need +// to switch TMPDIR to /var/tmp. +// TODO: check if it actually causes trouble in the "matrix" tests.  import (  	"bytes" | 
