From e2af5890f39e427bb51e92e699f87d5632c42577 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 10 Apr 2017 23:21:04 +0200 Subject: [PATCH] backend: Add test for listing files with layouts --- src/restic/backend/local/layout_test.go | 47 +++++++++++++++++++++++-- src/restic/backend/sftp/layout_test.go | 47 +++++++++++++++++++++++-- 2 files changed, 88 insertions(+), 6 deletions(-) diff --git a/src/restic/backend/local/layout_test.go b/src/restic/backend/local/layout_test.go index 805320206..da0b0bfc8 100644 --- a/src/restic/backend/local/layout_test.go +++ b/src/restic/backend/local/layout_test.go @@ -2,6 +2,7 @@ package local import ( "path/filepath" + "restic" . "restic/test" "testing" ) @@ -14,10 +15,23 @@ func TestLayout(t *testing.T) { filename string layout string failureExpected bool + datafiles map[string]bool }{ - {"repo-layout-local.tar.gz", "", false}, - {"repo-layout-cloud.tar.gz", "", false}, - {"repo-layout-s3-old.tar.gz", "", false}, + {"repo-layout-local.tar.gz", "", false, map[string]bool{ + "aa464e9fd598fe4202492ee317ffa728e82fa83a1de1a61996e5bd2d6651646c": false, + "fc919a3b421850f6fa66ad22ebcf91e433e79ffef25becf8aef7c7b1eca91683": false, + "c089d62788da14f8b7cbf77188305c0874906f0b73d3fce5a8869050e8d0c0e1": false, + }}, + {"repo-layout-cloud.tar.gz", "", false, map[string]bool{ + "fc919a3b421850f6fa66ad22ebcf91e433e79ffef25becf8aef7c7b1eca91683": false, + "c089d62788da14f8b7cbf77188305c0874906f0b73d3fce5a8869050e8d0c0e1": false, + "aa464e9fd598fe4202492ee317ffa728e82fa83a1de1a61996e5bd2d6651646c": false, + }}, + {"repo-layout-s3-old.tar.gz", "", false, map[string]bool{ + "fc919a3b421850f6fa66ad22ebcf91e433e79ffef25becf8aef7c7b1eca91683": false, + "c089d62788da14f8b7cbf77188305c0874906f0b73d3fce5a8869050e8d0c0e1": false, + "aa464e9fd598fe4202492ee317ffa728e82fa83a1de1a61996e5bd2d6651646c": false, + }}, } for _, test := range tests { @@ -37,6 +51,33 @@ func TestLayout(t *testing.T) { t.Fatalf("Open() returned nil but no error") } + datafiles := make(map[string]bool) + for id := range be.List(restic.DataFile, nil) { + datafiles[id] = false + } + + if len(datafiles) == 0 { + t.Errorf("List() returned zero data files") + } + + for id := range test.datafiles { + if _, ok := datafiles[id]; !ok { + t.Errorf("datafile with id %v not found", id) + } + + datafiles[id] = true + } + + for id, v := range datafiles { + if !v { + t.Errorf("unexpected id %v found", id) + } + } + + if err = be.Close(); err != nil { + t.Errorf("Close() returned error %v", err) + } + RemoveAll(t, filepath.Join(path, "repo")) }) } diff --git a/src/restic/backend/sftp/layout_test.go b/src/restic/backend/sftp/layout_test.go index cd2b18783..0159976fe 100644 --- a/src/restic/backend/sftp/layout_test.go +++ b/src/restic/backend/sftp/layout_test.go @@ -3,6 +3,7 @@ package sftp_test import ( "fmt" "path/filepath" + "restic" "restic/backend/sftp" . "restic/test" "testing" @@ -20,10 +21,23 @@ func TestLayout(t *testing.T) { filename string layout string failureExpected bool + datafiles map[string]bool }{ - {"repo-layout-local.tar.gz", "", false}, - {"repo-layout-cloud.tar.gz", "", false}, - {"repo-layout-s3-old.tar.gz", "", false}, + {"repo-layout-local.tar.gz", "", false, map[string]bool{ + "aa464e9fd598fe4202492ee317ffa728e82fa83a1de1a61996e5bd2d6651646c": false, + "fc919a3b421850f6fa66ad22ebcf91e433e79ffef25becf8aef7c7b1eca91683": false, + "c089d62788da14f8b7cbf77188305c0874906f0b73d3fce5a8869050e8d0c0e1": false, + }}, + {"repo-layout-cloud.tar.gz", "", false, map[string]bool{ + "fc919a3b421850f6fa66ad22ebcf91e433e79ffef25becf8aef7c7b1eca91683": false, + "c089d62788da14f8b7cbf77188305c0874906f0b73d3fce5a8869050e8d0c0e1": false, + "aa464e9fd598fe4202492ee317ffa728e82fa83a1de1a61996e5bd2d6651646c": false, + }}, + {"repo-layout-s3-old.tar.gz", "", false, map[string]bool{ + "fc919a3b421850f6fa66ad22ebcf91e433e79ffef25becf8aef7c7b1eca91683": false, + "c089d62788da14f8b7cbf77188305c0874906f0b73d3fce5a8869050e8d0c0e1": false, + "aa464e9fd598fe4202492ee317ffa728e82fa83a1de1a61996e5bd2d6651646c": false, + }}, } for _, test := range tests { @@ -44,6 +58,33 @@ func TestLayout(t *testing.T) { t.Fatalf("Open() returned nil but no error") } + datafiles := make(map[string]bool) + for id := range be.List(restic.DataFile, nil) { + datafiles[id] = false + } + + if len(datafiles) == 0 { + t.Errorf("List() returned zero data files") + } + + for id := range test.datafiles { + if _, ok := datafiles[id]; !ok { + t.Errorf("datafile with id %v not found", id) + } + + datafiles[id] = true + } + + for id, v := range datafiles { + if !v { + t.Errorf("unexpected id %v found", id) + } + } + + if err = be.Close(); err != nil { + t.Errorf("Close() returned error %v", err) + } + RemoveAll(t, filepath.Join(path, "repo")) }) }