refactor(mockfs): automatically clean up with t.Cleanup()

This commit is contained in:
sentriz
2022-03-02 15:19:12 +00:00
parent 9d406afb1f
commit 5420f01089
7 changed files with 19 additions and 48 deletions

View File

@@ -96,10 +96,10 @@ func runQueryCases(t *testing.T, contr *Controller, h handlerSubsonic, cases []*
} }
} }
func makeController(t *testing.T) (*Controller, *mockfs.MockFS) { return makec(t, []string{""}) } func makeController(t *testing.T) *Controller { return makec(t, []string{""}) }
func makeControllerRoots(t *testing.T, r []string) (*Controller, *mockfs.MockFS) { return makec(t, r) } func makeControllerRoots(t *testing.T, r []string) *Controller { return makec(t, r) }
func makec(t *testing.T, roots []string) (*Controller, *mockfs.MockFS) { func makec(t *testing.T, roots []string) *Controller {
t.Helper() t.Helper()
m := mockfs.NewWithDirs(t, roots) m := mockfs.NewWithDirs(t, roots)
@@ -117,7 +117,7 @@ func makec(t *testing.T, roots []string) (*Controller, *mockfs.MockFS) {
} }
base := &ctrlbase.Controller{DB: m.DB()} base := &ctrlbase.Controller{DB: m.DB()}
return &Controller{Controller: base, MusicPaths: absRoots}, m return &Controller{Controller: base, MusicPaths: absRoots}
} }
func TestMain(m *testing.M) { func TestMain(m *testing.M) {

View File

@@ -8,8 +8,7 @@ import (
) )
func TestGetIndexes(t *testing.T) { func TestGetIndexes(t *testing.T) {
contr, m := makeControllerRoots(t, []string{"m-0", "m-1"}) contr := makeControllerRoots(t, []string{"m-0", "m-1"})
defer m.CleanUp()
runQueryCases(t, contr, contr.ServeGetIndexes, []*queryCase{ runQueryCases(t, contr, contr.ServeGetIndexes, []*queryCase{
{url.Values{}, "no_args", false}, {url.Values{}, "no_args", false},
@@ -19,8 +18,7 @@ func TestGetIndexes(t *testing.T) {
} }
func TestGetMusicDirectory(t *testing.T) { func TestGetMusicDirectory(t *testing.T) {
contr, m := makeController(t) contr := makeController(t)
defer m.CleanUp()
runQueryCases(t, contr, contr.ServeGetMusicDirectory, []*queryCase{ runQueryCases(t, contr, contr.ServeGetMusicDirectory, []*queryCase{
{url.Values{"id": {"al-2"}}, "without_tracks", false}, {url.Values{"id": {"al-2"}}, "without_tracks", false},
@@ -30,8 +28,7 @@ func TestGetMusicDirectory(t *testing.T) {
func TestGetAlbumList(t *testing.T) { func TestGetAlbumList(t *testing.T) {
t.Parallel() t.Parallel()
contr, m := makeController(t) contr := makeController(t)
defer m.CleanUp()
runQueryCases(t, contr, contr.ServeGetAlbumList, []*queryCase{ runQueryCases(t, contr, contr.ServeGetAlbumList, []*queryCase{
{url.Values{"type": {"alphabeticalByArtist"}}, "alpha_artist", false}, {url.Values{"type": {"alphabeticalByArtist"}}, "alpha_artist", false},
@@ -43,8 +40,7 @@ func TestGetAlbumList(t *testing.T) {
func TestSearchTwo(t *testing.T) { func TestSearchTwo(t *testing.T) {
t.Parallel() t.Parallel()
contr, m := makeController(t) contr := makeController(t)
defer m.CleanUp()
runQueryCases(t, contr, contr.ServeSearchTwo, []*queryCase{ runQueryCases(t, contr, contr.ServeSearchTwo, []*queryCase{
{url.Values{"query": {"art"}}, "q_art", false}, {url.Values{"query": {"art"}}, "q_art", false},

View File

@@ -7,8 +7,7 @@ import (
func TestGetArtists(t *testing.T) { func TestGetArtists(t *testing.T) {
t.Parallel() t.Parallel()
contr, m := makeControllerRoots(t, []string{"m-0", "m-1"}) contr := makeControllerRoots(t, []string{"m-0", "m-1"})
defer m.CleanUp()
runQueryCases(t, contr, contr.ServeGetArtists, []*queryCase{ runQueryCases(t, contr, contr.ServeGetArtists, []*queryCase{
{url.Values{}, "no_args", false}, {url.Values{}, "no_args", false},
@@ -19,8 +18,7 @@ func TestGetArtists(t *testing.T) {
func TestGetArtist(t *testing.T) { func TestGetArtist(t *testing.T) {
t.Parallel() t.Parallel()
contr, m := makeController(t) contr := makeController(t)
defer m.CleanUp()
runQueryCases(t, contr, contr.ServeGetArtist, []*queryCase{ runQueryCases(t, contr, contr.ServeGetArtist, []*queryCase{
{url.Values{"id": {"ar-1"}}, "id_one", false}, {url.Values{"id": {"ar-1"}}, "id_one", false},
@@ -31,8 +29,7 @@ func TestGetArtist(t *testing.T) {
func TestGetAlbum(t *testing.T) { func TestGetAlbum(t *testing.T) {
t.Parallel() t.Parallel()
contr, m := makeController(t) contr := makeController(t)
defer m.CleanUp()
runQueryCases(t, contr, contr.ServeGetAlbum, []*queryCase{ runQueryCases(t, contr, contr.ServeGetAlbum, []*queryCase{
{url.Values{"id": {"al-2"}}, "without_cover", false}, {url.Values{"id": {"al-2"}}, "without_cover", false},
@@ -42,8 +39,7 @@ func TestGetAlbum(t *testing.T) {
func TestGetAlbumListTwo(t *testing.T) { func TestGetAlbumListTwo(t *testing.T) {
t.Parallel() t.Parallel()
contr, m := makeController(t) contr := makeController(t)
defer m.CleanUp()
runQueryCases(t, contr, contr.ServeGetAlbumListTwo, []*queryCase{ runQueryCases(t, contr, contr.ServeGetAlbumListTwo, []*queryCase{
{url.Values{"type": {"alphabeticalByArtist"}}, "alpha_artist", false}, {url.Values{"type": {"alphabeticalByArtist"}}, "alpha_artist", false},
@@ -55,8 +51,7 @@ func TestGetAlbumListTwo(t *testing.T) {
func TestSearchThree(t *testing.T) { func TestSearchThree(t *testing.T) {
t.Parallel() t.Parallel()
contr, m := makeController(t) contr := makeController(t)
defer m.CleanUp()
runQueryCases(t, contr, contr.ServeSearchThree, []*queryCase{ runQueryCases(t, contr, contr.ServeSearchThree, []*queryCase{
{url.Values{"query": {"art"}}, "q_art", false}, {url.Values{"query": {"art"}}, "q_art", false},

View File

@@ -35,6 +35,12 @@ func new(t testing.TB, dirs []string) *MockFS {
if err != nil { if err != nil {
t.Fatalf("create db: %v", err) t.Fatalf("create db: %v", err)
} }
t.Cleanup(func() {
if err := dbc.Close(); err != nil {
t.Fatalf("close db: %v", err)
}
})
if err := dbc.Migrate(db.MigrationContext{}); err != nil { if err := dbc.Migrate(db.MigrationContext{}); err != nil {
t.Fatalf("migrate db db: %v", err) t.Fatalf("migrate db db: %v", err)
} }
@@ -89,12 +95,6 @@ func (m *MockFS) ResetDates() {
} }
} }
func (m *MockFS) CleanUp() {
if err := m.db.Close(); err != nil {
m.t.Fatalf("close db: %v", err)
}
}
func (m *MockFS) AddItems() { m.addItems("", false) } func (m *MockFS) AddItems() { m.addItems("", false) }
func (m *MockFS) AddItemsPrefix(prefix string) { m.addItems(prefix, false) } func (m *MockFS) AddItemsPrefix(prefix string) { m.addItems(prefix, false) }
func (m *MockFS) AddItemsWithCovers() { m.addItems("", true) } func (m *MockFS) AddItemsWithCovers() { m.addItems("", true) }

View File

@@ -9,7 +9,6 @@ import (
func BenchmarkScanIncremental(b *testing.B) { func BenchmarkScanIncremental(b *testing.B) {
m := mockfs.New(b) m := mockfs.New(b)
defer m.CleanUp()
for i := 0; i < 5; i++ { for i := 0; i < 5; i++ {
m.AddItemsPrefix(fmt.Sprintf("t-%d", i)) m.AddItemsPrefix(fmt.Sprintf("t-%d", i))
} }
@@ -30,6 +29,5 @@ func BenchmarkScanFull(b *testing.B) {
b.StartTimer() b.StartTimer()
m.ScanAndClean() m.ScanAndClean()
b.StopTimer() b.StopTimer()
m.CleanUp()
} }
} }

View File

@@ -30,7 +30,6 @@ func FuzzScanner(f *testing.F) {
f.Fuzz(func(t *testing.T, data []byte, seed int64) { f.Fuzz(func(t *testing.T, data []byte, seed int64) {
is := is.NewRelaxed(t) is := is.NewRelaxed(t)
m := mockfs.New(t) m := mockfs.New(t)
defer m.CleanUp()
const toAdd = 1000 const toAdd = 1000
for i := 0; i < toAdd; i++ { for i := 0; i < toAdd; i++ {

View File

@@ -28,7 +28,6 @@ func TestTableCounts(t *testing.T) {
t.Parallel() t.Parallel()
is := is.NewRelaxed(t) is := is.NewRelaxed(t)
m := mockfs.New(t) m := mockfs.New(t)
defer m.CleanUp()
m.AddItems() m.AddItems()
m.ScanAndClean() m.ScanAndClean()
@@ -50,7 +49,6 @@ func TestParentID(t *testing.T) {
t.Parallel() t.Parallel()
is := is.New(t) is := is.New(t)
m := mockfs.New(t) m := mockfs.New(t)
defer m.CleanUp()
m.AddItems() m.AddItems()
m.ScanAndClean() m.ScanAndClean()
@@ -74,7 +72,6 @@ func TestUpdatedCover(t *testing.T) {
t.Parallel() t.Parallel()
is := is.NewRelaxed(t) is := is.NewRelaxed(t)
m := mockfs.New(t) m := mockfs.New(t)
defer m.CleanUp()
m.AddItems() m.AddItems()
m.ScanAndClean() m.ScanAndClean()
@@ -90,7 +87,6 @@ func TestCoverBeforeTracks(t *testing.T) {
t.Parallel() t.Parallel()
is := is.New(t) is := is.New(t)
m := mockfs.New(t) m := mockfs.New(t)
defer m.CleanUp()
m.AddCover("artist-2/album-2/cover.jpg") m.AddCover("artist-2/album-2/cover.jpg")
m.ScanAndClean() m.ScanAndClean()
@@ -111,7 +107,6 @@ func TestUpdatedTags(t *testing.T) {
t.Parallel() t.Parallel()
is := is.New(t) is := is.New(t)
m := mockfs.New(t) m := mockfs.New(t)
defer m.CleanUp()
m.AddTrack("artist-10/album-10/track-10.flac") m.AddTrack("artist-10/album-10/track-10.flac")
m.SetTags("artist-10/album-10/track-10.flac", func(tags *mockfs.Tags) error { m.SetTags("artist-10/album-10/track-10.flac", func(tags *mockfs.Tags) error {
@@ -154,7 +149,6 @@ func TestDeleteAlbum(t *testing.T) {
t.Parallel() t.Parallel()
is := is.NewRelaxed(t) is := is.NewRelaxed(t)
m := mockfs.New(t) m := mockfs.New(t)
defer m.CleanUp()
m.AddItems() m.AddItems()
m.ScanAndClean() m.ScanAndClean()
@@ -171,7 +165,6 @@ func TestDeleteArtist(t *testing.T) {
t.Parallel() t.Parallel()
is := is.NewRelaxed(t) is := is.NewRelaxed(t)
m := mockfs.New(t) m := mockfs.New(t)
defer m.CleanUp()
m.AddItems() m.AddItems()
m.ScanAndClean() m.ScanAndClean()
@@ -189,7 +182,6 @@ func TestGenres(t *testing.T) {
t.Parallel() t.Parallel()
is := is.New(t) is := is.New(t)
m := mockfs.New(t) m := mockfs.New(t)
defer m.CleanUp()
albumGenre := func(artist, album, genre string) error { albumGenre := func(artist, album, genre string) error {
return m.DB(). return m.DB().
@@ -281,7 +273,6 @@ func TestMultiFolders(t *testing.T) {
t.Parallel() t.Parallel()
is := is.New(t) is := is.New(t)
m := mockfs.NewWithDirs(t, []string{"m-1", "m-2", "m-3"}) m := mockfs.NewWithDirs(t, []string{"m-1", "m-2", "m-3"})
defer m.CleanUp()
m.AddItemsPrefix("m-1") m.AddItemsPrefix("m-1")
m.AddItemsPrefix("m-2") m.AddItemsPrefix("m-2")
@@ -316,7 +307,6 @@ func TestNewAlbumForExistingArtist(t *testing.T) {
t.Parallel() t.Parallel()
is := is.New(t) is := is.New(t)
m := mockfs.New(t) m := mockfs.New(t)
defer m.CleanUp()
m.AddItems() m.AddItems()
m.ScanAndClean() m.ScanAndClean()
@@ -352,7 +342,6 @@ func TestMultiFolderWithSharedArtist(t *testing.T) {
t.Parallel() t.Parallel()
is := is.New(t) is := is.New(t)
m := mockfs.NewWithDirs(t, []string{"m-0", "m-1"}) m := mockfs.NewWithDirs(t, []string{"m-0", "m-1"})
defer m.CleanUp()
const artistName = "artist-a" const artistName = "artist-a"
@@ -400,7 +389,6 @@ func TestSymlinkedAlbum(t *testing.T) {
t.Parallel() t.Parallel()
is := is.New(t) is := is.New(t)
m := mockfs.NewWithDirs(t, []string{"scan"}) m := mockfs.NewWithDirs(t, []string{"scan"})
defer m.CleanUp()
m.AddItemsPrefixWithCovers("temp") m.AddItemsPrefixWithCovers("temp")
@@ -428,7 +416,6 @@ func TestSymlinkedSubdiscs(t *testing.T) {
t.Parallel() t.Parallel()
is := is.New(t) is := is.New(t)
m := mockfs.NewWithDirs(t, []string{"scan"}) m := mockfs.NewWithDirs(t, []string{"scan"})
defer m.CleanUp()
addItem := func(prefix, artist, album, disc, track string) { addItem := func(prefix, artist, album, disc, track string) {
p := fmt.Sprintf("%s/%s/%s/%s/%s", prefix, artist, album, disc, track) p := fmt.Sprintf("%s/%s/%s/%s/%s", prefix, artist, album, disc, track)
@@ -472,7 +459,6 @@ func TestArtistHasCover(t *testing.T) {
t.Parallel() t.Parallel()
is := is.New(t) is := is.New(t)
m := mockfs.New(t) m := mockfs.New(t)
defer m.CleanUp()
m.AddItemsWithCovers() m.AddItemsWithCovers()
m.AddCover("artist-2/artist.png") m.AddCover("artist-2/artist.png")
@@ -491,7 +477,6 @@ func TestTagErrors(t *testing.T) {
t.Parallel() t.Parallel()
is := is.New(t) is := is.New(t)
m := mockfs.New(t) m := mockfs.New(t)
defer m.CleanUp()
m.AddItemsWithCovers() m.AddItemsWithCovers()
m.SetTags("artist-1/album-0/track-0.flac", func(tags *mockfs.Tags) error { m.SetTags("artist-1/album-0/track-0.flac", func(tags *mockfs.Tags) error {
@@ -520,7 +505,6 @@ func TestCompilationAlbumWithoutAlbumArtist(t *testing.T) {
t.Parallel() t.Parallel()
is := is.New(t) is := is.New(t)
m := mockfs.New(t) m := mockfs.New(t)
defer m.CleanUp()
const pathArtist = "various-artists" const pathArtist = "various-artists"
const pathAlbum = "my-compilation" const pathAlbum = "my-compilation"
@@ -558,7 +542,6 @@ func TestIncrementalScanNoChangeNoUpdatedAt(t *testing.T) {
t.Parallel() t.Parallel()
is := is.New(t) is := is.New(t)
m := mockfs.New(t) m := mockfs.New(t)
defer m.CleanUp()
m.AddItems() m.AddItems()