refactor: move task, error and testing utils to separte repo; apply gofumpt

This commit is contained in:
yusing
2025-09-27 13:41:50 +08:00
parent 5043ef778f
commit 6776f20332
203 changed files with 696 additions and 2800 deletions

View File

@@ -2,6 +2,8 @@ package atomic
import "sync/atomic"
type Bool = atomic.Bool
type Int32 = atomic.Int32
type Int64 = atomic.Int64
type (
Bool = atomic.Bool
Int32 = atomic.Int32
Int64 = atomic.Int64
)

View File

@@ -5,8 +5,7 @@ go 1.25.1
require (
github.com/puzpuzpuz/xsync/v4 v4.2.0
github.com/rs/zerolog v1.34.0
github.com/stretchr/testify v1.11.1
github.com/yusing/goutils v0.2.1
github.com/yusing/goutils v0.3.1
go.uber.org/atomic v1.11.0
)
@@ -15,6 +14,7 @@ require (
github.com/mattn/go-colorable v0.1.14 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/stretchr/testify v1.11.1 // indirect
golang.org/x/sys v0.36.0 // indirect
golang.org/x/text v0.29.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect

View File

@@ -19,8 +19,8 @@ github.com/rs/zerolog v1.34.0 h1:k43nTLIwcTVQAncfCw4KZ2VY6ukYoZaBPNOE8txlOeY=
github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6wYQ=
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
github.com/yusing/goutils v0.2.1 h1:KjoCrNO0otthaPCZPfQY+5GKsqs5+J77CxP+TNHYa/Y=
github.com/yusing/goutils v0.2.1/go.mod h1:v6RZsMRdzcts4udSg0vqUIFvaD0OaUMPTwYJZ4XnQYo=
github.com/yusing/goutils v0.3.1 h1:xCPoZ/haI8ZJ0ZaPU4g6+okSPdBczs8o98tIZ/TbpsQ=
github.com/yusing/goutils v0.3.1/go.mod h1:meg9GcAU8yvBY21JgYjPuLsXD1Q5VdVHE32A4tG5Y5g=
go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=

View File

@@ -5,7 +5,7 @@ import (
"testing"
"time"
. "github.com/yusing/godoxy/internal/utils/testing"
expect "github.com/yusing/goutils/testing"
)
func TestRefCounterAddSub(t *testing.T) {
@@ -19,7 +19,7 @@ func TestRefCounterAddSub(t *testing.T) {
}
wg.Wait()
ExpectEqual(t, int(rc.refCount), 0)
expect.Equal(t, int(rc.refCount), 0)
select {
case <-rc.Zero():
@@ -44,7 +44,7 @@ func TestRefCounterMultipleAddSub(t *testing.T) {
}()
}
wg.Wait()
ExpectEqual(t, int(rc.refCount), numAdds+1)
expect.Equal(t, int(rc.refCount), numAdds+1)
wg.Add(numSubs)
for range numSubs {
@@ -54,7 +54,7 @@ func TestRefCounterMultipleAddSub(t *testing.T) {
}()
}
wg.Wait()
ExpectEqual(t, int(rc.refCount), numAdds+1-numSubs)
expect.Equal(t, int(rc.refCount), numAdds+1-numSubs)
rc.Sub()
select {

View File

@@ -5,7 +5,7 @@ import (
"strings"
"testing"
. "github.com/yusing/godoxy/internal/utils/testing"
expect "github.com/yusing/goutils/testing"
)
func TestIntersect(t *testing.T) {
@@ -19,7 +19,7 @@ func TestIntersect(t *testing.T) {
result := Intersect(slice1, slice2)
slices.Sort(result)
slices.Sort(want)
ExpectEqual(t, result, want)
expect.Equal(t, result, want)
})
t.Run("intersection", func(t *testing.T) {
var (
@@ -30,7 +30,7 @@ func TestIntersect(t *testing.T) {
result := Intersect(slice1, slice2)
slices.Sort(result)
slices.Sort(want)
ExpectEqual(t, result, want)
expect.Equal(t, result, want)
})
})
t.Run("ints", func(t *testing.T) {
@@ -43,7 +43,7 @@ func TestIntersect(t *testing.T) {
result := Intersect(slice1, slice2)
slices.Sort(result)
slices.Sort(want)
ExpectEqual(t, result, want)
expect.Equal(t, result, want)
})
t.Run("intersection", func(t *testing.T) {
var (
@@ -54,7 +54,7 @@ func TestIntersect(t *testing.T) {
result := Intersect(slice1, slice2)
slices.Sort(result)
slices.Sort(want)
ExpectEqual(t, result, want)
expect.Equal(t, result, want)
})
})
t.Run("complex", func(t *testing.T) {
@@ -75,7 +75,7 @@ func TestIntersect(t *testing.T) {
slices.SortFunc(want, func(i T, j T) int {
return strings.Compare(i.A, j.A)
})
ExpectEqual(t, result, want)
expect.Equal(t, result, want)
})
t.Run("intersection", func(t *testing.T) {
var (
@@ -90,7 +90,7 @@ func TestIntersect(t *testing.T) {
slices.SortFunc(want, func(i T, j T) int {
return strings.Compare(i.A, j.A)
})
ExpectEqual(t, result, want)
expect.Equal(t, result, want)
})
})
}

View File

@@ -1,78 +0,0 @@
package expect
import (
"os"
"strings"
"testing"
"github.com/stretchr/testify/require"
)
var isTest = strings.HasSuffix(os.Args[0], ".test")
func init() {
if isTest {
// force verbose output
os.Args = append([]string{os.Args[0], "-test.v"}, os.Args[1:]...)
}
}
func Must[Result any](r Result, err error) Result {
if err != nil {
panic(err)
}
return r
}
var (
NoError = require.NoError
HasError = require.Error
True = require.True
False = require.False
Nil = require.Nil
NotNil = require.NotNil
ErrorContains = require.ErrorContains
Panics = require.Panics
Greater = require.Greater
Less = require.Less
GreaterOrEqual = require.GreaterOrEqual
LessOrEqual = require.LessOrEqual
)
func ErrorIs(t *testing.T, expected error, err error, msgAndArgs ...any) {
t.Helper()
require.ErrorIs(t, err, expected, msgAndArgs...)
}
func ErrorT[T error](t *testing.T, err error, msgAndArgs ...any) {
t.Helper()
var errAs T
require.ErrorAs(t, err, &errAs, msgAndArgs...)
}
func Equal[T any](t *testing.T, got T, want T, msgAndArgs ...any) {
t.Helper()
require.EqualValues(t, want, got, msgAndArgs...)
}
func NotEqual[T any](t *testing.T, got T, want T, msgAndArgs ...any) {
t.Helper()
require.NotEqual(t, want, got, msgAndArgs...)
}
func Contains[T any](t *testing.T, got T, wants []T, msgAndArgs ...any) {
t.Helper()
require.Contains(t, wants, got, msgAndArgs...)
}
func StringsContain(t *testing.T, got string, want string, msgAndArgs ...any) {
t.Helper()
require.Contains(t, got, want, msgAndArgs...)
}
func Type[T any](t *testing.T, got any, msgAndArgs ...any) (_ T) {
t.Helper()
_, ok := got.(T)
require.True(t, ok, msgAndArgs...)
return got.(T)
}

View File

@@ -1,9 +0,0 @@
package expect
import "github.com/rs/zerolog"
func init() {
if isTest {
zerolog.SetGlobalLevel(zerolog.DebugLevel)
}
}

View File

@@ -1,55 +0,0 @@
package expect
import (
"testing"
"github.com/stretchr/testify/require"
)
func ExpectNoError(t *testing.T, err error) {
t.Helper()
require.NoError(t, err)
}
func ExpectHasError(t *testing.T, err error) {
t.Helper()
require.Error(t, err)
}
func ExpectError(t *testing.T, expected error, err error) {
t.Helper()
require.ErrorIs(t, err, expected)
}
func ExpectErrorT[T error](t *testing.T, err error) {
t.Helper()
var errAs T
require.ErrorAs(t, err, &errAs)
}
func ExpectEqual[T any](t *testing.T, got T, want T) {
t.Helper()
require.EqualValues(t, want, got)
}
func ExpectContains[T any](t *testing.T, got T, wants []T) {
t.Helper()
require.Contains(t, wants, got)
}
func ExpectTrue(t *testing.T, got bool) {
t.Helper()
require.True(t, got)
}
func ExpectFalse(t *testing.T, got bool) {
t.Helper()
require.False(t, got)
}
func ExpectType[T any](t *testing.T, got any) (_ T) {
t.Helper()
_, ok := got.(T)
require.True(t, ok)
return got.(T)
}