1
0
mirror of https://github.com/jhillyerd/inbucket.git synced 2025-12-17 17:47:03 +00:00

storage test: fix failures on windows (#457)

* storage test: close source reader
* fstore: properly close directory handle
This commit is contained in:
James Hillyerd
2023-12-12 19:31:14 -08:00
committed by GitHub
parent e6e4e0987d
commit 5a5864fde6
2 changed files with 26 additions and 24 deletions

View File

@@ -326,5 +326,9 @@ func readDirNames(elem ...string) ([]string, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer func() {
_ = f.Close()
}()
return f.Readdirnames(0) return f.Readdirnames(0)
} }

View File

@@ -147,22 +147,19 @@ func testContent(t *testing.T, store storage.Store, extHost *extension.Host) {
Reader: bytes.NewReader(content), Reader: bytes.NewReader(content),
} }
id, err := store.AddMessage(delivery) id, err := store.AddMessage(delivery)
if err != nil { require.NoError(t, err, "AddMessage() failed")
t.Fatal(err)
} // Read stored message source.
// Get and check.
m, err := store.GetMessage(mailbox, id) m, err := store.GetMessage(mailbox, id)
if err != nil { require.NoError(t, err, "GetMessage() failed")
t.Fatal(err)
}
r, err := m.Source() r, err := m.Source()
if err != nil { require.NoError(t, err, "Source() failed")
t.Fatal(err)
}
got, err := io.ReadAll(r) got, err := io.ReadAll(r)
if err != nil { require.NoError(t, err, "failed to read source")
t.Fatal(err) err = r.Close()
} assert.NoError(t, err, "failed to close source reader")
// Verify source.
if len(got) != len(content) { if len(got) != len(content) {
t.Errorf("Got len(content) == %v, want: %v", len(got), len(content)) t.Errorf("Got len(content) == %v, want: %v", len(got), len(content))
} }
@@ -412,26 +409,27 @@ func testNoMsgCap(t *testing.T, store storage.Store, extHost *extension.Host) {
// testVisitMailboxes creates some mailboxes and confirms the VisitMailboxes method visits all of // testVisitMailboxes creates some mailboxes and confirms the VisitMailboxes method visits all of
// them. // them.
func testVisitMailboxes(t *testing.T, ds storage.Store, extHost *extension.Host) { func testVisitMailboxes(t *testing.T, ds storage.Store, extHost *extension.Host) {
// Deliver 2 test messages to each of 5 mailboxes.
boxes := []string{"abby", "bill", "christa", "donald", "evelyn"} boxes := []string{"abby", "bill", "christa", "donald", "evelyn"}
for _, name := range boxes { for _, name := range boxes {
DeliverToStore(t, ds, name, "Old Message", time.Now().Add(-24*time.Hour)) DeliverToStore(t, ds, name, "Old Message", time.Now().Add(-24*time.Hour))
DeliverToStore(t, ds, name, "New Message", time.Now()) DeliverToStore(t, ds, name, "New Message", time.Now())
} }
seen := 0
// Verify message and mailbox counts.
nboxes := 0
err := ds.VisitMailboxes(func(messages []storage.Message) bool { err := ds.VisitMailboxes(func(messages []storage.Message) bool {
seen++ nboxes++
count := len(messages) name := "unknown"
if count != 2 { if len(messages) > 0 {
t.Errorf("got: %v messages, want: 2", count) name = messages[0].Mailbox()
} }
assert.Equal(t, 2, len(messages), "incorrect message count in mailbox %s", name)
return true return true
}) })
if err != nil { assert.NoError(t, err, "VisitMailboxes() failed")
t.Error(err) assert.Equal(t, 5, nboxes, "visited %v mailboxes, want: 5", nboxes)
}
if seen != 5 {
t.Errorf("saw %v messages in total, want: 5", seen)
}
} }
// DeliverToStore creates and delivers a message to the specific mailbox, returning the size of the // DeliverToStore creates and delivers a message to the specific mailbox, returning the size of the