Skip to content

Commit

Permalink
chore: remove amount of dependencies (#1)
Browse files Browse the repository at this point in the history
  • Loading branch information
Eun committed Jan 25, 2024
1 parent 5ee12d1 commit e1cf9fe
Show file tree
Hide file tree
Showing 19 changed files with 802 additions and 98 deletions.
16 changes: 7 additions & 9 deletions builder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ import (
"runtime"
"testing"

"github.com/stretchr/testify/require"

"github.com/Eun/serrors"
)

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

func TestBuilder(t *testing.T) {
_, filename, _, ok := runtime.Caller(0)
require.True(t, ok)
Equal(t, true, ok)

t.Run("Errorf", func(t *testing.T) {
errorBuilder := serrors.NewBuilder().
Expand All @@ -26,8 +24,8 @@ 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())
NotNil(t, err)
Equal(t, "some error", err.Error())

expectedFields := map[string]any{
"key1": "value1",
Expand All @@ -43,7 +41,7 @@ func TestBuilder(t *testing.T) {
},
},
}
require.Equal(t, expectedFields, serrors.GetFields(err))
Equal(t, expectedFields, serrors.GetFields(err))
CompareErrorStack(t, expectedStack, serrors.GetStack(err))
})

Expand All @@ -57,8 +55,8 @@ 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())
NotNil(t, err)
Equal(t, "some error: deep error", err.Error())

expectedFields := map[string]any{
"deep.key1": "value1",
Expand Down Expand Up @@ -92,7 +90,7 @@ func TestBuilder(t *testing.T) {
},
},
}
require.Equal(t, expectedFields, serrors.GetFields(err))
Equal(t, expectedFields, serrors.GetFields(err))
CompareErrorStack(t, expectedStack, serrors.GetStack(err))
})
}
3 changes: 1 addition & 2 deletions error_example_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,8 @@ func addUserToRole(userName, roleName string) error {
}

func ExampleError() {
logger := NewSLogLogger()
if err := addUserToRole("joe", "guest"); err != nil {
logger.Error("name validation failed",
slog.Error("name validation failed",
"error", err.Error(),
slog.Group("details", serrors.GetFieldsAsCombinedSlice(err)...),
"stack", serrors.GetStack(err),
Expand Down
49 changes: 23 additions & 26 deletions error_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ import (
"runtime"
"testing"

"github.com/stretchr/testify/require"

"github.com/Eun/serrors"
)

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

func TestError(t *testing.T) {
_, filename, _, ok := runtime.Caller(0)
require.True(t, ok)
Equal(t, true, ok)

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())
NotNil(t, err)
Equal(t, "some error", err.Error())

expectedFields := map[string]any{
"key1": "value1",
Expand All @@ -45,7 +42,7 @@ func TestError(t *testing.T) {
},
},
}
require.Equal(t, expectedFields, serrors.GetFields(err))
Equal(t, expectedFields, serrors.GetFields(err))
CompareErrorStack(t, expectedStack, serrors.GetStack(err))
})

Expand All @@ -55,8 +52,8 @@ 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())
NotNil(t, err)
Equal(t, "some error: deep error", err.Error())

expectedFields := map[string]any{
"deep.key1": "value1",
Expand Down Expand Up @@ -88,7 +85,7 @@ func TestError(t *testing.T) {
},
},
}
require.Equal(t, expectedFields, serrors.GetFields(err))
Equal(t, expectedFields, serrors.GetFields(err))
CompareErrorStack(t, expectedStack, serrors.GetStack(err))
})
}
Expand Down Expand Up @@ -129,7 +126,7 @@ 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))
Equal(t, tc.expectedFields, serrors.GetFields(tc.error))
})
}
}
Expand Down Expand Up @@ -170,7 +167,7 @@ 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))
Equal(t, tc.expectedArguments, serrors.GetFieldsAsCombinedSlice(tc.error))
})
}
}
Expand All @@ -179,24 +176,24 @@ 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))
Equal(t, err1, errors.Unwrap(err))
})
t.Run("wrapped no error", func(t *testing.T) {
err := serrors.Wrap(nil, "error2")
require.Nil(t, errors.Unwrap(err))
Nil(t, errors.Unwrap(err))
})
}

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))
Equal(t, true, errors.Is(err, net.ErrClosed))
Equal(t, false, errors.Is(err, net.ErrWriteToConnected))
})
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))
Equal(t, false, errors.Is(err, net.ErrClosed))
Equal(t, false, errors.Is(err, net.ErrWriteToConnected))
})
}

Expand All @@ -205,21 +202,21 @@ 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")
Equal(t, true, errors.As(err, &cause1))
Equal(t, "127.0.0.1", cause1.Addr)

var cause2 *net.OpError
require.False(t, errors.As(err, &cause2))
require.Nil(t, cause2)
Equal(t, false, errors.As(err, &cause2))
Nil(t, cause2)
})
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)
Equal(t, false, errors.As(err, &cause1))
Nil(t, cause1)

