restic/internal/repository/index/index_parallel_test.go

49 lines
1.3 KiB
Go
Raw Normal View History

package index_test
2020-12-18 19:25:30 +00:00
import (
"context"
"path/filepath"
2020-12-18 19:25:30 +00:00
"testing"
"github.com/restic/restic/internal/errors"
"github.com/restic/restic/internal/repository"
2024-05-24 21:06:44 +00:00
"github.com/restic/restic/internal/repository/index"
2020-12-18 19:25:30 +00:00
"github.com/restic/restic/internal/restic"
rtest "github.com/restic/restic/internal/test"
)
2024-05-24 21:06:44 +00:00
var repoFixture = filepath.Join("..", "testdata", "test-repo.tar.gz")
2020-12-18 19:25:30 +00:00
func TestRepositoryForAllIndexes(t *testing.T) {
repo, _, cleanup := repository.TestFromFixture(t, repoFixture)
2020-12-18 19:25:30 +00:00
defer cleanup()
expectedIndexIDs := restic.NewIDSet()
rtest.OK(t, repo.List(context.TODO(), restic.IndexFile, func(id restic.ID, size int64) error {
expectedIndexIDs.Insert(id)
return nil
}))
// check that all expected indexes are loaded without errors
indexIDs := restic.NewIDSet()
var indexErr error
rtest.OK(t, index.ForAllIndexes(context.TODO(), repo, repo, func(id restic.ID, index *index.Index, oldFormat bool, err error) error {
2020-12-18 19:25:30 +00:00
if err != nil {
indexErr = err
}
indexIDs.Insert(id)
return nil
}))
rtest.OK(t, indexErr)
rtest.Equals(t, expectedIndexIDs, indexIDs)
// must failed with the returned error
iterErr := errors.New("error to pass upwards")
err := index.ForAllIndexes(context.TODO(), repo, repo, func(id restic.ID, index *index.Index, oldFormat bool, err error) error {
2020-12-18 19:25:30 +00:00
return iterErr
})
rtest.Equals(t, iterErr, err)
}