From 65342d588ff061d2130e6379d86a26be90c908ae Mon Sep 17 00:00:00 2001 From: Ophestra Date: Tue, 28 Oct 2025 23:04:17 +0900 Subject: internal/app/state: improve store internals This fully exposes the store internals for #19 and are final preparations for removing the legacy store interface. This change also fixes a potential deadlock in the handle initialisation mkdir failure path. This however is never reachable in hakurei as the store is never accessed concurrently. Signed-off-by: Ophestra --- internal/app/state/segment_test.go | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) (limited to 'internal/app/state/segment_test.go') diff --git a/internal/app/state/segment_test.go b/internal/app/state/segment_test.go index 307943ac..834cb99a 100644 --- a/internal/app/state/segment_test.go +++ b/internal/app/state/segment_test.go @@ -194,19 +194,7 @@ func TestStoreHandle(t *testing.T) { if err := os.Mkdir(p.String(), 0700); err != nil { t.Fatal(err.Error()) } - - for _, s := range tc.ents[0] { - if f, err := os.OpenFile(p.Append(s).String(), os.O_CREATE|os.O_EXCL, 0600); err != nil { - t.Fatal(err.Error()) - } else if err = f.Close(); err != nil { - t.Fatal(err.Error()) - } - } - for _, s := range tc.ents[1] { - if err := os.Mkdir(p.Append(s).String(), 0700); err != nil { - t.Fatal(err.Error()) - } - } + createEntries(t, p, tc.ents) var got []*stateEntryHandle if entries, n, err := (&storeHandle{ @@ -253,3 +241,19 @@ func TestStoreHandle(t *testing.T) { } }) } + +// createEntries creates file and directory entries in the specified prefix. +func createEntries(t *testing.T, prefix *check.Absolute, ents [2][]string) { + for _, s := range ents[0] { + if f, err := os.OpenFile(prefix.Append(s).String(), os.O_CREATE|os.O_EXCL, 0600); err != nil { + t.Fatal(err.Error()) + } else if err = f.Close(); err != nil { + t.Fatal(err.Error()) + } + } + for _, s := range ents[1] { + if err := os.Mkdir(prefix.Append(s).String(), 0700); err != nil { + t.Fatal(err.Error()) + } + } +} -- cgit v1.3.1