/
githubmirror
/
rclone
Обзор
Документация
Войти
/
githubmirror
/
rclone
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
fs/fserrors/error_syscall_test.go
73 строки
2 KB
vastonus
build: remove obsolete build tag
21 окт 2025, 20:56
Не верифицирован
21 окт 2025, 20:56
c4eef30
Код
Авторство
О чём код?
//go:build !plan9 package fserrors import ( "fmt" "net" "net/url" "os" "syscall" "testing" "github.com/stretchr/testify/assert" ) // make a plausible network error with the underlying errno func makeNetErr(errno syscall.Errno) error { return &net.OpError{ Op: "write", Net: "tcp", Source: &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: 123}, Addr: &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: 8080}, Err: &os.SyscallError{ Syscall: "write", Err: errno, }, } } func TestWithSyscallCause(t *testing.T) { for i, test := range []struct { err error wantRetriable bool wantErr error }{ {makeNetErr(syscall.EAGAIN), true, syscall.EAGAIN}, {makeNetErr(syscall.Errno(123123123)), false, syscall.Errno(123123123)}, } { gotRetriable, gotErr := Cause(test.err) what := fmt.Sprintf("test #%d: %v", i, test.err) assert.Equal(t, test.wantErr, gotErr, what) assert.Equal(t, test.wantRetriable, gotRetriable, what) } } func TestWithSyscallShouldRetry(t *testing.T) { for i, test := range []struct { err error want bool }{ {makeNetErr(syscall.EAGAIN), true}, {makeNetErr(syscall.Errno(123123123)), false}, { wrap(&url.Error{ Op: "post", URL: "http://localhost/", Err: makeNetErr(syscall.EPIPE), }, "potato error"), true, }, { wrap(&url.Error{ Op: "post", URL: "http://localhost/", Err: makeNetErr(syscall.Errno(123123123)), }, "listing error"), false, }, } { got := ShouldRetry(test.err) assert.Equal(t, test.want, got, fmt.Sprintf("test #%d: %v", i, test.err)) } }