diff options
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/acl/acl_test.go | 98 | ||||
| -rw-r--r-- | internal/testsuite/ptrace.go | 3 | ||||
| -rw-r--r-- | internal/testsuite/testsuite.go | 2 |
3 files changed, 50 insertions, 53 deletions
diff --git a/internal/acl/acl_test.go b/internal/acl/acl_test.go index 6e84e832..14f0ca18 100644 --- a/internal/acl/acl_test.go +++ b/internal/acl/acl_test.go @@ -18,13 +18,23 @@ import ( "hakurei.app/internal/info" ) -const testFileName = "acl.test" - var ( uid = os.Geteuid() cred = int32(uid) ) +// testFile returns the pathname of a newly created test file. +func testFile(t *testing.T) string { + name := filepath.Join(t.TempDir(), "f") + f, err := os.Create(name) + if err != nil { + t.Fatal(err) + } else if err = f.Close(); err != nil { + t.Fatal(err) + } + return name +} + func TestUpdate(t *testing.T) { if info.CanDegrade { name := filepath.Join(t.TempDir(), "check-degrade") @@ -36,82 +46,63 @@ func TestUpdate(t *testing.T) { } } - testFilePath := filepath.Join(t.TempDir(), testFileName) + t.Parallel() - if f, err := os.Create(testFilePath); err != nil { - t.Fatalf("Create: error = %v", err) - } else { - if err = f.Close(); err != nil { - t.Fatalf("Close: error = %v", err) - } + pathname := testFile(t) + cur := getfacl(t, pathname) + if len(cur) != 3 { + t.Fatalf("unexpected test file acl length %d", len(cur)) } - defer func() { - if err := os.Remove(testFilePath); err != nil { - t.Fatalf("Remove: error = %v", err) - } - }() - - cur := getfacl(t, testFilePath) - - t.Run("default entry count", func(t *testing.T) { - if len(cur) != 3 { - t.Fatalf("unexpected test file acl length %d", len(cur)) - } - }) - t.Run("default clear mask", func(t *testing.T) { - if err := acl.Update(testFilePath, uid, 0); err != nil { - t.Fatalf("Update: error = %v", err) - } - if cur = getfacl(t, testFilePath); len(cur) != 4 { - t.Fatalf("Update: %v", cur) - } - }) + if err := acl.Update(pathname, uid, 0); err != nil { + t.Fatalf("(clear) Update: error = %v", err) + } + if cur = getfacl(t, pathname); len(cur) != 4 { + t.Fatalf("(clear) Update: %v", cur) + } - t.Run("default clear consistency", func(t *testing.T) { - if err := acl.Update(testFilePath, uid, 0); err != nil { - t.Fatalf("Update: error = %v", err) - } - if val := getfacl(t, testFilePath); !reflect.DeepEqual(val, cur) { - t.Fatalf("Update: %v, want %v", val, cur) - } - }) + if err := acl.Update(pathname, uid, 0); err != nil { + t.Fatalf("(clear*) Update: error = %v", err) + } + if val := getfacl(t, pathname); !reflect.DeepEqual(val, cur) { + t.Fatalf("(clear*) Update: %v, want %v", val, cur) + } - testUpdate(t, testFilePath, "r--", "", cur, acl.Read, true) - testUpdate(t, testFilePath, "-w-", "", cur, acl.Write, true) - testUpdate(t, testFilePath, "--x", "", cur, acl.Execute, true) + testUpdate(t, "r--", "", cur, acl.Read, true) + testUpdate(t, "-w-", "", cur, acl.Write, true) + testUpdate(t, "--x", "", cur, acl.Execute, true) testUpdate( - t, testFilePath, "-wx", "", cur, + t, "-wx", "", cur, acl.Write|acl.Execute, true, ) testUpdate( - t, testFilePath, "r-x", "", cur, + t, "r-x", "", cur, acl.Read|acl.Execute, true, ) testUpdate( - t, testFilePath, "rw-", "", cur, + t, "rw-", "", cur, acl.Read|acl.Write, true, ) testUpdate( - t, testFilePath, "rwx", "", cur, + t, "rwx", "", cur, acl.Read|acl.Write|acl.Execute, true, ) for i := range 16 { testUpdate( - t, testFilePath, "r-x", " "+strconv.Itoa(i), cur, + t, "r-x", " "+strconv.Itoa(i), cur, acl.Read|acl.Execute, false, ) } testUpdate( - t, testFilePath, "rwx", " cleanup", cur, + t, "rwx", " cleanup", cur, acl.Read|acl.Write|acl.Execute, true, ) @@ -119,27 +110,30 @@ func TestUpdate(t *testing.T) { func testUpdate( t *testing.T, - testFilePath, name, suffix string, + name, suffix string, cur []*getFACLResp, perms acl.Perm, cleanup bool, ) { t.Run(name+suffix, func(t *testing.T) { + t.Parallel() + + pathname := testFile(t) if cleanup { t.Cleanup(func() { - if err := acl.Update(testFilePath, uid, 0); err != nil { + if err := acl.Update(pathname, uid, 0); err != nil { t.Fatalf("Update: error = %v", err) } - if v := getfacl(t, testFilePath); !reflect.DeepEqual(v, cur) { + if v := getfacl(t, pathname); !reflect.DeepEqual(v, cur) { t.Fatalf("Update: %v, want %v", v, cur) } }) } - if err := acl.Update(testFilePath, uid, perms); err != nil { + if err := acl.Update(pathname, uid, perms); err != nil { t.Fatalf("Update: error = %v", err) } - r := respByCred(getfacl(t, testFilePath), fAclTypeUser, cred) + r := respByCred(getfacl(t, pathname), fAclTypeUser, cred) if r == nil { t.Fatalf("Update did not add an ACL entry") } diff --git a/internal/testsuite/ptrace.go b/internal/testsuite/ptrace.go index ccf0900c..b35816ec 100644 --- a/internal/testsuite/ptrace.go +++ b/internal/testsuite/ptrace.go @@ -119,6 +119,9 @@ func CheckFilter(pid, index int, sum [sha512.Size]byte) (err error) { defer func() { if detachErr := ptraceDetach(pid); err == nil { err = detachErr + if errors.Is(err, syscall.ESRCH) { + err = nil + } } }() diff --git a/internal/testsuite/testsuite.go b/internal/testsuite/testsuite.go index 367cb4c0..b7805380 100644 --- a/internal/testsuite/testsuite.go +++ b/internal/testsuite/testsuite.go @@ -798,7 +798,7 @@ func StartHakurei( "hakurei", "--json", "ps", "--short", ) if !slices.Contains(identifiers, id) { - log.Fatal("instance not present in ps output") + log.Fatalf("(%s) instance not present in ps output", c.Container.Hostname) } var got hst.State |
