diff options
| author | Jakob Unterwurzacher | 2018-11-11 15:48:39 +0100 | 
|---|---|---|
| committer | Jakob Unterwurzacher | 2019-01-01 16:24:25 +0100 | 
| commit | b97d7d1d33d1274c6872d899692a56bd4070a6d9 (patch) | |
| tree | e308cc863d3c82860d0351da8cff99d83537bafd | |
| parent | a355670ca2a5563d6c67b271ddeb6c0020a5fd00 (diff) | |
tests: add Flistxattr/Fgetxattr/Fremovexattr tests
Test for the upcoming fd-based xattr support.
| -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" | 
