mirror of
https://github.com/restic/restic.git
synced 2025-10-19 23:53:21 +00:00
42 lines
1 KiB
Go
42 lines
1 KiB
Go
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")
|
|
}
|
|
}
|