diff --git a/backend/local/local.go b/backend/local/local.go index 1e7ffedf2..487397353 100644 --- a/backend/local/local.go +++ b/backend/local/local.go @@ -57,7 +57,7 @@ func Create(dir string) (*Local, error) { } // test if config file already exists - _, err := os.Lstat(backend.Paths.Config) + _, err := os.Lstat(filepath.Join(dir, backend.Paths.Config)) if err == nil { return nil, errors.New("config file already exists") } diff --git a/backend/local_test.go b/backend/local_test.go index 24c7091bd..462c4c3d6 100644 --- a/backend/local_test.go +++ b/backend/local_test.go @@ -5,6 +5,7 @@ import ( "io/ioutil" "testing" + "github.com/restic/restic/backend" "github.com/restic/restic/backend/local" . "github.com/restic/restic/test" ) @@ -46,11 +47,13 @@ func TestLocalBackendCreationFailures(t *testing.T) { b := setupLocalBackend(t) defer teardownLocalBackend(t, b) + // create a fake config file + blob, err := b.Create() + OK(t, err) + fmt.Fprintf(blob, "config\n") + OK(t, blob.Finalize(backend.Config, "")) + // test failure to create a new repository at the same location b2, err := local.Create(b.Location()) Assert(t, err != nil && b2 == nil, fmt.Sprintf("creating a repository at %s for the second time should have failed", b.Location())) - - // test failure to create a new repository at the same location without a config file - b2, err = local.Create(b.Location()) - Assert(t, err != nil && b2 == nil, fmt.Sprintf("creating a repository at %s for the second time should have failed", b.Location())) } diff --git a/backend/sftp/sftp.go b/backend/sftp/sftp.go index 23db7011e..13bd54340 100644 --- a/backend/sftp/sftp.go +++ b/backend/sftp/sftp.go @@ -110,7 +110,7 @@ func Create(dir string, program string, args ...string) (*SFTP, error) { } // test if config file already exists - _, err = sftp.c.Lstat(backend.Paths.Config) + _, err = sftp.c.Lstat(filepath.Join(dir, backend.Paths.Config)) if err == nil { return nil, errors.New("config file already exists") }