mirror of
https://github.com/mgechev/revive.git
synced 2025-02-07 13:31:42 +02:00
test: add default case when no arguments provided to a rule (#1140)
This commit is contained in:
parent
0e8acea6ce
commit
19834d40a4
@ -7,6 +7,10 @@ import (
|
||||
"github.com/mgechev/revive/rule"
|
||||
)
|
||||
|
||||
func TestArgumentLimitDefault(t *testing.T) {
|
||||
testRule(t, "argument_limit_default", &rule.ArgumentsLimitRule{}, &lint.RuleConfig{})
|
||||
}
|
||||
|
||||
func TestArgumentLimit(t *testing.T) {
|
||||
testRule(t, "argument_limit", &rule.ArgumentsLimitRule{}, &lint.RuleConfig{
|
||||
Arguments: []any{int64(3)},
|
||||
|
@ -7,6 +7,10 @@ import (
|
||||
"github.com/mgechev/revive/rule"
|
||||
)
|
||||
|
||||
func TestBannedCharactersDefault(t *testing.T) {
|
||||
testRule(t, "banned_characters_default", &rule.BannedCharsRule{}, &lint.RuleConfig{})
|
||||
}
|
||||
|
||||
// Test banned characters in a const, var and func names.
|
||||
// One banned character is in the comment and should not be checked.
|
||||
// One banned character from the list is not present in the fixture file.
|
||||
|
@ -7,6 +7,10 @@ import (
|
||||
"github.com/mgechev/revive/rule"
|
||||
)
|
||||
|
||||
func TestCognitiveComplexityDefault(t *testing.T) {
|
||||
testRule(t, "cognitive_complexity_default", &rule.CognitiveComplexityRule{}, &lint.RuleConfig{})
|
||||
}
|
||||
|
||||
func TestCognitiveComplexity(t *testing.T) {
|
||||
testRule(t, "cognitive_complexity", &rule.CognitiveComplexityRule{}, &lint.RuleConfig{
|
||||
Arguments: []any{int64(0)},
|
||||
|
@ -7,6 +7,10 @@ import (
|
||||
"github.com/mgechev/revive/rule"
|
||||
)
|
||||
|
||||
func TestContextAsArgumentDefault(t *testing.T) {
|
||||
testRule(t, "context_as_argument_default", &rule.ContextAsArgumentRule{}, &lint.RuleConfig{})
|
||||
}
|
||||
|
||||
func TestContextAsArgument(t *testing.T) {
|
||||
testRule(t, "context_as_argument", &rule.ContextAsArgumentRule{}, &lint.RuleConfig{
|
||||
Arguments: []any{
|
||||
|
@ -7,7 +7,12 @@ import (
|
||||
"github.com/mgechev/revive/rule"
|
||||
)
|
||||
|
||||
func TestCyclomaticDefault(t *testing.T) {
|
||||
testRule(t, "cyclomatic_default", &rule.CyclomaticRule{}, &lint.RuleConfig{})
|
||||
}
|
||||
|
||||
func TestCyclomatic(t *testing.T) {
|
||||
testRule(t, "cyclomatic_default", &rule.CyclomaticRule{}, &lint.RuleConfig{})
|
||||
testRule(t, "cyclomatic", &rule.CyclomaticRule{}, &lint.RuleConfig{
|
||||
Arguments: []any{int64(1)},
|
||||
})
|
||||
|
@ -7,12 +7,14 @@ import (
|
||||
"github.com/mgechev/revive/rule"
|
||||
)
|
||||
|
||||
func TestDotImports(t *testing.T) {
|
||||
args := []any{map[string]any{
|
||||
"allowedPackages": []any{"errors", "context", "github.com/BurntSushi/toml"},
|
||||
}}
|
||||
func TestDotImportsDefault(t *testing.T) {
|
||||
testRule(t, "dot_imports_default", &rule.DotImportsRule{}, &lint.RuleConfig{})
|
||||
}
|
||||
|
||||
testRule(t, "import_dot", &rule.DotImportsRule{}, &lint.RuleConfig{
|
||||
Arguments: args,
|
||||
func TestDotImports(t *testing.T) {
|
||||
testRule(t, "dot_imports", &rule.DotImportsRule{}, &lint.RuleConfig{
|
||||
Arguments: []any{map[string]any{
|
||||
"allowedPackages": []any{"errors", "context", "github.com/BurntSushi/toml"},
|
||||
}},
|
||||
})
|
||||
}
|
||||
|
@ -7,6 +7,10 @@ import (
|
||||
"github.com/mgechev/revive/rule"
|
||||
)
|
||||
|
||||
func TestEnforceRepeatedArgTypeStyleDefault(t *testing.T) {
|
||||
testRule(t, "enforce_repeated_arg_type_style_default", &rule.EnforceRepeatedArgTypeStyleRule{}, &lint.RuleConfig{})
|
||||
}
|
||||
|
||||
func TestEnforceRepeatedArgTypeStyleShort(t *testing.T) {
|
||||
testRule(t, "enforce_repeated_arg_type_style_short_args", &rule.EnforceRepeatedArgTypeStyleRule{}, &lint.RuleConfig{
|
||||
Arguments: []any{"short"},
|
||||
|
@ -7,6 +7,10 @@ import (
|
||||
"github.com/mgechev/revive/rule"
|
||||
)
|
||||
|
||||
func TestLintFileHeaderDefault(t *testing.T) {
|
||||
testRule(t, "lint_file_header_default", &rule.FileHeaderRule{}, &lint.RuleConfig{})
|
||||
}
|
||||
|
||||
func TestLintFileHeader(t *testing.T) {
|
||||
testRule(t, "lint_file_header1", &rule.FileHeaderRule{}, &lint.RuleConfig{
|
||||
Arguments: []any{"foobar"},
|
||||
|
@ -7,6 +7,10 @@ import (
|
||||
"github.com/mgechev/revive/rule"
|
||||
)
|
||||
|
||||
func TestFuncLengthDefault(t *testing.T) {
|
||||
testRule(t, "function_length_default", &rule.FunctionLength{}, &lint.RuleConfig{})
|
||||
}
|
||||
|
||||
func TestFuncLengthLimitsStatements(t *testing.T) {
|
||||
testRule(t, "function_length1", &rule.FunctionLength{}, &lint.RuleConfig{
|
||||
Arguments: []any{int64(2), int64(100)},
|
||||
|
@ -7,6 +7,10 @@ import (
|
||||
"github.com/mgechev/revive/rule"
|
||||
)
|
||||
|
||||
func TestLineLengthLimitDefault(t *testing.T) {
|
||||
testRule(t, "line_length_limit_default", &rule.LineLengthLimitRule{}, &lint.RuleConfig{})
|
||||
}
|
||||
|
||||
func TestLineLengthLimit(t *testing.T) {
|
||||
testRule(t, "line_length_limit", &rule.LineLengthLimitRule{}, &lint.RuleConfig{
|
||||
Arguments: []any{int64(100)},
|
||||
|
@ -7,6 +7,10 @@ import (
|
||||
"github.com/mgechev/revive/rule"
|
||||
)
|
||||
|
||||
func TestMaxControlNestingDefault(t *testing.T) {
|
||||
testRule(t, "max_control_nesting_default", &rule.MaxControlNestingRule{}, &lint.RuleConfig{})
|
||||
}
|
||||
|
||||
func TestMaxControlNesting(t *testing.T) {
|
||||
testRule(t, "max_control_nesting", &rule.MaxControlNestingRule{}, &lint.RuleConfig{
|
||||
Arguments: []any{int64(2)}},
|
||||
|
7
testdata/argument_limit_default.go
vendored
Normal file
7
testdata/argument_limit_default.go
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
package fixtures
|
||||
|
||||
func foo(a, b, c, d, e, f, g, h int) {
|
||||
}
|
||||
|
||||
func bar(a, b, c, d, e, f, g, h, i int64) { // MATCH /maximum number of arguments per function exceeded; max 8 but got 9/
|
||||
}
|
3
testdata/banned_characters_default.go
vendored
Normal file
3
testdata/banned_characters_default.go
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
package fixtures
|
||||
|
||||
const Ω = "Omega"
|
13
testdata/cognitive_complexity_default.go
vendored
Normal file
13
testdata/cognitive_complexity_default.go
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
package pkg
|
||||
|
||||
func l() { // MATCH /function l has cognitive complexity 8 (> max enabled 7)/
|
||||
for i := 1; i <= max; i++ {
|
||||
for j := 2; j < i; j++ {
|
||||
if (i%j == 0) || (i%j == 1) {
|
||||
continue
|
||||
}
|
||||
total += i
|
||||
}
|
||||
}
|
||||
return total && max
|
||||
}
|
9
testdata/context_as_argument_default.go
vendored
Normal file
9
testdata/context_as_argument_default.go
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
package foo
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func x(_ AllowedBeforePtrStruct, ctx context.Context) { // MATCH /context.Context should be the first parameter of a function/
|
||||
}
|
19
testdata/cyclomatic_default.go
vendored
Normal file
19
testdata/cyclomatic_default.go
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
package pkg
|
||||
|
||||
import "log"
|
||||
|
||||
func f(x int) bool { // MATCH /function f has cyclomatic complexity 11 (> max enabled 10)/
|
||||
if x > 0 && true || false {
|
||||
return true
|
||||
} else {
|
||||
log.Printf("non-positive x: %d", x)
|
||||
}
|
||||
switch x {
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
default:
|
||||
}
|
||||
return true || true && true
|
||||
}
|
5
testdata/dot_imports_default.go
vendored
Normal file
5
testdata/dot_imports_default.go
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
package fixtures
|
||||
|
||||
import (
|
||||
. "context" // MATCH /should not use dot imports/
|
||||
)
|
21
testdata/enforce_repeated_arg_type_style_default.go
vendored
Normal file
21
testdata/enforce_repeated_arg_type_style_default.go
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
package fixtures
|
||||
|
||||
func compliantFunc(a, b int, c string) {}
|
||||
|
||||
func nonCompliantFunc1(a int, b int, c string) {}
|
||||
func nonCompliantFunc2(a int, b, c int) {}
|
||||
|
||||
type myStruct struct{}
|
||||
|
||||
func (m myStruct) compliantMethod(a, b int, c string) {}
|
||||
|
||||
func (m myStruct) nonCompliantMethod1(a int, b int, c string) {}
|
||||
func (m myStruct) nonCompliantMethod2(a int, b, c int) {}
|
||||
|
||||
func variadicFunction(a int, b ...int) {}
|
||||
|
||||
func singleArgFunction(a int) {}
|
||||
|
||||
func multiTypeArgs(a int, b string, c float64) {}
|
||||
|
||||
func mixedCompliance(a, b int, c int, d string) {}
|
285
testdata/function_length3.go
vendored
285
testdata/function_length3.go
vendored
@ -21,4 +21,289 @@ func funLengthA() (a int) {
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
}
|
||||
|
134
testdata/function_length_default.go
vendored
Normal file
134
testdata/function_length_default.go
vendored
Normal file
@ -0,0 +1,134 @@
|
||||
package fixtures
|
||||
|
||||
func funLengthA() (a int) { // MATCH /maximum number of statements per function exceeded; max 50 but got 51/
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
println()
|
||||
}
|
||||
|
||||
func funLengthB(file *ast.File, fset *token.FileSet, lineLimit, stmtLimit int) []Message { // MATCH /maximum number of lines per function exceeded; max 75 but got 76/
|
||||
if true {
|
||||
a = b
|
||||
if false {
|
||||
c = d
|
||||
for _, f := range list {
|
||||
_, ok := f.(int64)
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if true {
|
||||
a = b
|
||||
if false {
|
||||
c = d
|
||||
for _, f := range list {
|
||||
_, ok := f.(int64)
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
}
|
||||
switch a {
|
||||
case 1:
|
||||
println()
|
||||
case 2:
|
||||
println()
|
||||
println()
|
||||
default:
|
||||
println()
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
if true {
|
||||
a = b
|
||||
if false {
|
||||
c = d
|
||||
for _, f := range list {
|
||||
_, ok := f.(int64)
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
}
|
||||
switch a {
|
||||
case 1:
|
||||
println()
|
||||
case 2:
|
||||
println()
|
||||
println()
|
||||
default:
|
||||
println()
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
if true {
|
||||
a = b
|
||||
if false {
|
||||
c = d
|
||||
for _, f := range list {
|
||||
_, ok := f.(int64)
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
}
|
||||
switch a {
|
||||
case 1:
|
||||
println()
|
||||
default:
|
||||
println()
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
9
testdata/line_length_limit_default.go
vendored
Normal file
9
testdata/line_length_limit_default.go
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
package fixtures
|
||||
|
||||
import "fmt"
|
||||
|
||||
func foo(a, b int) {
|
||||
fmt.Printf("loooooooooooooooooooooooooooooooooooooooooong line out of limit")
|
||||
}
|
||||
|
||||
// MATCH:6 /line is 81 characters, out of limit 80/
|
1
testdata/lint_file_header_default.go
vendored
Normal file
1
testdata/lint_file_header_default.go
vendored
Normal file
@ -0,0 +1 @@
|
||||
package fixtures
|
16
testdata/max_control_nesting_default.go
vendored
Normal file
16
testdata/max_control_nesting_default.go
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
package fixtures
|
||||
|
||||
func mcn() {
|
||||
if true {
|
||||
if true {
|
||||
if true {
|
||||
if true {
|
||||
if true {
|
||||
if true { // MATCH /control flow nesting exceeds 5/
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user