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:
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user