From 8095bf75f5d6d7f9cf025968df70f98a5b43f43a Mon Sep 17 00:00:00 2001 From: Matthieu MOREL Date: Mon, 24 Jun 2024 10:29:36 +0200 Subject: [PATCH 1/3] error-nil: support empty and notempty error --- README.md | 4 ++++ .../checkers-default/error-nil/error_nil_test.go | 16 ++++++++++++++++ .../error-nil/error_nil_test.go.golden | 16 ++++++++++++++++ internal/checkers/error_nil.go | 8 ++++++-- internal/testgen/gen_error_nil.go | 8 ++++++++ 5 files changed, 50 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7fe6314..02be709 100644 --- a/README.md +++ b/README.md @@ -307,6 +307,10 @@ logic, but without autofix. ❌ assert.Nil(t, err) assert.NotNil(t, err) +assert.Empty(t, err) +assert.NotEmpty(t, err) +assert.Zero(t, err) +assert.NotZero(t, err) assert.Equal(t, nil, err) assert.EqualValues(t, nil, err) assert.Exactly(t, nil, err) diff --git a/analyzer/testdata/src/checkers-default/error-nil/error_nil_test.go b/analyzer/testdata/src/checkers-default/error-nil/error_nil_test.go index 407b90a..43126b3 100644 --- a/analyzer/testdata/src/checkers-default/error-nil/error_nil_test.go +++ b/analyzer/testdata/src/checkers-default/error-nil/error_nil_test.go @@ -19,6 +19,14 @@ func TestErrorNilChecker(t *testing.T) { assert.Nilf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.NoErrorf" assert.NotNil(t, err) // want "error-nil: use assert\\.Error" assert.NotNilf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.Errorf" + assert.Empty(t, err) // want "error-nil: use assert\\.NoError" + assert.Emptyf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.NoErrorf" + assert.NotEmpty(t, err) // want "error-nil: use assert\\.Error" + assert.NotEmptyf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.Errorf" + assert.Zero(t, err) // want "error-nil: use assert\\.NoError" + assert.Zerof(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.NoErrorf" + assert.NotZero(t, err) // want "error-nil: use assert\\.Error" + assert.NotZerof(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.Errorf" assert.Equal(t, err, nil) // want "error-nil: use assert\\.NoError" assert.Equalf(t, err, nil, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.NoErrorf" assert.Equal(t, nil, err) // want "error-nil: use assert\\.NoError" @@ -67,6 +75,14 @@ func TestErrorNilChecker(t *testing.T) { assert.NotEqualf(t, err, err, "msg with args %d %s", 42, "42") assert.NotEqual(t, nil, nil) assert.NotEqualf(t, nil, nil, "msg with args %d %s", 42, "42") + assert.Empty(t, err.Error()) + assert.Emptyf(t, err.Error(), "msg with args %d %s", 42, "42") + assert.NotEmpty(t, err.Error()) + assert.NotEmptyf(t, err.Error(), "msg with args %d %s", 42, "42") + assert.Zero(t, err.Error()) + assert.Zerof(t, err.Error(), "msg with args %d %s", 42, "42") + assert.NotZero(t, err.Error()) + assert.NotZerof(t, err.Error(), "msg with args %d %s", 42, "42") } } diff --git a/analyzer/testdata/src/checkers-default/error-nil/error_nil_test.go.golden b/analyzer/testdata/src/checkers-default/error-nil/error_nil_test.go.golden index ba25565..09f2abc 100644 --- a/analyzer/testdata/src/checkers-default/error-nil/error_nil_test.go.golden +++ b/analyzer/testdata/src/checkers-default/error-nil/error_nil_test.go.golden @@ -15,6 +15,14 @@ func TestErrorNilChecker(t *testing.T) { // Invalid. { + assert.NoError(t, err) // want "error-nil: use assert\\.NoError" + assert.NoErrorf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.NoErrorf" + assert.Error(t, err) // want "error-nil: use assert\\.Error" + assert.Errorf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.Errorf" + assert.NoError(t, err) // want "error-nil: use assert\\.NoError" + assert.NoErrorf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.NoErrorf" + assert.Error(t, err) // want "error-nil: use assert\\.Error" + assert.Errorf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.Errorf" assert.NoError(t, err) // want "error-nil: use assert\\.NoError" assert.NoErrorf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.NoErrorf" assert.Error(t, err) // want "error-nil: use assert\\.Error" @@ -67,6 +75,14 @@ func TestErrorNilChecker(t *testing.T) { assert.NotEqualf(t, err, err, "msg with args %d %s", 42, "42") assert.NotEqual(t, nil, nil) assert.NotEqualf(t, nil, nil, "msg with args %d %s", 42, "42") + assert.Empty(t, err.Error()) + assert.Emptyf(t, err.Error(), "msg with args %d %s", 42, "42") + assert.NotEmpty(t, err.Error()) + assert.NotEmptyf(t, err.Error(), "msg with args %d %s", 42, "42") + assert.Zero(t, err.Error()) + assert.Zerof(t, err.Error(), "msg with args %d %s", 42, "42") + assert.NotZero(t, err.Error()) + assert.NotZerof(t, err.Error(), "msg with args %d %s", 42, "42") } } diff --git a/internal/checkers/error_nil.go b/internal/checkers/error_nil.go index 1e56d22..0bacbb7 100644 --- a/internal/checkers/error_nil.go +++ b/internal/checkers/error_nil.go @@ -13,6 +13,10 @@ import ( // // assert.Nil(t, err) // assert.NotNil(t, err) +// assert.Empty(t, err) +// assert.NotEmpty(t, err) +// assert.Zero(t, err) +// assert.NotZero(t, err) // assert.Equal(t, nil, err) // assert.EqualValues(t, nil, err) // assert.Exactly(t, nil, err) @@ -40,12 +44,12 @@ func (checker ErrorNil) Check(pass *analysis.Pass, call *CallMeta) *analysis.Dia proposedFn, survivingArg, replacementEndPos := func() (string, ast.Expr, token.Pos) { switch call.Fn.NameFTrimmed { - case "Nil": + case "Nil", "Empty", "Zero": if len(call.Args) >= 1 && isError(pass, call.Args[0]) { return noErrorFn, call.Args[0], call.Args[0].End() } - case "NotNil": + case "NotNil", "NotEmpty", "NotZero": if len(call.Args) >= 1 && isError(pass, call.Args[0]) { return errorFn, call.Args[0], call.Args[0].End() } diff --git a/internal/testgen/gen_error_nil.go b/internal/testgen/gen_error_nil.go index 75168a6..92803ac 100644 --- a/internal/testgen/gen_error_nil.go +++ b/internal/testgen/gen_error_nil.go @@ -52,6 +52,10 @@ func (g ErrorNilTestsGenerator) TemplateData() any { InvalidAssertions: []Assertion{ {Fn: "Nil", Argsf: "err", ReportMsgf: report, ProposedFn: "NoError"}, {Fn: "NotNil", Argsf: "err", ReportMsgf: report, ProposedFn: "Error"}, + {Fn: "Empty", Argsf: "err", ReportMsgf: report, ProposedFn: "NoError"}, + {Fn: "NotEmpty", Argsf: "err", ReportMsgf: report, ProposedFn: "Error"}, + {Fn: "Zero", Argsf: "err", ReportMsgf: report, ProposedFn: "NoError"}, + {Fn: "NotZero", Argsf: "err", ReportMsgf: report, ProposedFn: "Error"}, {Fn: "Equal", Argsf: "err, nil", ReportMsgf: report, ProposedFn: "NoError", ProposedArgsf: "err"}, {Fn: "Equal", Argsf: "nil, err", ReportMsgf: report, ProposedFn: "NoError", ProposedArgsf: "err"}, {Fn: "EqualValues", Argsf: "err, nil", ReportMsgf: report, ProposedFn: "NoError", ProposedArgsf: "err"}, @@ -76,6 +80,10 @@ func (g ErrorNilTestsGenerator) TemplateData() any { {Fn: "Equal", Argsf: "nil, nil"}, {Fn: "NotEqual", Argsf: "err, err"}, {Fn: "NotEqual", Argsf: "nil, nil"}, + {Fn: "Empty", Argsf: "err.Error()"}, // Requested by https://github.com/Antonboom/testifylint/issues/138 + {Fn: "NotEmpty", Argsf: "err.Error()"}, // Requested by https://github.com/Antonboom/testifylint/issues/138 + {Fn: "Zero", Argsf: "err.Error()"}, // Requested by https://github.com/Antonboom/testifylint/issues/138 + {Fn: "NotZero", Argsf: "err.Error()"}, // Requested by https://github.com/Antonboom/testifylint/issues/138 }, } } From 4ccb32837edbd4b96351eba597af27ffe7ed6fa9 Mon Sep 17 00:00:00 2001 From: Anton Telyshev Date: Thu, 3 Oct 2024 21:55:05 +0300 Subject: [PATCH 2/3] review fixes --- README.md | 6 ++--- .../error-nil/error_nil_test.go | 25 +++++++++++++------ .../error-nil/error_nil_test.go.golden | 25 +++++++++++++------ internal/checkers/error_nil.go | 6 ++--- internal/testgen/gen_error_nil.go | 24 ++++++++++++------ 5 files changed, 56 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 02be709..1496d40 100644 --- a/README.md +++ b/README.md @@ -306,16 +306,16 @@ logic, but without autofix. ```go ❌ assert.Nil(t, err) -assert.NotNil(t, err) assert.Empty(t, err) -assert.NotEmpty(t, err) assert.Zero(t, err) -assert.NotZero(t, err) assert.Equal(t, nil, err) assert.EqualValues(t, nil, err) assert.Exactly(t, nil, err) assert.ErrorIs(t, err, nil) +assert.NotNil(t, err) +assert.NotEmpty(t, err) +assert.NotZero(t, err) assert.NotEqual(t, nil, err) assert.NotEqualValues(t, nil, err) assert.NotErrorIs(t, err, nil) diff --git a/analyzer/testdata/src/checkers-default/error-nil/error_nil_test.go b/analyzer/testdata/src/checkers-default/error-nil/error_nil_test.go index 43126b3..8806218 100644 --- a/analyzer/testdata/src/checkers-default/error-nil/error_nil_test.go +++ b/analyzer/testdata/src/checkers-default/error-nil/error_nil_test.go @@ -12,21 +12,16 @@ import ( func TestErrorNilChecker(t *testing.T) { var err error + var errs []error // Invalid. { assert.Nil(t, err) // want "error-nil: use assert\\.NoError" assert.Nilf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.NoErrorf" - assert.NotNil(t, err) // want "error-nil: use assert\\.Error" - assert.NotNilf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.Errorf" assert.Empty(t, err) // want "error-nil: use assert\\.NoError" assert.Emptyf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.NoErrorf" - assert.NotEmpty(t, err) // want "error-nil: use assert\\.Error" - assert.NotEmptyf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.Errorf" assert.Zero(t, err) // want "error-nil: use assert\\.NoError" assert.Zerof(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.NoErrorf" - assert.NotZero(t, err) // want "error-nil: use assert\\.Error" - assert.NotZerof(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.Errorf" assert.Equal(t, err, nil) // want "error-nil: use assert\\.NoError" assert.Equalf(t, err, nil, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.NoErrorf" assert.Equal(t, nil, err) // want "error-nil: use assert\\.NoError" @@ -39,6 +34,14 @@ func TestErrorNilChecker(t *testing.T) { assert.Exactlyf(t, err, nil, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.NoErrorf" assert.Exactly(t, nil, err) // want "error-nil: use assert\\.NoError" assert.Exactlyf(t, nil, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.NoErrorf" + assert.ErrorIs(t, err, nil) // want "error-nil: use assert\\.NoError" + assert.ErrorIsf(t, err, nil, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.NoErrorf" + assert.NotNil(t, err) // want "error-nil: use assert\\.Error" + assert.NotNilf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.Errorf" + assert.NotEmpty(t, err) // want "error-nil: use assert\\.Error" + assert.NotEmptyf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.Errorf" + assert.NotZero(t, err) // want "error-nil: use assert\\.Error" + assert.NotZerof(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.Errorf" assert.NotEqual(t, err, nil) // want "error-nil: use assert\\.Error" assert.NotEqualf(t, err, nil, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.Errorf" assert.NotEqual(t, nil, err) // want "error-nil: use assert\\.Error" @@ -47,8 +50,6 @@ func TestErrorNilChecker(t *testing.T) { assert.NotEqualValuesf(t, err, nil, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.Errorf" assert.NotEqualValues(t, nil, err) // want "error-nil: use assert\\.Error" assert.NotEqualValuesf(t, nil, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.Errorf" - assert.ErrorIs(t, err, nil) // want "error-nil: use assert\\.NoError" - assert.ErrorIsf(t, err, nil, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.NoErrorf" assert.NotErrorIs(t, err, nil) // want "error-nil: use assert\\.Error" assert.NotErrorIsf(t, err, nil, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.Errorf" } @@ -83,6 +84,14 @@ func TestErrorNilChecker(t *testing.T) { assert.Zerof(t, err.Error(), "msg with args %d %s", 42, "42") assert.NotZero(t, err.Error()) assert.NotZerof(t, err.Error(), "msg with args %d %s", 42, "42") + assert.Empty(t, errs) + assert.Emptyf(t, errs, "msg with args %d %s", 42, "42") + assert.NotEmpty(t, errs) + assert.NotEmptyf(t, errs, "msg with args %d %s", 42, "42") + assert.Zero(t, errs) + assert.Zerof(t, errs, "msg with args %d %s", 42, "42") + assert.NotZero(t, errs) + assert.NotZerof(t, errs, "msg with args %d %s", 42, "42") } } diff --git a/analyzer/testdata/src/checkers-default/error-nil/error_nil_test.go.golden b/analyzer/testdata/src/checkers-default/error-nil/error_nil_test.go.golden index 09f2abc..f9ef2ea 100644 --- a/analyzer/testdata/src/checkers-default/error-nil/error_nil_test.go.golden +++ b/analyzer/testdata/src/checkers-default/error-nil/error_nil_test.go.golden @@ -12,21 +12,18 @@ import ( func TestErrorNilChecker(t *testing.T) { var err error + var errs []error // Invalid. { assert.NoError(t, err) // want "error-nil: use assert\\.NoError" assert.NoErrorf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.NoErrorf" - assert.Error(t, err) // want "error-nil: use assert\\.Error" - assert.Errorf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.Errorf" assert.NoError(t, err) // want "error-nil: use assert\\.NoError" assert.NoErrorf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.NoErrorf" - assert.Error(t, err) // want "error-nil: use assert\\.Error" - assert.Errorf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.Errorf" assert.NoError(t, err) // want "error-nil: use assert\\.NoError" assert.NoErrorf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.NoErrorf" - assert.Error(t, err) // want "error-nil: use assert\\.Error" - assert.Errorf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.Errorf" + assert.NoError(t, err) // want "error-nil: use assert\\.NoError" + assert.NoErrorf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.NoErrorf" assert.NoError(t, err) // want "error-nil: use assert\\.NoError" assert.NoErrorf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.NoErrorf" assert.NoError(t, err) // want "error-nil: use assert\\.NoError" @@ -47,8 +44,12 @@ func TestErrorNilChecker(t *testing.T) { assert.Errorf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.Errorf" assert.Error(t, err) // want "error-nil: use assert\\.Error" assert.Errorf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.Errorf" - assert.NoError(t, err) // want "error-nil: use assert\\.NoError" - assert.NoErrorf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.NoErrorf" + assert.Error(t, err) // want "error-nil: use assert\\.Error" + assert.Errorf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.Errorf" + assert.Error(t, err) // want "error-nil: use assert\\.Error" + assert.Errorf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.Errorf" + assert.Error(t, err) // want "error-nil: use assert\\.Error" + assert.Errorf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.Errorf" assert.Error(t, err) // want "error-nil: use assert\\.Error" assert.Errorf(t, err, "msg with args %d %s", 42, "42") // want "error-nil: use assert\\.Errorf" } @@ -83,6 +84,14 @@ func TestErrorNilChecker(t *testing.T) { assert.Zerof(t, err.Error(), "msg with args %d %s", 42, "42") assert.NotZero(t, err.Error()) assert.NotZerof(t, err.Error(), "msg with args %d %s", 42, "42") + assert.Empty(t, errs) + assert.Emptyf(t, errs, "msg with args %d %s", 42, "42") + assert.NotEmpty(t, errs) + assert.NotEmptyf(t, errs, "msg with args %d %s", 42, "42") + assert.Zero(t, errs) + assert.Zerof(t, errs, "msg with args %d %s", 42, "42") + assert.NotZero(t, errs) + assert.NotZerof(t, errs, "msg with args %d %s", 42, "42") } } diff --git a/internal/checkers/error_nil.go b/internal/checkers/error_nil.go index 0bacbb7..ea61c49 100644 --- a/internal/checkers/error_nil.go +++ b/internal/checkers/error_nil.go @@ -12,16 +12,16 @@ import ( // ErrorNil detects situations like // // assert.Nil(t, err) -// assert.NotNil(t, err) // assert.Empty(t, err) -// assert.NotEmpty(t, err) // assert.Zero(t, err) -// assert.NotZero(t, err) // assert.Equal(t, nil, err) // assert.EqualValues(t, nil, err) // assert.Exactly(t, nil, err) // assert.ErrorIs(t, err, nil) // +// assert.NotNil(t, err) +// assert.NotEmpty(t, err) +// assert.NotZero(t, err) // assert.NotEqual(t, nil, err) // assert.NotEqualValues(t, nil, err) // assert.NotErrorIs(t, err, nil) diff --git a/internal/testgen/gen_error_nil.go b/internal/testgen/gen_error_nil.go index 92803ac..7ec1e8b 100644 --- a/internal/testgen/gen_error_nil.go +++ b/internal/testgen/gen_error_nil.go @@ -51,22 +51,23 @@ func (g ErrorNilTestsGenerator) TemplateData() any { }, InvalidAssertions: []Assertion{ {Fn: "Nil", Argsf: "err", ReportMsgf: report, ProposedFn: "NoError"}, - {Fn: "NotNil", Argsf: "err", ReportMsgf: report, ProposedFn: "Error"}, {Fn: "Empty", Argsf: "err", ReportMsgf: report, ProposedFn: "NoError"}, - {Fn: "NotEmpty", Argsf: "err", ReportMsgf: report, ProposedFn: "Error"}, {Fn: "Zero", Argsf: "err", ReportMsgf: report, ProposedFn: "NoError"}, - {Fn: "NotZero", Argsf: "err", ReportMsgf: report, ProposedFn: "Error"}, {Fn: "Equal", Argsf: "err, nil", ReportMsgf: report, ProposedFn: "NoError", ProposedArgsf: "err"}, {Fn: "Equal", Argsf: "nil, err", ReportMsgf: report, ProposedFn: "NoError", ProposedArgsf: "err"}, {Fn: "EqualValues", Argsf: "err, nil", ReportMsgf: report, ProposedFn: "NoError", ProposedArgsf: "err"}, {Fn: "EqualValues", Argsf: "nil, err", ReportMsgf: report, ProposedFn: "NoError", ProposedArgsf: "err"}, {Fn: "Exactly", Argsf: "err, nil", ReportMsgf: report, ProposedFn: "NoError", ProposedArgsf: "err"}, {Fn: "Exactly", Argsf: "nil, err", ReportMsgf: report, ProposedFn: "NoError", ProposedArgsf: "err"}, + {Fn: "ErrorIs", Argsf: "err, nil", ReportMsgf: report, ProposedFn: "NoError", ProposedArgsf: "err"}, + + {Fn: "NotNil", Argsf: "err", ReportMsgf: report, ProposedFn: "Error"}, + {Fn: "NotEmpty", Argsf: "err", ReportMsgf: report, ProposedFn: "Error"}, + {Fn: "NotZero", Argsf: "err", ReportMsgf: report, ProposedFn: "Error"}, {Fn: "NotEqual", Argsf: "err, nil", ReportMsgf: report, ProposedFn: "Error", ProposedArgsf: "err"}, {Fn: "NotEqual", Argsf: "nil, err", ReportMsgf: report, ProposedFn: "Error", ProposedArgsf: "err"}, {Fn: "NotEqualValues", Argsf: "err, nil", ReportMsgf: report, ProposedFn: "Error", ProposedArgsf: "err"}, {Fn: "NotEqualValues", Argsf: "nil, err", ReportMsgf: report, ProposedFn: "Error", ProposedArgsf: "err"}, - {Fn: "ErrorIs", Argsf: "err, nil", ReportMsgf: report, ProposedFn: "NoError", ProposedArgsf: "err"}, {Fn: "NotErrorIs", Argsf: "err, nil", ReportMsgf: report, ProposedFn: "Error", ProposedArgsf: "err"}, }, ValidAssertions: []Assertion{ @@ -80,10 +81,16 @@ func (g ErrorNilTestsGenerator) TemplateData() any { {Fn: "Equal", Argsf: "nil, nil"}, {Fn: "NotEqual", Argsf: "err, err"}, {Fn: "NotEqual", Argsf: "nil, nil"}, - {Fn: "Empty", Argsf: "err.Error()"}, // Requested by https://github.com/Antonboom/testifylint/issues/138 - {Fn: "NotEmpty", Argsf: "err.Error()"}, // Requested by https://github.com/Antonboom/testifylint/issues/138 - {Fn: "Zero", Argsf: "err.Error()"}, // Requested by https://github.com/Antonboom/testifylint/issues/138 - {Fn: "NotZero", Argsf: "err.Error()"}, // Requested by https://github.com/Antonboom/testifylint/issues/138 + + {Fn: "Empty", Argsf: "err.Error()"}, + {Fn: "NotEmpty", Argsf: "err.Error()"}, + {Fn: "Zero", Argsf: "err.Error()"}, + {Fn: "NotZero", Argsf: "err.Error()"}, + + {Fn: "Empty", Argsf: "errs"}, + {Fn: "NotEmpty", Argsf: "errs"}, + {Fn: "Zero", Argsf: "errs"}, + {Fn: "NotZero", Argsf: "errs"}, }, } } @@ -114,6 +121,7 @@ import ( func {{ .CheckerName.AsTestName }}(t *testing.T) { var err error + var errs []error // Invalid. { From 044379d9acf36a24cb1f767eeb5cdec6ec0b4b8b Mon Sep 17 00:00:00 2001 From: Anton Telyshev Date: Thu, 3 Oct 2024 21:59:53 +0300 Subject: [PATCH 3/3] review fixes --- .../testdata/src/checkers-default/error-nil/error_nil_test.go | 4 ++++ .../src/checkers-default/error-nil/error_nil_test.go.golden | 4 ++++ internal/testgen/gen_error_nil.go | 2 ++ 3 files changed, 10 insertions(+) diff --git a/analyzer/testdata/src/checkers-default/error-nil/error_nil_test.go b/analyzer/testdata/src/checkers-default/error-nil/error_nil_test.go index 8806218..a7396e1 100644 --- a/analyzer/testdata/src/checkers-default/error-nil/error_nil_test.go +++ b/analyzer/testdata/src/checkers-default/error-nil/error_nil_test.go @@ -84,6 +84,10 @@ func TestErrorNilChecker(t *testing.T) { assert.Zerof(t, err.Error(), "msg with args %d %s", 42, "42") assert.NotZero(t, err.Error()) assert.NotZerof(t, err.Error(), "msg with args %d %s", 42, "42") + assert.Nil(t, errs) + assert.Nilf(t, errs, "msg with args %d %s", 42, "42") + assert.NotNil(t, errs) + assert.NotNilf(t, errs, "msg with args %d %s", 42, "42") assert.Empty(t, errs) assert.Emptyf(t, errs, "msg with args %d %s", 42, "42") assert.NotEmpty(t, errs) diff --git a/analyzer/testdata/src/checkers-default/error-nil/error_nil_test.go.golden b/analyzer/testdata/src/checkers-default/error-nil/error_nil_test.go.golden index f9ef2ea..658ef19 100644 --- a/analyzer/testdata/src/checkers-default/error-nil/error_nil_test.go.golden +++ b/analyzer/testdata/src/checkers-default/error-nil/error_nil_test.go.golden @@ -84,6 +84,10 @@ func TestErrorNilChecker(t *testing.T) { assert.Zerof(t, err.Error(), "msg with args %d %s", 42, "42") assert.NotZero(t, err.Error()) assert.NotZerof(t, err.Error(), "msg with args %d %s", 42, "42") + assert.Nil(t, errs) + assert.Nilf(t, errs, "msg with args %d %s", 42, "42") + assert.NotNil(t, errs) + assert.NotNilf(t, errs, "msg with args %d %s", 42, "42") assert.Empty(t, errs) assert.Emptyf(t, errs, "msg with args %d %s", 42, "42") assert.NotEmpty(t, errs) diff --git a/internal/testgen/gen_error_nil.go b/internal/testgen/gen_error_nil.go index 7ec1e8b..f8bf4c8 100644 --- a/internal/testgen/gen_error_nil.go +++ b/internal/testgen/gen_error_nil.go @@ -87,6 +87,8 @@ func (g ErrorNilTestsGenerator) TemplateData() any { {Fn: "Zero", Argsf: "err.Error()"}, {Fn: "NotZero", Argsf: "err.Error()"}, + {Fn: "Nil", Argsf: "errs"}, + {Fn: "NotNil", Argsf: "errs"}, {Fn: "Empty", Argsf: "errs"}, {Fn: "NotEmpty", Argsf: "errs"}, {Fn: "Zero", Argsf: "errs"},