From 1f1e50f49efd5344ac0d01e206ec4232651a00bc Mon Sep 17 00:00:00 2001 From: Michael Eischer Date: Sat, 8 Jul 2023 18:02:17 +0200 Subject: [PATCH] fuse: add test for symlink xattr --- internal/fuse/fuse_test.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/internal/fuse/fuse_test.go b/internal/fuse/fuse_test.go index 9ca1ec0c6..ccdd2f774 100644 --- a/internal/fuse/fuse_test.go +++ b/internal/fuse/fuse_test.go @@ -271,6 +271,31 @@ func TestInodeFromNode(t *testing.T) { rtest.Assert(t, inoA != inoAbb, "inode(a/b/b) = inode(a)") } +func TestLink(t *testing.T) { + node := &restic.Node{Name: "foo.txt", Type: "symlink", Links: 1, LinkTarget: "dst", ExtendedAttributes: []restic.ExtendedAttribute{ + {Name: "foo", Value: []byte("bar")}, + }} + + lnk, err := newLink(&Root{}, 42, node) + rtest.OK(t, err) + target, err := lnk.Readlink(context.TODO(), nil) + rtest.OK(t, err) + rtest.Equals(t, node.LinkTarget, target) + + exp := &fuse.ListxattrResponse{} + exp.Append("foo") + resp := &fuse.ListxattrResponse{} + rtest.OK(t, lnk.Listxattr(context.TODO(), &fuse.ListxattrRequest{}, resp)) + rtest.Equals(t, exp.Xattr, resp.Xattr) + + getResp := &fuse.GetxattrResponse{} + rtest.OK(t, lnk.Getxattr(context.TODO(), &fuse.GetxattrRequest{Name: "foo"}, getResp)) + rtest.Equals(t, node.ExtendedAttributes[0].Value, getResp.Xattr) + + err = lnk.Getxattr(context.TODO(), &fuse.GetxattrRequest{Name: "invalid"}, nil) + rtest.Assert(t, err != nil, "missing error on reading invalid xattr") +} + var sink uint64 func BenchmarkInode(b *testing.B) {