Test and document Restorer.VerifyFiles

This commit is contained in:
greatroar 2020-02-20 11:56:33 +01:00 committed by Michael Eischer
parent ef5672a902
commit 973fa921cb
2 changed files with 12 additions and 1 deletions

View File

@ -310,7 +310,10 @@ func (res *Restorer) Snapshot() *restic.Snapshot {
return res.sn return res.sn
} }
// VerifyFiles reads all snapshot files and verifies their contents // VerifyFiles checks whether all regular files in the snapshot res.sn
// have been successfully written to dst. It stops when it encounters an
// error. It returns that error and the number of files it has checked,
// including the file(s) that caused errors.
func (res *Restorer) VerifyFiles(ctx context.Context, dst string) (int, error) { func (res *Restorer) VerifyFiles(ctx context.Context, dst string) (int, error) {
// TODO multithreaded? // TODO multithreaded?

View File

@ -367,6 +367,11 @@ func TestRestorer(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
if len(test.ErrorsMust)+len(test.ErrorsMay) == 0 {
_, err = res.VerifyFiles(ctx, tempdir)
rtest.OK(t, err)
}
for location, expectedErrors := range test.ErrorsMust { for location, expectedErrors := range test.ErrorsMust {
actualErrors, ok := errors[location] actualErrors, ok := errors[location]
if !ok { if !ok {
@ -465,6 +470,9 @@ func TestRestorerRelative(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
nverified, err := res.VerifyFiles(ctx, "restore")
rtest.OK(t, err)
rtest.Equals(t, len(test.Files), nverified)
for filename, err := range errors { for filename, err := range errors {
t.Errorf("unexpected error for %v found: %v", filename, err) t.Errorf("unexpected error for %v found: %v", filename, err)