From 578d00666c3d7da8dbd5498599c3908f91d953da Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Thu, 7 Feb 2019 11:29:52 +0000 Subject: [PATCH] test_all: make -clean not give up on the first error --- fstest/test_all/clean.go | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/fstest/test_all/clean.go b/fstest/test_all/clean.go index e18d02eb6..2b0f1b9b4 100644 --- a/fstest/test_all/clean.go +++ b/fstest/test_all/clean.go @@ -11,12 +11,13 @@ import ( "github.com/ncw/rclone/fs" "github.com/ncw/rclone/fs/list" "github.com/ncw/rclone/fs/operations" + "github.com/pkg/errors" ) // MatchTestRemote matches the remote names used for testing (copied // from fstest/fstest.go so we don't have to import that and get all // its flags) -var MatchTestRemote = regexp.MustCompile(`^rclone-test-[abcdefghijklmnopqrstuvwxyz0123456789]{24}$`) +var MatchTestRemote = regexp.MustCompile(`^rclone-test-[abcdefghijklmnopqrstuvwxyz0123456789]{24}(_segments)?$`) // cleanFs runs a single clean fs for left over directories func cleanFs(remote string) error { @@ -28,7 +29,8 @@ func cleanFs(remote string) error { if err != nil { return err } - return entries.ForDirError(func(dir fs.Directory) error { + var lastErr error + err = entries.ForDirError(func(dir fs.Directory) error { dirPath := dir.Remote() fullPath := remote + dirPath if MatchTestRemote.MatchString(dirPath) { @@ -39,12 +41,25 @@ func cleanFs(remote string) error { log.Printf("Purging %s", fullPath) dir, err := fs.NewFs(fullPath) if err != nil { - return err + err = errors.Wrap(err, "NewFs failed") + lastErr = err + fs.Errorf(fullPath, "%v", err) + return nil + } + err = operations.Purge(dir, "") + if err != nil { + err = errors.Wrap(err, "Purge failed") + lastErr = err + fs.Errorf(dir, "%v", err) + return nil } - return operations.Purge(dir, "") } return nil }) + if err != nil { + return err + } + return lastErr } // cleanRemotes cleans the list of remotes passed in