diff --git a/cmd/restic/lock_test.go b/cmd/restic/lock_test.go index cb386312c..1ad55bb4b 100644 --- a/cmd/restic/lock_test.go +++ b/cmd/restic/lock_test.go @@ -3,6 +3,7 @@ package main import ( "context" "fmt" + "runtime" "strings" "testing" "time" @@ -138,7 +139,9 @@ type loggingBackend struct { func (b *loggingBackend) Save(ctx context.Context, h restic.Handle, rd restic.RewindReader) error { b.t.Logf("save %v @ %v", h, time.Now()) - return b.Backend.Save(ctx, h, rd) + err := b.Backend.Save(ctx, h, rd) + b.t.Logf("save finished %v @ %v", h, time.Now()) + return err } func TestLockSuccessfulRefresh(t *testing.T) { @@ -163,7 +166,15 @@ func TestLockSuccessfulRefresh(t *testing.T) { select { case <-wrappedCtx.Done(): - t.Fatal("lock refresh failed") + // don't call t.Fatal to allow the lock to be properly cleaned up + t.Error("lock refresh failed", time.Now()) + + // Dump full stacktrace + buf := make([]byte, 1024*1024) + n := runtime.Stack(buf, true) + buf = buf[:n] + t.Log(string(buf)) + case <-time.After(2 * refreshabilityTimeout): // expected lock refresh to work }