Skip to content

Commit

Permalink
remove testify
Browse files Browse the repository at this point in the history
  • Loading branch information
Eun committed Jan 23, 2024
1 parent 5ee12d1 commit ef580c3
Show file tree
Hide file tree
Showing 18 changed files with 854 additions and 83 deletions.
31 changes: 22 additions & 9 deletions builder_test.go
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
package serrors_test

import (
"reflect"
"runtime"
"testing"

"github.com/stretchr/testify/require"

"github.com/Eun/serrors"
)

Expand All @@ -17,7 +16,9 @@ func testBuilderErrorFunc() error {

func TestBuilder(t *testing.T) {
_, filename, _, ok := runtime.Caller(0)
require.True(t, ok)
if expect, actual := true, ok; expect != actual {
t.Fatalf(`expected %v, but was %v`, expect, actual)
}

t.Run("Errorf", func(t *testing.T) {
errorBuilder := serrors.NewBuilder().
Expand All @@ -26,8 +27,12 @@ func TestBuilder(t *testing.T) {
err := errorBuilder.Errorf("some error"). // [TestBuilderErrorf00]
With("key2", "value2").
With("key3", "value3")
require.NotNil(t, err)
require.Equal(t, "some error", err.Error())
if err == nil {
t.Fatal(`expected not nil`)
}
if expect, actual := "some error", err.Error(); expect != actual {
t.Fatalf(`expected %q, but was %q`, expect, actual)
}

expectedFields := map[string]any{
"key1": "value1",
Expand All @@ -43,7 +48,9 @@ func TestBuilder(t *testing.T) {
},
},
}
require.Equal(t, expectedFields, serrors.GetFields(err))
if expect, actual := expectedFields, serrors.GetFields(err); !reflect.DeepEqual(expect, actual) {
t.Fatalf(`expected %+v, but was %+v`, expect, actual)
}
CompareErrorStack(t, expectedStack, serrors.GetStack(err))
})

Expand All @@ -57,8 +64,12 @@ func TestBuilder(t *testing.T) {
With("deep.key2", "value2").
With("key2", "value2").
With("key3", "value3")
require.NotNil(t, err)
require.Equal(t, "some error: deep error", err.Error())
if err == nil {

Check failure on line 67 in builder_test.go

View workflow job for this annotation

GitHub Actions / linter

SA4023: this comparison is never true (staticcheck)
t.Fatal(`expected not nil`)
}
if expect, actual := "some error: deep error", err.Error(); expect != actual {
t.Fatalf(`expected %q, but was %q`, expect, actual)
}

expectedFields := map[string]any{
"deep.key1": "value1",
Expand Down Expand Up @@ -92,7 +103,9 @@ func TestBuilder(t *testing.T) {
},
},
}
require.Equal(t, expectedFields, serrors.GetFields(err))
if expect, actual := expectedFields, serrors.GetFields(err); !reflect.DeepEqual(expect, actual) {
t.Fatalf(`expected %+v, but was %+v`, expect, actual)
}
CompareErrorStack(t, expectedStack, serrors.GetStack(err))
})
}
97 changes: 71 additions & 26 deletions error_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,10 @@ import (
"errors"
"fmt"
"net"
"reflect"
"runtime"
"testing"

"github.com/stretchr/testify/require"

"github.com/Eun/serrors"
)

