diff --git a/db/db_test.go b/db/db_test.go index 87d07e4..6fa2ce3 100644 --- a/db/db_test.go +++ b/db/db_test.go @@ -8,7 +8,7 @@ import ( "testing" _ "github.com/jinzhu/gorm/dialects/sqlite" - "github.com/matryer/is" + "github.com/stretchr/testify/require" ) func randKey() string { @@ -24,7 +24,7 @@ func TestGetSetting(t *testing.T) { key := randKey() value := "howdy" - is := is.New(t) + require := require.New(t) testDB, err := NewMock() if err != nil { @@ -34,16 +34,16 @@ func TestGetSetting(t *testing.T) { t.Fatalf("error migrating db: %v", err) } - is.NoErr(testDB.SetSetting(key, value)) + require.NoError(testDB.SetSetting(key, value)) actual, err := testDB.GetSetting(key) - is.NoErr(err) - is.Equal(actual, value) + require.NoError(err) + require.Equal(actual, value) - is.NoErr(testDB.SetSetting(key, value)) + require.NoError(testDB.SetSetting(key, value)) actual, err = testDB.GetSetting(key) - is.NoErr(err) - is.Equal(actual, value) + require.NoError(err) + require.Equal(actual, value) } func TestMain(m *testing.M) { diff --git a/go.mod b/go.mod index aa7333f..4cdf1a8 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,6 @@ require ( github.com/gorilla/sessions v1.2.1 github.com/jinzhu/gorm v1.9.17-0.20211120011537-5c235b72a414 github.com/josephburnett/jd v1.5.2 - github.com/matryer/is v1.4.0 github.com/mattn/go-sqlite3 v1.14.16 github.com/mitchellh/mapstructure v1.5.0 github.com/mmcdole/gofeed v1.2.0 diff --git a/go.sum b/go.sum index d3ac2d6..2ead178 100644 --- a/go.sum +++ b/go.sum @@ -98,8 +98,6 @@ github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= -github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus= github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y= diff --git a/jukebox/jukebox_test.go b/jukebox/jukebox_test.go index d486e7e..11a6ded 100644 --- a/jukebox/jukebox_test.go +++ b/jukebox/jukebox_test.go @@ -7,7 +7,7 @@ import ( "sort" "testing" - "github.com/matryer/is" + "github.com/stretchr/testify/require" "go.senan.xyz/gonic/jukebox" ) @@ -36,9 +36,9 @@ func TestPlaySkipReset(t *testing.T) { t.Parallel() j := newJukebox(t) - is := is.New(t) + require := require.New(t) - is.NoErr(j.SetPlaylist([]string{ + require.NoError(j.SetPlaylist([]string{ testPath("tr_0.mp3"), testPath("tr_1.mp3"), testPath("tr_2.mp3"), @@ -47,56 +47,56 @@ func TestPlaySkipReset(t *testing.T) { })) status, err := j.GetStatus() - is.NoErr(err) - is.Equal(status.CurrentIndex, 0) - is.Equal(status.CurrentFilename, testPath("tr_0.mp3")) - is.Equal(status.Length, 5) - is.Equal(status.Playing, true) + require.NoError(err) + require.Equal(status.CurrentIndex, 0) + require.Equal(status.CurrentFilename, testPath("tr_0.mp3")) + require.Equal(status.Length, 5) + require.Equal(status.Playing, true) items, err := j.GetPlaylist() - is.NoErr(err) + require.NoError(err) itemsSorted := append([]string(nil), items...) sort.Strings(itemsSorted) - is.Equal(items, itemsSorted) + require.Equal(items, itemsSorted) - is.NoErr(j.Play()) + require.NoError(j.Play()) status, err = j.GetStatus() - is.NoErr(err) - is.Equal(status.Playing, true) + require.NoError(err) + require.Equal(status.Playing, true) - is.NoErr(j.Pause()) + require.NoError(j.Pause()) status, err = j.GetStatus() - is.NoErr(err) - is.Equal(status.Playing, false) + require.NoError(err) + require.Equal(status.Playing, false) - is.NoErr(j.Play()) + require.NoError(j.Play()) // skip to 2 - is.NoErr(j.SkipToPlaylistIndex(2, 0)) + require.NoError(j.SkipToPlaylistIndex(2, 0)) status, err = j.GetStatus() - is.NoErr(err) - is.Equal(status.CurrentIndex, 2) - is.Equal(status.CurrentFilename, testPath("tr_2.mp3")) - is.Equal(status.Length, 5) - is.Equal(status.Playing, true) + require.NoError(err) + require.Equal(status.CurrentIndex, 2) + require.Equal(status.CurrentFilename, testPath("tr_2.mp3")) + require.Equal(status.Length, 5) + require.Equal(status.Playing, true) // skip to 3 - is.NoErr(j.SkipToPlaylistIndex(3, 0)) + require.NoError(j.SkipToPlaylistIndex(3, 0)) status, err = j.GetStatus() - is.NoErr(err) - is.Equal(status.CurrentIndex, 3) - is.Equal(status.CurrentFilename, testPath("tr_3.mp3")) - is.Equal(status.Length, 5) - is.Equal(status.Playing, true) + require.NoError(err) + require.Equal(status.CurrentIndex, 3) + require.Equal(status.CurrentFilename, testPath("tr_3.mp3")) + require.Equal(status.Length, 5) + require.Equal(status.Playing, true) // just add one more by overwriting the playlist like some clients do // we should keep the current track unchaned if we find it - is.NoErr(j.SetPlaylist([]string{ + require.NoError(j.SetPlaylist([]string{ "testdata/tr_0.mp3", "testdata/tr_1.mp3", "testdata/tr_2.mp3", @@ -106,24 +106,24 @@ func TestPlaySkipReset(t *testing.T) { })) status, err = j.GetStatus() - is.NoErr(err) - is.Equal(status.CurrentIndex, 3) // index unchanged - is.Equal(status.CurrentFilename, testPath("tr_3.mp3")) - is.Equal(status.Length, 6) // we added one more track - is.Equal(status.Playing, true) + require.NoError(err) + require.Equal(status.CurrentIndex, 3) // index unchanged + require.Equal(status.CurrentFilename, testPath("tr_3.mp3")) + require.Equal(status.Length, 6) // we added one more track + require.Equal(status.Playing, true) // skip to 3 again - is.NoErr(j.SkipToPlaylistIndex(3, 0)) + require.NoError(j.SkipToPlaylistIndex(3, 0)) status, err = j.GetStatus() - is.NoErr(err) - is.Equal(status.CurrentIndex, 3) - is.Equal(status.CurrentFilename, testPath("tr_3.mp3")) - is.Equal(status.Length, 6) - is.Equal(status.Playing, true) + require.NoError(err) + require.Equal(status.CurrentIndex, 3) + require.Equal(status.CurrentFilename, testPath("tr_3.mp3")) + require.Equal(status.Length, 6) + require.Equal(status.Playing, true) // remove all but 3 - is.NoErr(j.SetPlaylist([]string{ + require.NoError(j.SetPlaylist([]string{ "testdata/tr_0.mp3", "testdata/tr_1.mp3", "testdata/tr_2.mp3", @@ -131,25 +131,25 @@ func TestPlaySkipReset(t *testing.T) { })) status, err = j.GetStatus() - is.NoErr(err) - is.Equal(status.CurrentIndex, 3) // index unchanged - is.Equal(status.CurrentFilename, testPath("tr_3.mp3")) - is.Equal(status.Length, 4) - is.Equal(status.Playing, true) + require.NoError(err) + require.Equal(status.CurrentIndex, 3) // index unchanged + require.Equal(status.CurrentFilename, testPath("tr_3.mp3")) + require.Equal(status.Length, 4) + require.Equal(status.Playing, true) // skip to 2 (5s long) in the middle of the track - is.NoErr(j.SkipToPlaylistIndex(2, 2)) + require.NoError(j.SkipToPlaylistIndex(2, 2)) status, err = j.GetStatus() - is.NoErr(err) - is.Equal(status.CurrentIndex, 2) // index unchanged - is.Equal(status.CurrentFilename, testPath("tr_2.mp3")) - is.Equal(status.Length, 4) - is.Equal(status.Playing, true) - is.Equal(status.Position, 2) // at new position + require.NoError(err) + require.Equal(status.CurrentIndex, 2) // index unchanged + require.Equal(status.CurrentFilename, testPath("tr_2.mp3")) + require.Equal(status.Length, 4) + require.Equal(status.Playing, true) + require.Equal(status.Position, 2) // at new position // overwrite completely - is.NoErr(j.SetPlaylist([]string{ + require.NoError(j.SetPlaylist([]string{ "testdata/tr_5.mp3", "testdata/tr_6.mp3", "testdata/tr_7.mp3", @@ -158,33 +158,33 @@ func TestPlaySkipReset(t *testing.T) { })) status, err = j.GetStatus() - is.NoErr(err) - is.Equal(status.CurrentIndex, 0) // index unchanged - is.Equal(status.CurrentFilename, testPath("tr_5.mp3")) - is.Equal(status.Length, 5) - is.Equal(status.Playing, true) + require.NoError(err) + require.Equal(status.CurrentIndex, 0) // index unchanged + require.Equal(status.CurrentFilename, testPath("tr_5.mp3")) + require.Equal(status.Length, 5) + require.Equal(status.Playing, true) } func TestVolume(t *testing.T) { t.Parallel() j := newJukebox(t) - is := is.New(t) + require := require.New(t) vol, err := j.GetVolumePct() - is.NoErr(err) - is.Equal(vol, 100.0) + require.NoError(err) + require.Equal(vol, 100.0) - is.NoErr(j.SetVolumePct(69.0)) + require.NoError(j.SetVolumePct(69.0)) vol, err = j.GetVolumePct() - is.NoErr(err) - is.Equal(vol, 69.0) + require.NoError(err) + require.Equal(vol, 69.0) - is.NoErr(j.SetVolumePct(0.0)) + require.NoError(j.SetVolumePct(0.0)) vol, err = j.GetVolumePct() - is.NoErr(err) - is.Equal(vol, 0.0) + require.NoError(err) + require.Equal(vol, 0.0) } func testPath(path string) string { diff --git a/playlist/playlist_test.go b/playlist/playlist_test.go index 4783f3a..10fd0c4 100644 --- a/playlist/playlist_test.go +++ b/playlist/playlist_test.go @@ -3,25 +3,25 @@ package playlist_test import ( "testing" - "github.com/matryer/is" + "github.com/stretchr/testify/require" "go.senan.xyz/gonic/playlist" ) func TestPlaylist(t *testing.T) { - is := is.New(t) + require := require.New(t) tmp := t.TempDir() store, err := playlist.NewStore(tmp) - is.NoErr(err) + require.NoError(err) playlistIDs, err := store.List() - is.NoErr(err) - is.True(len(playlistIDs) == 0) + require.NoError(err) + require.Empty(playlistIDs) for _, playlistID := range playlistIDs { playlist, err := store.Read(playlistID) - is.NoErr(err) - is.True(!playlist.UpdatedAt.IsZero()) + require.NoError(err) + require.NotZero(playlist.UpdatedAt) } before := playlist.Playlist{ @@ -40,18 +40,18 @@ It has multiple lines 👍 } newPath := playlist.NewPath(before.UserID, before.Name) - is.NoErr(store.Write(newPath, &before)) + require.NoError(store.Write(newPath, &before)) after, err := store.Read(newPath) - is.NoErr(err) + require.NoError(err) - is.Equal(before.UserID, after.UserID) - is.Equal(before.Name, after.Name) - is.Equal(before.Comment, after.Comment) - is.Equal(before.Items, after.Items) - is.Equal(before.IsPublic, after.IsPublic) + require.Equal(before.UserID, after.UserID) + require.Equal(before.Name, after.Name) + require.Equal(before.Comment, after.Comment) + require.Equal(before.Items, after.Items) + require.Equal(before.IsPublic, after.IsPublic) playlistIDs, err = store.List() - is.NoErr(err) - is.True(len(playlistIDs) == 1) + require.NoError(err) + require.True(len(playlistIDs) == 1) } diff --git a/scanner/scanner_fuzz_test.go b/scanner/scanner_fuzz_test.go index bb904cc..9911326 100644 --- a/scanner/scanner_fuzz_test.go +++ b/scanner/scanner_fuzz_test.go @@ -10,25 +10,23 @@ import ( "testing" _ "github.com/jinzhu/gorm/dialects/sqlite" - "github.com/matryer/is" + "github.com/stretchr/testify/assert" "go.senan.xyz/gonic/mockfs" ) func FuzzScanner(f *testing.F) { - checkDelta := func(is *is.I, m *mockfs.MockFS, expSeen, expNew int) { - is.Helper() - + checkDelta := func(assert *assert.Assertions, m *mockfs.MockFS, expSeen, expNew int) { ctx := m.ScanAndClean() - is.Equal(ctx.SeenTracks(), expSeen) - is.Equal(ctx.SeenTracksNew(), expNew) - is.Equal(ctx.TracksMissing(), 0) - is.Equal(ctx.AlbumsMissing(), 0) - is.Equal(ctx.ArtistsMissing(), 0) - is.Equal(ctx.GenresMissing(), 0) + assert.Equal(ctx.SeenTracks(), expSeen) + assert.Equal(ctx.SeenTracksNew(), expNew) + assert.Equal(ctx.TracksMissing(), 0) + assert.Equal(ctx.AlbumsMissing(), 0) + assert.Equal(ctx.ArtistsMissing(), 0) + assert.Equal(ctx.GenresMissing(), 0) } f.Fuzz(func(t *testing.T, data []byte, seed int64) { - is := is.NewRelaxed(t) + assert := assert.New(t) m := mockfs.New(t) const toAdd = 1000 @@ -41,8 +39,8 @@ func FuzzScanner(f *testing.F) { }) } - checkDelta(is, m, toAdd, toAdd) // we added all tracks, 0 delta - checkDelta(is, m, toAdd, 0) // we added 0 tracks, 0 delta + checkDelta(assert, m, toAdd, toAdd) // we added all tracks, 0 delta + checkDelta(assert, m, toAdd, 0) // we added 0 tracks, 0 delta }) } diff --git a/scanner/scanner_test.go b/scanner/scanner_test.go index 214377f..7e068e5 100644 --- a/scanner/scanner_test.go +++ b/scanner/scanner_test.go @@ -1,7 +1,6 @@ package scanner_test import ( - "errors" "fmt" "io" "log" @@ -11,7 +10,8 @@ import ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/sqlite" - "github.com/matryer/is" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "go.senan.xyz/gonic/db" "go.senan.xyz/gonic/mockfs" @@ -26,72 +26,72 @@ func TestMain(m *testing.M) { func TestTableCounts(t *testing.T) { t.Parallel() - is := is.NewRelaxed(t) + assert := assert.New(t) m := mockfs.New(t) m.AddItems() m.ScanAndClean() var tracks int - is.NoErr(m.DB().Model(&db.Track{}).Count(&tracks).Error) // not all tracks - is.Equal(tracks, m.NumTracks()) + assert.NoError(m.DB().Model(&db.Track{}).Count(&tracks).Error) // not all tracks + assert.Equal(tracks, m.NumTracks()) var albums int - is.NoErr(m.DB().Model(&db.Album{}).Count(&albums).Error) // not all albums - is.Equal(albums, 13) // not all albums + assert.NoError(m.DB().Model(&db.Album{}).Count(&albums).Error) // not all albums + assert.Equal(albums, 13) // not all albums var artists int - is.NoErr(m.DB().Model(&db.Artist{}).Count(&artists).Error) // not all artists - is.Equal(artists, 3) // not all artists + assert.NoError(m.DB().Model(&db.Artist{}).Count(&artists).Error) // not all artists + assert.Equal(artists, 3) // not all artists } func TestWithExcludePattern(t *testing.T) { t.Parallel() - is := is.NewRelaxed(t) + assert := assert.New(t) m := mockfs.NewWithExcludePattern(t, "\\/artist-1\\/|track-0.flac$") m.AddItems() m.ScanAndClean() var tracks int - is.NoErr(m.DB().Model(&db.Track{}).Count(&tracks).Error) // not all tracks - is.Equal(tracks, 12) + assert.NoError(m.DB().Model(&db.Track{}).Count(&tracks).Error) // not all tracks + assert.Equal(tracks, 12) var albums int - is.NoErr(m.DB().Model(&db.Album{}).Count(&albums).Error) // not all albums - is.Equal(albums, 10) // not all albums + assert.NoError(m.DB().Model(&db.Album{}).Count(&albums).Error) // not all albums + assert.Equal(albums, 10) // not all albums var artists int - is.NoErr(m.DB().Model(&db.Artist{}).Count(&artists).Error) // not all artists - is.Equal(artists, 2) // not all artists + assert.NoError(m.DB().Model(&db.Artist{}).Count(&artists).Error) // not all artists + assert.Equal(artists, 2) // not all artists } func TestParentID(t *testing.T) { t.Parallel() - is := is.New(t) + require := require.New(t) m := mockfs.New(t) m.AddItems() m.ScanAndClean() var nullParentAlbums []*db.Album - is.NoErr(m.DB().Where("parent_id IS NULL").Find(&nullParentAlbums).Error) // one parent_id=NULL which is root folder - is.Equal(len(nullParentAlbums), 1) // one parent_id=NULL which is root folder - is.Equal(nullParentAlbums[0].LeftPath, "") - is.Equal(nullParentAlbums[0].RightPath, ".") + require.NoError(m.DB().Where("parent_id IS NULL").Find(&nullParentAlbums).Error) // one parent_id=NULL which is root folder + require.Equal(len(nullParentAlbums), 1) // one parent_id=NULL which is root folder + require.Equal(nullParentAlbums[0].LeftPath, "") + require.Equal(nullParentAlbums[0].RightPath, ".") - is.Equal(m.DB().Where("id=parent_id").Find(&db.Album{}).Error, gorm.ErrRecordNotFound) // no self-referencing albums + require.Equal(m.DB().Where("id=parent_id").Find(&db.Album{}).Error, gorm.ErrRecordNotFound) // no self-referencing albums var album db.Album var parent db.Album - is.NoErr(m.DB().Find(&album, "left_path=? AND right_path=?", "artist-0/", "album-0").Error) // album has parent ID - is.NoErr(m.DB().Find(&parent, "right_path=?", "artist-0").Error) // album has parent ID - is.Equal(album.ParentID, parent.ID) // album has parent ID + require.NoError(m.DB().Find(&album, "left_path=? AND right_path=?", "artist-0/", "album-0").Error) // album has parent ID + require.NoError(m.DB().Find(&parent, "right_path=?", "artist-0").Error) // album has parent ID + require.Equal(album.ParentID, parent.ID) // album has parent ID } func TestUpdatedCover(t *testing.T) { t.Parallel() - is := is.NewRelaxed(t) + assert := assert.New(t) m := mockfs.New(t) m.AddItems() @@ -100,13 +100,13 @@ func TestUpdatedCover(t *testing.T) { m.ScanAndClean() var album db.Album - is.NoErr(m.DB().Where("left_path=? AND right_path=?", "artist-0/", "album-0").Find(&album).Error) // album has cover - is.Equal(album.Cover, "cover.jpg") // album has cover + assert.NoError(m.DB().Where("left_path=? AND right_path=?", "artist-0/", "album-0").Find(&album).Error) // album has cover + assert.Equal(album.Cover, "cover.jpg") // album has cover } func TestCoverBeforeTracks(t *testing.T) { t.Parallel() - is := is.New(t) + require := require.New(t) m := mockfs.New(t) m.AddCover("artist-2/album-2/cover.jpg") @@ -115,18 +115,18 @@ func TestCoverBeforeTracks(t *testing.T) { m.ScanAndClean() var album db.Album - is.NoErr(m.DB().Preload("TagArtist").Where("left_path=? AND right_path=?", "artist-2/", "album-2").Find(&album).Error) // album has cover - is.Equal(album.Cover, "cover.jpg") // album has cover - is.Equal(album.TagArtist.Name, "artist-2") // album artist + require.NoError(m.DB().Preload("TagArtist").Where("left_path=? AND right_path=?", "artist-2/", "album-2").Find(&album).Error) // album has cover + require.Equal(album.Cover, "cover.jpg") // album has cover + require.Equal(album.TagArtist.Name, "artist-2") // album artist var tracks []*db.Track - is.NoErr(m.DB().Where("album_id=?", album.ID).Find(&tracks).Error) // album has tracks - is.Equal(len(tracks), 3) // album has tracks + require.NoError(m.DB().Where("album_id=?", album.ID).Find(&tracks).Error) // album has tracks + require.Equal(len(tracks), 3) // album has tracks } func TestUpdatedTags(t *testing.T) { t.Parallel() - is := is.New(t) + require := require.New(t) m := mockfs.New(t) m.AddTrack("artist-10/album-10/track-10.flac") @@ -141,11 +141,11 @@ func TestUpdatedTags(t *testing.T) { m.ScanAndClean() var track db.Track - is.NoErr(m.DB().Preload("Album").Preload("Artist").Where("filename=?", "track-10.flac").Find(&track).Error) // track has tags - is.Equal(track.TagTrackArtist, "artist") // track has tags - is.Equal(track.Artist.Name, "album-artist") // track has tags - is.Equal(track.Album.TagTitle, "album") // track has tags - is.Equal(track.TagTitle, "title") // track has tags + require.NoError(m.DB().Preload("Album").Preload("Artist").Where("filename=?", "track-10.flac").Find(&track).Error) // track has tags + require.Equal(track.TagTrackArtist, "artist") // track has tags + require.Equal(track.Artist.Name, "album-artist") // track has tags + require.Equal(track.Album.TagTitle, "album") // track has tags + require.Equal(track.TagTitle, "title") // track has tags m.SetTags("artist-10/album-10/track-10.flac", func(tags *mockfs.Tags) error { tags.RawArtist = "artist-upd" @@ -158,18 +158,18 @@ func TestUpdatedTags(t *testing.T) { m.ScanAndClean() var updated db.Track - is.NoErr(m.DB().Preload("Album").Preload("Artist").Where("filename=?", "track-10.flac").Find(&updated).Error) // updated has tags - is.Equal(updated.ID, track.ID) // updated has tags - is.Equal(updated.TagTrackArtist, "artist-upd") // updated has tags - is.Equal(updated.Artist.Name, "album-artist-upd") // updated has tags - is.Equal(updated.Album.TagTitle, "album-upd") // updated has tags - is.Equal(updated.TagTitle, "title-upd") // updated has tags + require.NoError(m.DB().Preload("Album").Preload("Artist").Where("filename=?", "track-10.flac").Find(&updated).Error) // updated has tags + require.Equal(updated.ID, track.ID) // updated has tags + require.Equal(updated.TagTrackArtist, "artist-upd") // updated has tags + require.Equal(updated.Artist.Name, "album-artist-upd") // updated has tags + require.Equal(updated.Album.TagTitle, "album-upd") // updated has tags + require.Equal(updated.TagTitle, "title-upd") // updated has tags } // https://github.com/sentriz/gonic/issues/225 func TestUpdatedAlbumGenre(t *testing.T) { t.Parallel() - is := is.New(t) + require := require.New(t) m := mockfs.New(t) m.AddItems() @@ -181,8 +181,8 @@ func TestUpdatedAlbumGenre(t *testing.T) { m.ScanAndClean() var album db.Album - is.NoErr(m.DB().Preload("Genres").Where("left_path=? AND right_path=?", "artist-0/", "album-0").Find(&album).Error) - is.Equal(album.GenreStrings(), []string{"gen-a", "gen-b"}) + require.NoError(m.DB().Preload("Genres").Where("left_path=? AND right_path=?", "artist-0/", "album-0").Find(&album).Error) + require.Equal(album.GenreStrings(), []string{"gen-a", "gen-b"}) m.SetTags("artist-0/album-0/track-0.flac", func(tags *mockfs.Tags) error { tags.RawGenre = "gen-a-upd;gen-b-upd" @@ -192,46 +192,46 @@ func TestUpdatedAlbumGenre(t *testing.T) { m.ScanAndClean() var updated db.Album - is.NoErr(m.DB().Preload("Genres").Where("left_path=? AND right_path=?", "artist-0/", "album-0").Find(&updated).Error) - is.Equal(updated.GenreStrings(), []string{"gen-a-upd", "gen-b-upd"}) + require.NoError(m.DB().Preload("Genres").Where("left_path=? AND right_path=?", "artist-0/", "album-0").Find(&updated).Error) + require.Equal(updated.GenreStrings(), []string{"gen-a-upd", "gen-b-upd"}) } func TestDeleteAlbum(t *testing.T) { t.Parallel() - is := is.NewRelaxed(t) + assert := assert.New(t) m := mockfs.New(t) m.AddItems() m.ScanAndClean() - is.NoErr(m.DB().Where("left_path=? AND right_path=?", "artist-2/", "album-2").Find(&db.Album{}).Error) // album exists + assert.NoError(m.DB().Where("left_path=? AND right_path=?", "artist-2/", "album-2").Find(&db.Album{}).Error) // album exists m.RemoveAll("artist-2/album-2") m.ScanAndClean() - is.Equal(m.DB().Where("left_path=? AND right_path=?", "artist-2/", "album-2").Find(&db.Album{}).Error, gorm.ErrRecordNotFound) // album doesn't exist + assert.Equal(m.DB().Where("left_path=? AND right_path=?", "artist-2/", "album-2").Find(&db.Album{}).Error, gorm.ErrRecordNotFound) // album doesn't exist } func TestDeleteArtist(t *testing.T) { t.Parallel() - is := is.NewRelaxed(t) + assert := assert.New(t) m := mockfs.New(t) m.AddItems() m.ScanAndClean() - is.NoErr(m.DB().Where("left_path=? AND right_path=?", "artist-2/", "album-2").Find(&db.Album{}).Error) // album exists + assert.NoError(m.DB().Where("left_path=? AND right_path=?", "artist-2/", "album-2").Find(&db.Album{}).Error) // album exists m.RemoveAll("artist-2") m.ScanAndClean() - is.Equal(m.DB().Where("left_path=? AND right_path=?", "artist-2/", "album-2").Find(&db.Album{}).Error, gorm.ErrRecordNotFound) // album doesn't exist - is.Equal(m.DB().Where("name=?", "artist-2").Find(&db.Artist{}).Error, gorm.ErrRecordNotFound) // artist doesn't exist + assert.Equal(m.DB().Where("left_path=? AND right_path=?", "artist-2/", "album-2").Find(&db.Album{}).Error, gorm.ErrRecordNotFound) // album doesn't exist + assert.Equal(m.DB().Where("name=?", "artist-2").Find(&db.Artist{}).Error, gorm.ErrRecordNotFound) // artist doesn't exist } func TestGenres(t *testing.T) { t.Parallel() - is := is.New(t) + assert := assert.New(t) m := mockfs.New(t) albumGenre := func(artist, album, genre string) error { @@ -243,12 +243,10 @@ func TestGenres(t *testing.T) { Error } isAlbumGenre := func(artist, album, genreName string) { - is.Helper() - is.NoErr(albumGenre(artist, album, genreName)) + assert.NoError(albumGenre(artist, album, genreName)) } isAlbumGenreMissing := func(artist, album, genreName string) { - is.Helper() - is.Equal(albumGenre(artist, album, genreName), gorm.ErrRecordNotFound) + assert.Equal(albumGenre(artist, album, genreName), gorm.ErrRecordNotFound) } trackGenre := func(artist, album, filename, genreName string) error { @@ -261,24 +259,20 @@ func TestGenres(t *testing.T) { Error } isTrackGenre := func(artist, album, filename, genreName string) { - is.Helper() - is.NoErr(trackGenre(artist, album, filename, genreName)) + assert.NoError(trackGenre(artist, album, filename, genreName)) } isTrackGenreMissing := func(artist, album, filename, genreName string) { - is.Helper() - is.Equal(trackGenre(artist, album, filename, genreName), gorm.ErrRecordNotFound) + assert.Equal(trackGenre(artist, album, filename, genreName), gorm.ErrRecordNotFound) } genre := func(genre string) error { return m.DB().Where("name=?", genre).Find(&db.Genre{}).Error } isGenre := func(genreName string) { - is.Helper() - is.NoErr(genre(genreName)) + assert.NoError(genre(genreName)) } isGenreMissing := func(genreName string) { - is.Helper() - is.Equal(genre(genreName), gorm.ErrRecordNotFound) + assert.Equal(genre(genreName), gorm.ErrRecordNotFound) } m.AddItems() @@ -322,7 +316,7 @@ func TestGenres(t *testing.T) { func TestMultiFolders(t *testing.T) { t.Parallel() - is := is.New(t) + require := require.New(t) m := mockfs.NewWithDirs(t, []string{"m-1", "m-2", "m-3"}) m.AddItemsPrefix("m-1") @@ -331,13 +325,13 @@ func TestMultiFolders(t *testing.T) { m.ScanAndClean() var rootDirs []*db.Album - is.NoErr(m.DB().Where("parent_id IS NULL").Find(&rootDirs).Error) - is.Equal(len(rootDirs), 3) + require.NoError(m.DB().Where("parent_id IS NULL").Find(&rootDirs).Error) + require.Equal(len(rootDirs), 3) for i, r := range rootDirs { - is.Equal(r.RootDir, filepath.Join(m.TmpDir(), fmt.Sprintf("m-%d", i+1))) - is.Equal(r.ParentID, 0) - is.Equal(r.LeftPath, "") - is.Equal(r.RightPath, ".") + require.Equal(r.RootDir, filepath.Join(m.TmpDir(), fmt.Sprintf("m-%d", i+1))) + require.Equal(r.ParentID, 0) + require.Equal(r.LeftPath, "") + require.Equal(r.RightPath, ".") } m.AddCover("m-3/artist-0/album-0/cover.jpg") @@ -345,8 +339,7 @@ func TestMultiFolders(t *testing.T) { m.LogItems() checkCover := func(root string, q string) { - is.Helper() - is.NoErr(m.DB().Where(q, filepath.Join(m.TmpDir(), root)).Find(&db.Album{}).Error) + require.NoError(m.DB().Where(q, filepath.Join(m.TmpDir(), root)).Find(&db.Album{}).Error) } checkCover("m-1", "root_dir=? AND cover IS NULL") // mf 1 no cover @@ -356,7 +349,7 @@ func TestMultiFolders(t *testing.T) { func TestNewAlbumForExistingArtist(t *testing.T) { t.Parallel() - is := is.New(t) + require := require.New(t) m := mockfs.New(t) m.AddItems() @@ -366,8 +359,8 @@ func TestNewAlbumForExistingArtist(t *testing.T) { m.LogArtists() var artist db.Artist - is.NoErr(m.DB().Where("name=?", "artist-2").Find(&artist).Error) // find orig artist - is.True(artist.ID > 0) + require.NoError(m.DB().Where("name=?", "artist-2").Find(&artist).Error) // find orig artist + require.Greater(artist.ID, 0) for tr := 0; tr < 3; tr++ { m.AddTrack(fmt.Sprintf("artist-2/new-album/track-%d.mp3", tr)) @@ -381,17 +374,17 @@ func TestNewAlbumForExistingArtist(t *testing.T) { } var updated db.Artist - is.NoErr(m.DB().Where("name=?", "artist-2").Find(&updated).Error) // find updated artist - is.Equal(artist.ID, updated.ID) // find updated artist + require.NoError(m.DB().Where("name=?", "artist-2").Find(&updated).Error) // find updated artist + require.Equal(artist.ID, updated.ID) // find updated artist var all []*db.Artist - is.NoErr(m.DB().Find(&all).Error) // still only 3? - is.Equal(len(all), 3) // still only 3? + require.NoError(m.DB().Find(&all).Error) // still only 3? + require.Equal(len(all), 3) // still only 3? } func TestMultiFolderWithSharedArtist(t *testing.T) { t.Parallel() - is := is.New(t) + require := require.New(t) m := mockfs.NewWithDirs(t, []string{"m-0", "m-1"}) const artistName = "artist-a" @@ -424,21 +417,21 @@ func TestMultiFolderWithSharedArtist(t *testing.T) { } var artist db.Artist - is.NoErr(m.DB().Where("name=?", artistName).Preload("Albums", sq).First(&artist).Error) - is.Equal(artist.Name, artistName) - is.Equal(len(artist.Albums), 2) + require.NoError(m.DB().Where("name=?", artistName).Preload("Albums", sq).First(&artist).Error) + require.Equal(artist.Name, artistName) + require.Equal(len(artist.Albums), 2) for _, album := range artist.Albums { - is.True(album.TagYear > 0) - is.Equal(album.TagArtistID, artist.ID) - is.True(album.ChildCount > 0) - is.True(album.Duration > 0) + require.Greater(album.TagYear, 0) + require.Equal(album.TagArtistID, artist.ID) + require.Greater(album.ChildCount, 0) + require.Greater(album.Duration, 0) } } func TestSymlinkedAlbum(t *testing.T) { t.Parallel() - is := is.New(t) + require := require.New(t) m := mockfs.NewWithDirs(t, []string{"scan"}) m.AddItemsPrefixWithCovers("temp") @@ -452,20 +445,20 @@ func TestSymlinkedAlbum(t *testing.T) { m.LogAlbums() var track db.Track - is.NoErr(m.DB().Preload("Album.Parent").Find(&track).Error) // track exists - is.True(track.Album != nil) // track has album - is.True(track.Album.Cover != "") // album has cover - is.Equal(track.Album.Parent.RightPath, "artist-sym") // artist is sym + require.NoError(m.DB().Preload("Album.Parent").Find(&track).Error) // track exists + require.NotNil(track.Album) // track has album + require.NotZero(track.Album.Cover) // album has cover + require.Equal(track.Album.Parent.RightPath, "artist-sym") // artist is sym info, err := os.Stat(track.AbsPath()) - is.NoErr(err) // track resolves - is.True(!info.IsDir()) // track resolves - is.True(!info.ModTime().IsZero()) // track resolves + require.NoError(err) // track resolves + require.False(info.IsDir()) // track resolves + require.NotZero(info.ModTime()) // track resolves } func TestSymlinkedSubdiscs(t *testing.T) { t.Parallel() - is := is.New(t) + require := require.New(t) m := mockfs.NewWithDirs(t, []string{"scan"}) addItem := func(prefix, artist, album, disc, track string) { @@ -496,19 +489,19 @@ func TestSymlinkedSubdiscs(t *testing.T) { m.LogAlbums() var track db.Track - is.NoErr(m.DB().Preload("Album.Parent").Find(&track).Error) // track exists - is.True(track.Album != nil) // track has album - is.Equal(track.Album.Parent.RightPath, "album-sym") // artist is sym + require.NoError(m.DB().Preload("Album.Parent").Find(&track).Error) // track exists + require.NotNil(track.Album) // track has album + require.Equal(track.Album.Parent.RightPath, "album-sym") // artist is sym info, err := os.Stat(track.AbsPath()) - is.NoErr(err) // track resolves - is.True(!info.IsDir()) // track resolves - is.True(!info.ModTime().IsZero()) // track resolves + require.NoError(err) // track resolves + require.False(info.IsDir()) // track resolves + require.NotZero(info.ModTime()) // track resolves } func TestArtistHasCover(t *testing.T) { t.Parallel() - is := is.New(t) + require := require.New(t) m := mockfs.New(t) m.AddItemsWithCovers() @@ -516,17 +509,17 @@ func TestArtistHasCover(t *testing.T) { m.ScanAndClean() var artistWith db.Artist - is.NoErr(m.DB().Where("name=?", "artist-2").First(&artistWith).Error) - is.Equal(artistWith.Cover, "artist.png") + require.NoError(m.DB().Where("name=?", "artist-2").First(&artistWith).Error) + require.Equal(artistWith.Cover, "artist.png") var artistWithout db.Artist - is.NoErr(m.DB().Where("name=?", "artist-0").First(&artistWithout).Error) - is.Equal(artistWithout.Cover, "") + require.NoError(m.DB().Where("name=?", "artist-0").First(&artistWithout).Error) + require.Equal(artistWithout.Cover, "") } func TestTagErrors(t *testing.T) { t.Parallel() - is := is.New(t) + require := require.New(t) m := mockfs.New(t) m.AddItemsWithCovers() @@ -539,22 +532,22 @@ func TestTagErrors(t *testing.T) { var errs *multierr.Err ctx, err := m.ScanAndCleanErr() - is.True(errors.As(err, &errs)) - is.Equal(errs.Len(), 2) // we have 2 dir errors - is.Equal(ctx.SeenTracks(), m.NumTracks()-(3*2)) // we saw all tracks bar 2 album contents - is.Equal(ctx.SeenTracksNew(), m.NumTracks()-(3*2)) // we have all tracks bar 2 album contents + require.ErrorAs(err, &errs) + require.Equal(errs.Len(), 2) // we have 2 dir errors + require.Equal(ctx.SeenTracks(), m.NumTracks()-(3*2)) // we saw all tracks bar 2 album contents + require.Equal(ctx.SeenTracksNew(), m.NumTracks()-(3*2)) // we have all tracks bar 2 album contents ctx, err = m.ScanAndCleanErr() - is.True(errors.As(err, &errs)) - is.Equal(errs.Len(), 2) // we have 2 dir errors - is.Equal(ctx.SeenTracks(), m.NumTracks()-(3*2)) // we saw all tracks bar 2 album contents - is.Equal(ctx.SeenTracksNew(), 0) // we have no new tracks + require.ErrorAs(err, &errs) + require.Equal(errs.Len(), 2) // we have 2 dir errors + require.Equal(ctx.SeenTracks(), m.NumTracks()-(3*2)) // we saw all tracks bar 2 album contents + require.Equal(ctx.SeenTracksNew(), 0) // we have no new tracks } // https://github.com/sentriz/gonic/issues/185#issuecomment-1050092128 func TestCompilationAlbumWithoutAlbumArtist(t *testing.T) { t.Parallel() - is := is.New(t) + require := require.New(t) m := mockfs.New(t) const pathArtist = "various-artists" @@ -577,40 +570,40 @@ func TestCompilationAlbumWithoutAlbumArtist(t *testing.T) { m.ScanAndClean() var trackCount int - is.NoErr(m.DB().Model(&db.Track{}).Count(&trackCount).Error) - is.Equal(trackCount, 5) + require.NoError(m.DB().Model(&db.Track{}).Count(&trackCount).Error) + require.Equal(trackCount, 5) var artists []*db.Artist - is.NoErr(m.DB().Preload("Albums").Find(&artists).Error) - is.Equal(len(artists), 1) // we only have one album artist - is.Equal(artists[0].Name, "artist 0") // it came from the first track's fallback to artist tag - is.Equal(len(artists[0].Albums), 1) // the artist has one album - is.Equal(artists[0].Albums[0].RightPath, pathAlbum) - is.Equal(artists[0].Albums[0].LeftPath, pathArtist+"/") + require.NoError(m.DB().Preload("Albums").Find(&artists).Error) + require.Equal(len(artists), 1) // we only have one album artist + require.Equal(artists[0].Name, "artist 0") // it came from the first track's fallback to artist tag + require.Equal(len(artists[0].Albums), 1) // the artist has one album + require.Equal(artists[0].Albums[0].RightPath, pathAlbum) + require.Equal(artists[0].Albums[0].LeftPath, pathArtist+"/") } func TestIncrementalScanNoChangeNoUpdatedAt(t *testing.T) { t.Parallel() - is := is.New(t) + require := require.New(t) m := mockfs.New(t) m.AddItems() m.ScanAndClean() var albumA db.Album - is.NoErr(m.DB().Where("tag_artist_id NOT NULL").Order("updated_at DESC").Find(&albumA).Error) + require.NoError(m.DB().Where("tag_artist_id NOT NULL").Order("updated_at DESC").Find(&albumA).Error) m.ScanAndClean() var albumB db.Album - is.NoErr(m.DB().Where("tag_artist_id NOT NULL").Order("updated_at DESC").Find(&albumB).Error) + require.NoError(m.DB().Where("tag_artist_id NOT NULL").Order("updated_at DESC").Find(&albumB).Error) - is.Equal(albumA.UpdatedAt, albumB.UpdatedAt) + require.Equal(albumA.UpdatedAt, albumB.UpdatedAt) } // https://github.com/sentriz/gonic/issues/230 func TestAlbumAndArtistSameNameWeirdness(t *testing.T) { t.Parallel() - is := is.NewRelaxed(t) + assert := assert.New(t) m := mockfs.New(t) const name = "same" @@ -628,6 +621,6 @@ func TestAlbumAndArtistSameNameWeirdness(t *testing.T) { m.ScanAndClean() var albums []*db.Album - is.NoErr(m.DB().Find(&albums).Error) - is.Equal(len(albums), 5) // root, 2 artists, 2 albums + assert.NoError(m.DB().Find(&albums).Error) + assert.Equal(len(albums), 5) // root, 2 artists, 2 albums } diff --git a/scrobble/listenbrainz/listenbrainz_test.go b/scrobble/listenbrainz/listenbrainz_test.go index a375d82..eab9200 100644 --- a/scrobble/listenbrainz/listenbrainz_test.go +++ b/scrobble/listenbrainz/listenbrainz_test.go @@ -11,7 +11,7 @@ import ( "testing" "time" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "go.senan.xyz/gonic/db" ) @@ -36,7 +36,7 @@ var submitListensResponse string func TestScrobble(t *testing.T) { t.Parallel() - assert := assert.New(t) + assert := require.New(t) // arrange client, close := httpClientMock(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { @@ -76,14 +76,14 @@ func TestScrobble(t *testing.T) { func TestScrobbleUnauthorized(t *testing.T) { t.Parallel() - assert := assert.New(t) + require := require.New(t) // arrange client, close := httpClientMock(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - assert.Equal(http.MethodPost, r.Method) - assert.Equal("/1/submit-listens", r.URL.Path) - assert.Equal("application/json", r.Header.Get("Content-Type")) - assert.Equal("Token token1", r.Header.Get("Authorization")) + require.Equal(http.MethodPost, r.Method) + require.Equal("/1/submit-listens", r.URL.Path) + require.Equal("application/json", r.Header.Get("Content-Type")) + require.Equal("Token token1", r.Header.Get("Authorization")) w.WriteHeader(http.StatusUnauthorized) w.Write([]byte(`{"code": 401, "error": "Invalid authorization token."}`)) @@ -108,19 +108,19 @@ func TestScrobbleUnauthorized(t *testing.T) { }, time.Now(), true) // assert - assert.ErrorIs(err, ErrListenBrainz) + require.ErrorIs(err, ErrListenBrainz) } func TestScrobbleServerError(t *testing.T) { t.Parallel() - assert := assert.New(t) + require := require.New(t) // arrange client, close := httpClientMock(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - assert.Equal(http.MethodPost, r.Method) - assert.Equal("/1/submit-listens", r.URL.Path) - assert.Equal("application/json", r.Header.Get("Content-Type")) - assert.Equal("Token token1", r.Header.Get("Authorization")) + require.Equal(http.MethodPost, r.Method) + require.Equal("/1/submit-listens", r.URL.Path) + require.Equal("application/json", r.Header.Get("Content-Type")) + require.Equal("Token token1", r.Header.Get("Authorization")) w.WriteHeader(http.StatusInternalServerError) })) @@ -144,5 +144,5 @@ func TestScrobbleServerError(t *testing.T) { }, time.Now(), true) // assert - assert.ErrorIs(err, ErrListenBrainz) + require.ErrorIs(err, ErrListenBrainz) }