var cause2 *net.OpError
require.False(t, errors.As(err, &cause2))
require.Nil(t, cause2)
Equal(t, false, errors.As(err, &cause2))
Nil(t, cause2)
})
}
14 changes: 6 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,33 @@ 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())
Equal(t, tc.expectedErrorText, tc.error.Error())
})
}
}

func TestError_Format(t *testing.T) {
_, filename, _, ok := runtime.Caller(0)
require.True(t, ok)
Equal(t, true, ok)

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))
Equal(t, "error 2: error 1", fmt.Sprintf("%s", err))
})
t.Run("quoted string", func(t *testing.T) {
require.Equal(t, `"error 2: error 1"`, fmt.Sprintf("%q", err))
Equal(t, `"error 2: error 1"`, fmt.Sprintf("%q", err))
})
t.Run("verbose", func(t *testing.T) {
require.Equal(t, "error 2: error 1[k1=v1 k2=v2]", fmt.Sprintf("%v", err))
Equal(t, "error 2: error 1[k1=v1 k2=v2]", fmt.Sprintf("%v", err))
})
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))
Equal(t, expected, fmt.Sprintf("%+v", err))
})
}

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=
16 changes: 7 additions & 9 deletions stack_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,22 @@ import (
"strings"
"testing"

"github.com/stretchr/testify/require"

"github.com/Eun/serrors"
)

func TestGetStack(t *testing.T) {
// just generic testing
// the real test are happening in TestError & TestBuilder.
t.Run("get stack from nil value", func(t *testing.T) {
require.Nil(t, serrors.GetStack(nil))
Nil(t, serrors.GetStack(nil))
})
t.Run("get original error from stack", func(t *testing.T) {
err := serrors.New("some error")

stack := serrors.GetStack(err)
require.Len(t, stack, 1)
require.Equal(t, err, stack[0].Error())
require.Equal(t, err.Error(), stack[0].ErrorMessage)
Equal(t, 1, len(stack))
Equal(t, err, stack[0].Error())
Equal(t, err.Error(), stack[0].ErrorMessage)
})
}

Expand All @@ -36,7 +34,7 @@ func buildStackFrameFromMarker(t *testing.T, fileName, marker string) serrors.St

// Parse the Go file
file, err := parser.ParseFile(fileSet, fileName, nil, parser.AllErrors|parser.ParseComments)
require.NoError(t, err)
Nil(t, err)
packageName := "github.com/Eun/" + file.Name.Name

var inspectNode func(n ast.Node) bool
Expand All @@ -56,7 +54,7 @@ func buildStackFrameFromMarker(t *testing.T, fileName, marker string) serrors.St
// Get the function name and line number
pos := fileSet.Position(v.Slash)
funcName := findEnclosingFunc(fileSet, file, pos.Offset)
require.Nil(t, result, "found a marker %q already", marker)
Nil(t, result)
result = &serrors.StackFrame{
File: fileName,
Func: packageName + "." + funcName,
Expand All @@ -70,7 +68,7 @@ func buildStackFrameFromMarker(t *testing.T, fileName, marker string) serrors.St

// Traverse the AST
ast.Inspect(file, inspectNode)
require.NotNil(t, result, "no marker found %s", marker)
NotNil(t, result)
return *result
}

Expand Down
10 changes: 4 additions & 6 deletions thirdparty_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,13 @@ import (
"testing"

pkgerrors "github.com/pkg/errors"
"github.com/stretchr/testify/require"

"github.com/Eun/serrors"
)

func TestGetStack_WithPkgErrors(t *testing.T) {
_, filename, _, ok := runtime.Caller(0)
require.True(t, ok)
Equal(t, true, ok)

err := serrors.Wrap( // [TestGetStack_WithPkgErrors00]
pkgerrors.Wrap( // [TestGetStack_WithPkgErrors10]
Expand Down Expand Up @@ -47,7 +46,7 @@ func TestGetStack_WithPkgErrors(t *testing.T) {

func TestError_Format_WithPkgErrors(t *testing.T) {
_, filename, _, ok := runtime.Caller(0)
require.True(t, ok)
Equal(t, true, ok)

err := serrors.Wrap( // [TestError_Format_WithPkgErrors01]
pkgerrors.Wrap( // [TestError_Format_WithPkgErrors02]
Expand All @@ -60,7 +59,7 @@ func TestError_Format_WithPkgErrors(t *testing.T) {
generateExpectedStack(t, filename, "TestError_Format_WithPkgErrors01"),
generateExpectedStack(t, filename, "TestError_Format_WithPkgErrors02"),
)
require.Equal(t, expected, fmt.Sprintf("%+v", err))
Equal(t, expected, fmt.Sprintf("%+v", err))
}

func TestError_Error_WithPkgErrors(t *testing.T) {
Expand All @@ -71,6 +70,5 @@ func TestError_Error_WithPkgErrors(t *testing.T) {
"serrors",
)

expected := "serrors: pkgerrors: errors"
require.Equal(t, expected, err.Error())
Equal(t, "serrors: pkgerrors: errors", err.Error())
}
Loading

0 comments on commit e1cf9fe

Please sign in to comment.