delete multierr

This commit is contained in:
sentriz
2023-09-14 01:09:57 +01:00
parent 12c31cd334
commit 0eb5add1a0
5 changed files with 23 additions and 62 deletions

View File

@@ -20,7 +20,6 @@ import (
"go.senan.xyz/gonic/db"
"go.senan.xyz/gonic/mime"
"go.senan.xyz/gonic/multierr"
"go.senan.xyz/gonic/scanner/tags"
)
@@ -81,7 +80,6 @@ func (s *Scanner) ScanAndClean(opts ScanOptions) (*Context, error) {
start := time.Now()
c := &Context{
errs: &multierr.Err{},
seenTracks: map[int]struct{}{},
seenAlbums: map[int]struct{}{},
isFull: opts.IsFull,
@@ -90,7 +88,7 @@ func (s *Scanner) ScanAndClean(opts ScanOptions) (*Context, error) {
log.Println("starting scan")
defer func() {
log.Printf("finished scan in %s, +%d/%d tracks (%d err)\n",
durSince(start), c.SeenTracksNew(), c.SeenTracks(), c.errs.Len())
durSince(start), c.SeenTracksNew(), c.SeenTracks(), len(c.errs))
}()
for _, dir := range s.musicDirs {
@@ -119,11 +117,7 @@ func (s *Scanner) ScanAndClean(opts ScanOptions) (*Context, error) {
return nil, fmt.Errorf("set scan time: %w", err)
}
if c.errs.Len() > 0 {
return c, c.errs
}
return c, nil
return c, errors.Join(c.errs...)
}
func (s *Scanner) ExecuteWatch() error {
@@ -159,7 +153,6 @@ func (s *Scanner) ExecuteWatch() error {
}
for dirName := range scanList {
c := &Context{
errs: &multierr.Err{},
seenTracks: map[int]struct{}{},
seenAlbums: map[int]struct{}{},
isFull: false,
@@ -240,7 +233,7 @@ func (s *Scanner) watchCallback(dir string, absPath string, d fs.DirEntry, err e
func (s *Scanner) scanCallback(c *Context, dir string, absPath string, d fs.DirEntry, err error) error {
if err != nil {
c.errs.Add(err)
c.errs = append(c.errs, err)
return nil
}
if dir == absPath {
@@ -268,7 +261,7 @@ func (s *Scanner) scanCallback(c *Context, dir string, absPath string, d fs.DirE
tx := s.db.Begin()
if err := s.scanDir(tx, c, dir, absPath); err != nil {
c.errs.Add(fmt.Errorf("%q: %w", absPath, err))
c.errs = append(c.errs, fmt.Errorf("%q: %w", absPath, err))
tx.Rollback()
return nil
}
@@ -648,7 +641,7 @@ func durSince(t time.Time) time.Duration {
}
type Context struct {
errs *multierr.Err
errs []error
isFull bool
seenTracks map[int]struct{}

View File

@@ -16,7 +16,6 @@ import (
"go.senan.xyz/gonic/db"
"go.senan.xyz/gonic/mockfs"
"go.senan.xyz/gonic/multierr"
"go.senan.xyz/gonic/scanner"
)
@@ -523,16 +522,20 @@ func TestTagErrors(t *testing.T) {
return scanner.ErrReadingTags
})
var errs *multierr.Err
ctx, err := m.ScanAndCleanErr()
errs, ok := err.(interface{ Unwrap() []error })
require.True(ok)
require.ErrorAs(err, &errs)
require.Equal(2, errs.Len()) // we have 2 dir errors
require.Equal(2, len(errs.Unwrap())) // we have 2 dir errors
require.Equal(m.NumTracks()-(3*2), ctx.SeenTracks()) // we saw all tracks bar 2 album contents
require.Equal(m.NumTracks()-(3*2), ctx.SeenTracksNew()) // we have all tracks bar 2 album contents
ctx, err = m.ScanAndCleanErr()
require.ErrorAs(err, &errs)
require.Equal(2, errs.Len()) // we have 2 dir errors
errs, ok = err.(interface{ Unwrap() []error })
require.True(ok)
require.Equal(2, len(errs.Unwrap())) // we have 2 dir errors
require.Equal(m.NumTracks()-(3*2), ctx.SeenTracks()) // we saw all tracks bar 2 album contents
require.Equal(0, ctx.SeenTracksNew()) // we have no new tracks
}