open-nomad/.semgrep/go_tests.yml

136 lines
3.8 KiB
YAML

# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: MPL-2.0
rules:
# Check `require` or `assert` testify overrides.
# https://semgrep.dev/s/PgAq
- id: "tests-no-testify-override"
patterns:
- pattern-either:
- pattern: "assert := assert.New(($T : *testing.T))"
- pattern: "require := require.New(($T : *testing.T))"
message: "Override of testify package"
languages:
- "go"
severity: "WARNING"
# TODO(luiz): figure out how to do a 'delete line' fix.
fix: " "
paths:
exclude: ["*"]
include:
- "*_test.go"
# Check `assert` and `require` calls without `t` as first argument.
# https://semgrep.dev/s/wZW0
- id: "tests-no-assert-without-t"
patterns:
- pattern: "assert.$FUNC($...ARGS)"
- pattern-not: "assert.$FUNC($T,...)"
- pattern-inside: |
func $TEST_FUNC($T *testing.T) {
...
}
# Nested functions have a different signature, so they are tested in a
# different rule.
- pattern-not-inside: |
$T.Run(..., func(...) {
...
})
- metavariable-pattern:
metavariable: $FUNC
patterns:
# Calls to `New` are checked in `tests-no-testify-override`.
- pattern-not: New
message: "Calling `assert.$FUNC` without `$T`"
languages:
- "go"
severity: "WARNING"
fix: "assert.$FUNC($T, $...ARGS)"
paths:
exclude: ["*"]
include:
- "*_test.go"
- id: "tests-no-assert-without-t-nested"
patterns:
- pattern: "assert.$FUNC($...ARGS)"
- pattern-not: "assert.$FUNC($T,...)"
- pattern-inside: |
($T_ROOT : *testing.T).Run(..., func($T *testing.T) {
...
})
- metavariable-pattern:
metavariable: $FUNC
patterns:
# Calls to `New` are checked in `tests-no-testify-override`.
- pattern-not: New
message: "Calling `assert.$FUNC` without `$T`"
languages:
- "go"
severity: "WARNING"
fix: "assert.$FUNC($T, $...ARGS)"
paths:
exclude: ["*"]
include:
- "*_test.go"
- id: "tests-no-require-without-t"
patterns:
- pattern: "require.$FUNC($...ARGS)"
- pattern-not: "require.$FUNC($T,...)"
- pattern-inside: |
func $TEST_FUNC($T *testing.T) {
...
}
# Nested functions have a different signature, so they are tested in a
# different rule.
- pattern-not-inside: |
$T.Run(..., func(...) {
...
})
- metavariable-pattern:
metavariable: $FUNC
patterns:
# Calls to `New` are checked in `tests-no-testify-override`.
- pattern-not: New
message: "Calling `require.$FUNC` without `$T`"
languages:
- "go"
severity: "WARNING"
fix: "require.$FUNC($T, $...ARGS)"
paths:
exclude: ["*"]
include:
- "*_test.go"
- id: "tests-no-require-without-t-nested"
patterns:
- pattern: "require.$FUNC($...ARGS)"
- pattern-not: "require.$FUNC($T,...)"
- pattern-inside: |
($T_ROOT : *testing.T).Run(..., func($T *testing.T) {
...
})
- metavariable-pattern:
metavariable: "$FUNC"
patterns:
# Calls to `New` are checked in `tests-no-testify-override`.
- pattern-not: "New"
message: "Calling `require.$FUNC` without `$T`"
languages:
- "go"
severity: "WARNING"
fix: "require.$FUNC($T, $...ARGS)"
paths:
exclude: ["*"]
include:
- "*_test.go"
- id: "tests-no-parallel"
patterns:
- pattern: "t.Parallel()"
message: "Use ci.Parallel(t) instead of t.Parallel()"
languages:
- "go"
severity: "WARNING"
fix: "ci.Parallel(t)"
paths:
include:
- "*_test.go"