Expand All @@ -22,15 +21,20 @@ func testErrorFunc() error {

func TestError(t *testing.T) {
_, filename, _, ok := runtime.Caller(0)
require.True(t, ok)
if expect, actual := true, ok; expect != actual {
t.Fatalf(`expected %v, but was %v`, expect, actual)
}

t.Run("Errorf", func(t *testing.T) {
err := serrors.Errorf("some error"). // [TestErrorErrorf00]
With("key1", "value1").
With("key2", "value2")

require.NotNil(t, err)
require.Equal(t, "some error", err.Error())
if err == nil {
t.Fatal(`expected not nil`)
}
if expect, actual := "some error", err.Error(); expect != actual {
t.Fatalf(`expected %q, but was %q`, expect, actual)
}

expectedFields := map[string]any{
"key1": "value1",
Expand All @@ -45,7 +49,9 @@ func TestError(t *testing.T) {
},
},
}
require.Equal(t, expectedFields, serrors.GetFields(err))
if expect, actual := expectedFields, serrors.GetFields(err); !reflect.DeepEqual(expect, actual) {
t.Fatalf(`expected %+v, but was %+v`, expect, actual)
}
CompareErrorStack(t, expectedStack, serrors.GetStack(err))
})

Expand All @@ -55,8 +61,12 @@ func TestError(t *testing.T) {
With("deep.key2", "value2").
With("key1", "value1").
With("key2", "value2")
require.NotNil(t, err)
require.Equal(t, "some error: deep error", err.Error())
if err == nil {

Check failure on line 64 in error_test.go

View workflow job for this annotation

GitHub Actions / linter

SA4023: this comparison is never true (staticcheck)
t.Fatal(`expected not nil`)
}
if expect, actual := "some error: deep error", err.Error(); expect != actual {
t.Fatalf(`expected %q, but was %q`, expect, actual)
}

expectedFields := map[string]any{
"deep.key1": "value1",
Expand Down Expand Up @@ -88,7 +98,9 @@ func TestError(t *testing.T) {
},
},
}
require.Equal(t, expectedFields, serrors.GetFields(err))
if expect, actual := expectedFields, serrors.GetFields(err); !reflect.DeepEqual(expect, actual) {
t.Fatalf(`expected %+v, but was %+v`, expect, actual)
}
CompareErrorStack(t, expectedStack, serrors.GetStack(err))
})
}
Expand Down Expand Up @@ -129,7 +141,9 @@ func TestGetFields(t *testing.T) {
for _, tc := range testCases {
tc := tc
t.Run(tc.name, func(t *testing.T) {
require.Equal(t, tc.expectedFields, serrors.GetFields(tc.error))
if expect, actual := tc.expectedFields, serrors.GetFields(tc.error); !reflect.DeepEqual(expect, actual) {
t.Fatalf(`expected %+v, but was %+v`, expect, actual)
}
})
}
}
Expand Down Expand Up @@ -170,7 +184,9 @@ func TestGetFieldsAsArguments(t *testing.T) {
for _, tc := range testCases {
tc := tc
t.Run(tc.name, func(t *testing.T) {
require.Equal(t, tc.expectedArguments, serrors.GetFieldsAsCombinedSlice(tc.error))
if expect, actual := tc.expectedArguments, serrors.GetFieldsAsCombinedSlice(tc.error); !reflect.DeepEqual(expect, actual) {
t.Fatalf(`expected %+v, but was %+v`, expect, actual)
}
})
}
}
Expand All @@ -179,24 +195,36 @@ func TestUnwrap(t *testing.T) {
t.Run("wrapped error", func(t *testing.T) {
err1 := errors.New("error1")
err := serrors.Wrap(err1, "error2")
require.Equal(t, err1, errors.Unwrap(err))
if expect, actual := err1, errors.Unwrap(err); !reflect.DeepEqual(expect, actual) {
t.Fatalf(`expected %+v, but was %+v`, expect, actual)
}
})
t.Run("wrapped no error", func(t *testing.T) {
err := serrors.Wrap(nil, "error2")
require.Nil(t, errors.Unwrap(err))
if errors.Unwrap(err) != nil {
t.Fatal("expected not nil")
}
})
}

func TestIs(t *testing.T) {
t.Run("wrapped error", func(t *testing.T) {
err := serrors.Wrap(net.ErrClosed, "error")
require.True(t, errors.Is(err, net.ErrClosed))
require.False(t, errors.Is(err, net.ErrWriteToConnected))
if expect, actual := true, errors.Is(err, net.ErrClosed); expect != actual {
t.Fatalf(`expected %v, but was %v`, expect, actual)
}
if expect, actual := false, errors.Is(err, net.ErrWriteToConnected); expect != actual {
t.Fatalf(`expected %v, but was %v`, expect, actual)
}
})
t.Run("wrapped no error", func(t *testing.T) {
err := serrors.Wrap(nil, "error")
require.False(t, errors.Is(err, net.ErrClosed))
require.False(t, errors.Is(err, net.ErrWriteToConnected))
if expect, actual := false, errors.Is(err, net.ErrClosed); expect != actual {
t.Fatalf(`expected %v, but was %v`, expect, actual)
}
if expect, actual := false, errors.Is(err, net.ErrWriteToConnected); expect != actual {
t.Fatalf(`expected %v, but was %v`, expect, actual)
}
})
}

