fix(netxlite): clearly document quirk and make code robust (#468)
This quirk really saddens me. It's a piece of tech debt we're carrying over from the original netx implementation. We cannot remove it _until_ we have legacy netx code around. The second best thing we can do is to clearly move this code in a place where it's clear it's a quirk and write and use some extra code that makes sure the quirk's assumptions are always met. Sigh. See https://github.com/ooni/probe/issues/1591
This commit is contained in:
parent
ba5bae4769
commit
aa77867145
6 changed files with 153 additions and 77 deletions
|
|
@ -1,52 +1,12 @@
|
|||
package netxlite
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"net"
|
||||
"testing"
|
||||
|
||||
"github.com/ooni/probe-cli/v3/internal/errorsx"
|
||||
"github.com/ooni/probe-cli/v3/internal/netxlite/mocks"
|
||||
)
|
||||
|
||||
func TestReduceErrors(t *testing.T) {
|
||||
t.Run("no errors", func(t *testing.T) {
|
||||
result := reduceErrors(nil)
|
||||
if result != nil {
|
||||
t.Fatal("wrong result")
|
||||
}
|
||||
})
|
||||
t.Run("single error", func(t *testing.T) {
|
||||
err := errors.New("mocked error")
|
||||
result := reduceErrors([]error{err})
|
||||
if result != err {
|
||||
t.Fatal("wrong result")
|
||||
}
|
||||
})
|
||||
t.Run("multiple errors", func(t *testing.T) {
|
||||
err1 := errors.New("mocked error #1")
|
||||
err2 := errors.New("mocked error #2")
|
||||
result := reduceErrors([]error{err1, err2})
|
||||
if result.Error() != "mocked error #1" {
|
||||
t.Fatal("wrong result")
|
||||
}
|
||||
})
|
||||
t.Run("multiple errors with meaningful ones", func(t *testing.T) {
|
||||
err1 := errors.New("mocked error #1")
|
||||
err2 := &errorsx.ErrWrapper{
|
||||
Failure: "unknown_failure: antani",
|
||||
}
|
||||
err3 := &errorsx.ErrWrapper{
|
||||
Failure: errorsx.FailureConnectionRefused,
|
||||
}
|
||||
err4 := errors.New("mocked error #3")
|
||||
result := reduceErrors([]error{err1, err2, err3, err4})
|
||||
if result.Error() != errorsx.FailureConnectionRefused {
|
||||
t.Fatal("wrong result")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func TestResolverLegacyAdapterWithCompatibleType(t *testing.T) {
|
||||
var called bool
|
||||
r := NewResolverLegacyAdapter(&mocks.Resolver{
|
||||
|
|
|
|||
Loading…
Reference in a new issue