diff --git a/.drone.yml b/.drone.yml index 127d859..ca90aaa 100644 --- a/.drone.yml +++ b/.drone.yml @@ -5,32 +5,32 @@ name: build steps: - name: lint - image: golangci/golangci-lint:v1.43.0 + image: code.pztrn.name/containers/mirror/golangci/golangci-lint:v1.46.2 environment: CGO_ENABLED: 0 commands: - golangci-lint run - name: test - image: golang:1.17.3-alpine + image: code.pztrn.name/containers/mirror/golang:1.18.3-alpine environment: CGO_ENABLED: 0 commands: - go test -test.v ./... - name: test-race - image: golang:1.17.3-stretch + image: code.pztrn.name/containers/mirror/golang:1.18.3-bullseye commands: - go test -race -test.v ./... - name: benchmark - image: golang:1.17.3-alpine + image: code.pztrn.name/containers/mirror/golang:1.18.3-alpine environment: CGO_ENABLED: 0 commands: - go test -benchmem -run=^$ go.dev.pztrn.name/valiwork -bench . - name: benchmark-race - image: golang:1.17.3-stretch + image: code.pztrn.name/containers/mirror/golang:1.18.3-bullseye commands: - go test -benchmem -run=^$ go.dev.pztrn.name/valiwork -race -bench . diff --git a/debug.go b/debug.go index 7ad1249..e6cc604 100644 --- a/debug.go +++ b/debug.go @@ -23,14 +23,11 @@ package valiwork import ( - // stdlib "os" "strconv" ) -var ( - DEBUG bool -) +var DEBUG bool // Initializes debug output. // nolint diff --git a/errors.go b/errors.go index ca9dff9..7ff8af6 100644 --- a/errors.go +++ b/errors.go @@ -23,7 +23,6 @@ package valiwork import ( - // stdlib "errors" ) diff --git a/example/main.go b/example/main.go index cff3cb8..60bf8c8 100644 --- a/example/main.go +++ b/example/main.go @@ -23,12 +23,10 @@ package main import ( - "strings" - // stdlib "errors" "log" + "strings" - // other "go.dev.pztrn.name/valiwork" ) @@ -40,7 +38,7 @@ func main() { log.Println("Starting validation example...") log.Println("WARN: to see additional valiwork output define 'VALIWORK_DEBUG' environment variable and set it to 'true'!") - //stringToValidate := " I am pretty b@d $tring" + // stringToValidate := " I am pretty b@d $tring" _ = valiwork.RegisterValidator(stringValidatorName, stringValidator) } @@ -51,6 +49,7 @@ func stringValidator(thing interface{}, optional ...interface{}) []interface{} { stringToValidate, ok := thing.(string) if !ok { errs = append(errs, errors.New("passed value is not a string")) + return errs } diff --git a/validations.go b/validations.go index 192041d..0e4aa7c 100644 --- a/validations.go +++ b/validations.go @@ -23,16 +23,12 @@ package valiwork import ( - // stdlib "log" - // local "go.dev.pztrn.name/valiwork/validators" ) -var ( - registeredValidators map[string]validators.ValidatorFunc -) +var registeredValidators map[string]validators.ValidatorFunc // nolint func init() { @@ -74,6 +70,7 @@ func Validate(thing interface{}, validatorName string, optional ...interface{}) if !found { errs = append(errs, ErrValidatorNotRegistered) + return errs } diff --git a/validations_test.go b/validations_test.go index 52c7c7a..f8cadd8 100644 --- a/validations_test.go +++ b/validations_test.go @@ -23,30 +23,27 @@ package valiwork import ( - // stdlib "errors" "strconv" "strings" "sync" "testing" - // local - "go.dev.pztrn.name/valiwork/validators" - - // other "github.com/stretchr/testify/require" + "go.dev.pztrn.name/valiwork/validators" ) const ( testString = " I am test $tring" ) +// nolint:paralleltest func TestRegisterValidator(t *testing.T) { initializeValidatorsStorage() testCases := []struct { - ValidatorName string ValidatorFunc validators.ValidatorFunc + ValidatorName string ShouldFail bool }{ { @@ -92,10 +89,10 @@ func BenchmarkRegisterValidator(b *testing.B) { func BenchmarkRegisterValidatorAsync(b *testing.B) { initializeValidatorsStorage() - var w sync.WaitGroup + var waiter sync.WaitGroup for i := 0; i < b.N; i++ { - w.Add(1) + waiter.Add(1) go func() { _ = RegisterValidator("string_test_validator_"+strconv.Itoa(i), @@ -104,13 +101,14 @@ func BenchmarkRegisterValidatorAsync(b *testing.B) { }, ) - w.Done() + waiter.Done() }() - w.Wait() + waiter.Wait() } } +// nolint:paralleltest func TestValidate(t *testing.T) { initializeValidatorsStorage() @@ -120,6 +118,7 @@ func TestValidate(t *testing.T) { stringToValidate, ok := thing.(string) if !ok { errs = append(errs, errors.New("not a string")) + return errs } @@ -146,6 +145,7 @@ func BenchmarkValidate(b *testing.B) { stringToValidate, ok := thing.(string) if !ok { errs = append(errs, errors.New("not a string")) + return errs } @@ -178,6 +178,7 @@ func BenchmarkValidateAsync(b *testing.B) { stringToValidate, ok := thing.(string) if !ok { errs = append(errs, errors.New("not a string")) + return errs } @@ -194,21 +195,22 @@ func BenchmarkValidateAsync(b *testing.B) { b.StartTimer() - var w sync.WaitGroup + var waiter sync.WaitGroup for i := 0; i < b.N; i++ { - w.Add(1) + waiter.Add(1) go func() { _ = Validate(testString, "string_test1") - w.Done() + waiter.Done() }() - w.Wait() + waiter.Wait() } } +// nolint:paralleltest func TestValidateMany(t *testing.T) { initializeValidatorsStorage() @@ -218,6 +220,7 @@ func TestValidateMany(t *testing.T) { stringToValidate, ok := thing.(string) if !ok { errs = append(errs, errors.New("not a string")) + return errs } @@ -234,6 +237,7 @@ func TestValidateMany(t *testing.T) { stringToValidate, ok := thing.(string) if !ok { errs = append(errs, errors.New("not a string")) + return errs } @@ -260,6 +264,7 @@ func BenchmarkValidateMany(b *testing.B) { stringToValidate, ok := thing.(string) if !ok { errs = append(errs, errors.New("not a string")) + return errs } @@ -276,6 +281,7 @@ func BenchmarkValidateMany(b *testing.B) { stringToValidate, ok := thing.(string) if !ok { errs = append(errs, errors.New("not a string")) + return errs } @@ -304,6 +310,7 @@ func BenchmarkValidateManyAsync(b *testing.B) { stringToValidate, ok := thing.(string) if !ok { errs = append(errs, errors.New("not a string")) + return errs } @@ -320,6 +327,7 @@ func BenchmarkValidateManyAsync(b *testing.B) { stringToValidate, ok := thing.(string) if !ok { errs = append(errs, errors.New("not a string")) + return errs } @@ -332,27 +340,28 @@ func BenchmarkValidateManyAsync(b *testing.B) { b.StartTimer() - var w sync.WaitGroup + var waiter sync.WaitGroup for i := 0; i < b.N; i++ { - w.Add(1) + waiter.Add(1) go func() { _ = ValidateMany(testString, []string{"string_test1", "string_test2"}, nil) - w.Done() + waiter.Done() }() - w.Wait() + waiter.Wait() } } +// nolint:paralleltest func TestUnregisterValidator(t *testing.T) { initializeValidatorsStorage() testCases := []struct { - ValidatorName string ValidatorFunc validators.ValidatorFunc + ValidatorName string }{ { ValidatorName: "string_test_validator", @@ -371,6 +380,7 @@ func TestUnregisterValidator(t *testing.T) { } } +// nolint:paralleltest func TestUnregisterValidatorNotRegisteredValidator(t *testing.T) { initializeValidatorsStorage() @@ -411,19 +421,19 @@ func BenchmarkUnregisterValidatorAsync(b *testing.B) { ) } - var w sync.WaitGroup + var waiter sync.WaitGroup b.StartTimer() for i := 0; i < b.N; i++ { - w.Add(1) + waiter.Add(1) go func() { _ = UnregisterValidator("string_test_validator_" + strconv.Itoa(i)) - w.Done() + waiter.Done() }() - w.Wait() + waiter.Wait() } }