package dump import ( "testing" rtest "github.com/restic/restic/internal/test" ) func TestFormatLinuxACL(t *testing.T) { for _, c := range []struct { in, out, err string }{ { in: "\x02\x00\x00\x00\x01\x00\x06\x00\xff\xff\xff\xff\x02\x00" + "\x04\x00\x03\x00\x00\x00\x02\x00\x04\x00\xe9\x03\x00\x00" + "\x04\x00\x02\x00\xff\xff\xff\xff\b\x00\x01\x00'\x00\x00\x00" + "\x10\x00\a\x00\xff\xff\xff\xff \x00\x04\x00\xff\xff\xff\xff", out: "user::rw-\nuser:3:r--\nuser:1001:r--\ngroup::-w-\n" + "group:39:--x\nmask::rwx\nother::r--\n", }, { in: "\x02\x00\x00\x00\x00\x00\x06\x00\xff\xff\xff\xff\x02\x00" + "\x04\x00\x03\x00\x00\x00\x02\x00\x04\x00\xe9\x03\x00\x00" + "\x04\x00\x06\x00\xff\xff\xff\xff\b\x00\x05\x00'\x00\x00\x00" + "\x10\x00\a\x00\xff\xff\xff\xff \x00\x04\x00\xff\xff\xff\xff", err: "unknown tag", }, { in: "\x01\x00\x00\x00\x01\x00\x06\x00\xff\xff\xff\xff\x02\x00" + "\x04\x00\x03\x00\x00\x00\x02\x00\x04\x00\xe9\x03\x00\x00" + "\x04\x00\x06\x00\xff\xff\xff\xff\b\x00\x05\x00'\x00\x00\x00" + "\x10\x00\a\x00\xff\xff\xff\xff \x00\x04\x00\xff\xff\xff\xff", err: "unsupported ACL format version", }, {in: "\x02\x00", err: "wrong length"}, {in: "", err: "wrong length"}, } { out, err := formatLinuxACL([]byte(c.in)) if c.err == "" { rtest.Equals(t, c.out, out) } else { rtest.Assert(t, err != nil, "wanted %q but got nil", c.err) rtest.Equals(t, c.err, err.Error()) } } }