aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/acl/libacl-helper_test.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-10-13 18:55:52 +0900
committerOphestra <cat@gensokyo.uk>2026-10-13 18:55:52 +0900
commit0abf367b1334b76f5e8f989cf0c07b5d00b25868 (patch)
tree9d78aae80b86770762e5d86358fd1d89c18c3f35 /internal/acl/libacl-helper_test.go
parent11e395a1a7453b93c695e849bd93d8c2c0af6aef (diff)
internal/acl: skip superfluous acl_set_file
This slightly reduces startup latency. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/acl/libacl-helper_test.go')
-rw-r--r--internal/acl/libacl-helper_test.go47
1 files changed, 29 insertions, 18 deletions
diff --git a/internal/acl/libacl-helper_test.go b/internal/acl/libacl-helper_test.go
index 13d23a3c..05c43639 100644
--- a/internal/acl/libacl-helper_test.go
+++ b/internal/acl/libacl-helper_test.go
@@ -1,4 +1,4 @@
-package acl
+package acl_test
import (
"os"
@@ -7,9 +7,12 @@ import (
"testing"
"hakurei.app/container"
+ "hakurei.app/internal/acl"
)
-func TestNewAclPathError(t *testing.T) {
+func TestError(t *testing.T) {
+ t.Parallel()
+
testCases := []struct {
name string
path string
@@ -17,43 +20,51 @@ func TestNewAclPathError(t *testing.T) {
err error
want error
}{
- {"nil", container.Nonexistent, 0, syscall.ENOTRECOVERABLE, nil},
+ {"nil", container.Nonexistent, 0, syscall.ENOTRECOVERABLE, os.ErrInvalid},
- {"acl_get_file", container.Nonexistent, -1, syscall.ENOTRECOVERABLE,
+ {"acl_get_file", container.Nonexistent, 1, syscall.ENOTRECOVERABLE,
&os.PathError{Op: "acl_get_file", Path: container.Nonexistent, Err: syscall.ENOTRECOVERABLE}},
- {"acl_get_tag_type", container.Nonexistent, -2, syscall.ENOTRECOVERABLE,
+ {"acl_get_tag_type", container.Nonexistent, 2, syscall.ENOTRECOVERABLE,
&os.PathError{Op: "acl_get_tag_type", Path: container.Nonexistent, Err: syscall.ENOTRECOVERABLE}},
- {"acl_get_qualifier", container.Nonexistent, -3, syscall.ENOTRECOVERABLE,
+ {"acl_get_qualifier", container.Nonexistent, 3, syscall.ENOTRECOVERABLE,
&os.PathError{Op: "acl_get_qualifier", Path: container.Nonexistent, Err: syscall.ENOTRECOVERABLE}},
- {"acl_delete_entry", container.Nonexistent, -4, syscall.ENOTRECOVERABLE,
+ {"acl_delete_entry", container.Nonexistent, 4, syscall.ENOTRECOVERABLE,
&os.PathError{Op: "acl_delete_entry", Path: container.Nonexistent, Err: syscall.ENOTRECOVERABLE}},
- {"acl_create_entry", container.Nonexistent, -5, syscall.ENOTRECOVERABLE,
+ {"acl_create_entry", container.Nonexistent, 5, syscall.ENOTRECOVERABLE,
&os.PathError{Op: "acl_create_entry", Path: container.Nonexistent, Err: syscall.ENOTRECOVERABLE}},
- {"acl_get_permset", container.Nonexistent, -6, syscall.ENOTRECOVERABLE,
+ {"acl_get_permset", container.Nonexistent, 6, syscall.ENOTRECOVERABLE,
&os.PathError{Op: "acl_get_permset", Path: container.Nonexistent, Err: syscall.ENOTRECOVERABLE}},
- {"acl_add_perm", container.Nonexistent, -7, syscall.ENOTRECOVERABLE,
+ {"acl_add_perm", container.Nonexistent, 7, syscall.ENOTRECOVERABLE,
&os.PathError{Op: "acl_add_perm", Path: container.Nonexistent, Err: syscall.ENOTRECOVERABLE}},
- {"acl_set_tag_type", container.Nonexistent, -8, syscall.ENOTRECOVERABLE,
+ {"acl_set_tag_type", container.Nonexistent, 8, syscall.ENOTRECOVERABLE,
&os.PathError{Op: "acl_set_tag_type", Path: container.Nonexistent, Err: syscall.ENOTRECOVERABLE}},
- {"acl_set_qualifier", container.Nonexistent, -9, syscall.ENOTRECOVERABLE,
+ {"acl_set_qualifier", container.Nonexistent, 9, syscall.ENOTRECOVERABLE,
&os.PathError{Op: "acl_set_qualifier", Path: container.Nonexistent, Err: syscall.ENOTRECOVERABLE}},
- {"acl_calc_mask", container.Nonexistent, -10, syscall.ENOTRECOVERABLE,
+ {"acl_calc_mask", container.Nonexistent, 10, syscall.ENOTRECOVERABLE,
&os.PathError{Op: "acl_calc_mask", Path: container.Nonexistent, Err: syscall.ENOTRECOVERABLE}},
- {"acl_valid", container.Nonexistent, -11, syscall.ENOTRECOVERABLE,
+ {"acl_valid", container.Nonexistent, 11, syscall.ENOTRECOVERABLE,
&os.PathError{Op: "acl_valid", Path: container.Nonexistent, Err: syscall.ENOTRECOVERABLE}},
- {"acl_set_file", container.Nonexistent, -12, syscall.ENOTRECOVERABLE,
+ {"acl_set_file", container.Nonexistent, 12, syscall.ENOTRECOVERABLE,
&os.PathError{Op: "acl_set_file", Path: container.Nonexistent, Err: syscall.ENOTRECOVERABLE}},
+ {"acl_get_perm", container.Nonexistent, 13, syscall.ENOTRECOVERABLE,
+ &os.PathError{Op: "acl_get_perm", Path: container.Nonexistent, Err: syscall.ENOTRECOVERABLE}},
+ {"acl_dup", container.Nonexistent, 14, syscall.ENOTRECOVERABLE,
+ &os.PathError{Op: "acl_dup", Path: container.Nonexistent, Err: syscall.ENOTRECOVERABLE}},
- {"acl", container.Nonexistent, -13, syscall.ENOTRECOVERABLE,
+ {"acl", container.Nonexistent, 15, syscall.ENOTRECOVERABLE,
&os.PathError{Op: "setfacl", Path: container.Nonexistent, Err: syscall.ENOTRECOVERABLE}},
{"invalid", container.Nonexistent, -0xdead, nil,
&os.PathError{Op: "setfacl", Path: container.Nonexistent}},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
- err := newAclPathError(tc.path, tc.r, tc.err)
+ err := acl.Error{
+ Path: tc.path,
+ Op: acl.Status(tc.r),
+ Err: tc.err,
+ }.Unwrap()
if !reflect.DeepEqual(err, tc.want) {
- t.Errorf("newAclPathError: %v, want %v", err, tc.want)
+ t.Errorf("Unwrap: %v, want %v", err, tc.want)
}
})
}