From 2ec438b96dea4d72dc8d6ca22e61ae5dfd314df3 Mon Sep 17 00:00:00 2001 From: Brian Meek Date: Wed, 27 Apr 2022 15:48:55 -0700 Subject: [PATCH] Fix TestThumbnailsStorage failing when media reulsts come back in non-dterministic order; Silence expected error when tests are run mulitple times against the same postgress database --- mediaapi/storage/storage_test.go | 16 ++++++++++++---- test/db.go | 14 +++++++++++--- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/mediaapi/storage/storage_test.go b/mediaapi/storage/storage_test.go index 8d3403045..fa88cd8e7 100644 --- a/mediaapi/storage/storage_test.go +++ b/mediaapi/storage/storage_test.go @@ -123,11 +123,19 @@ func TestThumbnailsStorage(t *testing.T) { t.Fatalf("expected %d stored thumbnail metadata, got %d", len(thumbnails), len(gotMediadatas)) } for i := range gotMediadatas { - if !reflect.DeepEqual(thumbnails[i].MediaMetadata, gotMediadatas[i].MediaMetadata) { - t.Fatalf("expected metadata %+v, got %v", thumbnails[i].MediaMetadata, gotMediadatas[i].MediaMetadata) + // metadata may be returned in a different order than it was stored, perform a search + metaDataMatches := func() bool { + for _, t := range thumbnails { + if reflect.DeepEqual(t.MediaMetadata, gotMediadatas[i].MediaMetadata) && reflect.DeepEqual(t.ThumbnailSize, gotMediadatas[i].ThumbnailSize) { + return true + } + } + return false } - if !reflect.DeepEqual(thumbnails[i].ThumbnailSize, gotMediadatas[i].ThumbnailSize) { - t.Fatalf("expected metadata %+v, got %v", thumbnails[i].ThumbnailSize, gotMediadatas[i].ThumbnailSize) + + if !metaDataMatches() { + t.Fatalf("expected metadata %+v, got %+v", thumbnails[i].MediaMetadata, gotMediadatas[i].MediaMetadata) + } } }) diff --git a/test/db.go b/test/db.go index 6412feaa6..3d0954e91 100644 --- a/test/db.go +++ b/test/db.go @@ -15,13 +15,16 @@ package test import ( + "bytes" "crypto/sha256" "database/sql" "encoding/hex" "fmt" + "io" "os" "os/exec" "os/user" + "regexp" "testing" "github.com/lib/pq" @@ -39,13 +42,18 @@ func createLocalDB(dbName string) { fmt.Println("Note: tests require a postgres install accessible to the current user") } createDB := exec.Command("createdb", dbName) + var outBuff, errBuff bytes.Buffer if !Quiet { - createDB.Stdout = os.Stdout - createDB.Stderr = os.Stderr + createDB.Stdout = io.Writer(&outBuff) + createDB.Stderr = io.Writer(&errBuff) } err := createDB.Run() if err != nil && !Quiet { - fmt.Println("createLocalDB returned error:", err) + // Silence the output if it's just saying the database already exists + match, _ := regexp.MatchString("(?m)^createdb: error: database creation failed: ERROR: database(.*)already exists$", errBuff.String()) + if !match { + fmt.Println("createLocalDB returned error:", outBuff.String(), errBuff.String(), err) + } } }