Expand All @@ -205,21 +233,38 @@ func TestAs(t *testing.T) {
err := serrors.Wrap(&net.AddrError{Addr: "127.0.0.1"}, "error")

var cause1 *net.AddrError
require.True(t, errors.As(err, &cause1))
require.Equal(t, cause1.Addr, "127.0.0.1")
if expect, actual := true, errors.As(err, &cause1); expect != actual {
t.Fatalf(`expected %v, but was %v`, expect, actual)
}
if expect, actual := "127.0.0.1", cause1.Addr; expect != actual {
t.Fatalf(`expected %q, but was %q`, expect, actual)
}

var cause2 *net.OpError
require.False(t, errors.As(err, &cause2))
require.Nil(t, cause2)
if expect, actual := false, errors.As(err, &cause2); expect != actual {
t.Fatalf(`expected %v, but was %v`, expect, actual)
}
if cause2 != nil {
t.Fatal("expected not nil")
}
})
t.Run("wrapped no error", func(t *testing.T) {
err := serrors.Wrap(nil, "error")
var cause1 *net.AddrError
require.False(t, errors.As(err, &cause1))
require.Nil(t, cause1)
if expect, actual := false, errors.As(err, &cause1); expect != actual {
t.Fatalf(`expected %v, but was %v`, expect, actual)
}
if cause1 != nil {
t.Fatal("expected nil")
}

var cause2 *net.OpError
require.False(t, errors.As(err, &cause2))
require.Nil(t, cause2)

if expect, actual := false, errors.As(err, &cause2); expect != actual {
t.Fatalf(`expected %v, but was %v`, expect, actual)
}
if cause2 != nil {
t.Fatal("expected nil")
}
})
}
26 changes: 18 additions & 8 deletions format_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ import (
"strings"
"testing"

"github.com/stretchr/testify/require"

"github.com/Eun/serrors"
)

Expand Down Expand Up @@ -53,33 +51,45 @@ func TestError_Error(t *testing.T) {
for _, tc := range testCases {
tc := tc
t.Run(tc.name, func(t *testing.T) {
require.Equal(t, tc.expectedErrorText, tc.error.Error())
if expect, actual := tc.expectedErrorText, tc.error.Error(); expect != actual {
t.Fatalf(`expected %q, but was %q`, expect, actual)
}
})
}
}

func TestError_Format(t *testing.T) {
_, filename, _, ok := runtime.Caller(0)
require.True(t, ok)
if expect, actual := true, ok; expect != actual {
t.Fatalf(`expected %v, but was %v`, expect, actual)
}

cause := serrors.New("error 1").With("k1", "v1") // [TestError_Format01]
err := serrors.Wrap(cause, "error 2").With("k2", "v2") // [TestError_Format00]

t.Run("normal string", func(t *testing.T) {
require.Equal(t, "error 2: error 1", fmt.Sprintf("%s", err))
if expect, actual := "error 2: error 1", fmt.Sprintf("%s", err); expect != actual {
t.Fatalf(`expected %q, but was %q`, expect, actual)
}
})
t.Run("quoted string", func(t *testing.T) {
require.Equal(t, `"error 2: error 1"`, fmt.Sprintf("%q", err))
if expect, actual := `"error 2: error 1"`, fmt.Sprintf("%q", err); expect != actual {
t.Fatalf(`expected %q, but was %q`, expect, actual)
}
})
t.Run("verbose", func(t *testing.T) {
require.Equal(t, "error 2: error 1[k1=v1 k2=v2]", fmt.Sprintf("%v", err))
if expect, actual := "error 2: error 1[k1=v1 k2=v2]", fmt.Sprintf("%v", err); expect != actual {
t.Fatalf(`expected %q, but was %q`, expect, actual)
}
})
t.Run("extra verbose", func(t *testing.T) {
expected := fmt.Sprintf("error 2\n[k2=v2]\n%s\nerror 1\n[k1=v1]\n%s\n",
generateExpectedStack(t, filename, "TestError_Format00"),
generateExpectedStack(t, filename, "TestError_Format01"),
)
require.Equal(t, expected, fmt.Sprintf("%+v", err))
if expect, actual := expected, fmt.Sprintf("%+v", err); expect != actual {
t.Fatalf(`expected %q, but was %q`, expect, actual)
}
})
}

Expand Down
11 changes: 1 addition & 10 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,4 @@ module github.com/Eun/serrors

go 1.21

require (
github.com/pkg/errors v0.9.1
github.com/stretchr/testify v1.8.4
)

require (
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
require github.com/pkg/errors v0.9.1
10 changes: 0 additions & 10 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,12 +1,2 @@
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
Loading

0 comments on commit ef580c3

Please sign in to comment.