restic/internal/errors/fatal_test.go

43 lines
1 KiB
Go
Raw Normal View History

package errors_test
import (
"testing"
"github.com/restic/restic/internal/errors"
)
func TestFatal(t *testing.T) {
for _, v := range []struct {
err error
expected bool
}{
{errors.Fatal("broken"), true},
{errors.Fatalf("broken %d", 42), true},
{errors.New("error"), false},
} {
if errors.IsFatal(v.err) != v.expected {
t.Fatalf("IsFatal for %q, expected: %v, got: %v", v.err, v.expected, errors.IsFatal(v.err))
}
}
}
func TestFatalErrorWrapping(t *testing.T) {
underlying := errors.New("underlying error")
fatal := errors.Fatalf("fatal error: %v", underlying)
// Test that the fatal error message is preserved
if fatal.Error() != "Fatal: fatal error: underlying error" {
t.Errorf("unexpected error message: %v", fatal.Error())
}
// Test that we can unwrap to get the underlying error
if !errors.Is(fatal, underlying) {
t.Error("fatal error should wrap the underlying error")
}
// Test that the error is marked as fatal
if !errors.IsFatal(fatal) {
t.Error("error should be marked as fatal")
}
}