mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-07 00:17:13 +00:00
136 lines
2.8 KiB
Go
136 lines
2.8 KiB
Go
package skip
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"testing"
|
|
|
|
"gotest.tools/assert"
|
|
"gotest.tools/assert/cmp"
|
|
)
|
|
|
|
type fakeSkipT struct {
|
|
reason string
|
|
logs []string
|
|
}
|
|
|
|
func (f *fakeSkipT) Skip(args ...interface{}) {
|
|
buf := new(bytes.Buffer)
|
|
for _, arg := range args {
|
|
buf.WriteString(fmt.Sprintf("%s", arg))
|
|
}
|
|
f.reason = buf.String()
|
|
}
|
|
|
|
func (f *fakeSkipT) Log(args ...interface{}) {
|
|
f.logs = append(f.logs, fmt.Sprintf("%s", args[0]))
|
|
}
|
|
|
|
func (f *fakeSkipT) Helper() {}
|
|
|
|
func version(v string) string {
|
|
return v
|
|
}
|
|
|
|
func TestIfCondition(t *testing.T) {
|
|
skipT := &fakeSkipT{}
|
|
apiVersion := "v1.4"
|
|
If(skipT, apiVersion < version("v1.6"))
|
|
|
|
assert.Equal(t, `apiVersion < version("v1.6")`, skipT.reason)
|
|
assert.Assert(t, cmp.Len(skipT.logs, 0))
|
|
}
|
|
|
|
func TestIfConditionWithMessage(t *testing.T) {
|
|
skipT := &fakeSkipT{}
|
|
apiVersion := "v1.4"
|
|
If(skipT, apiVersion < "v1.6", "see notes")
|
|
|
|
assert.Equal(t, `apiVersion < "v1.6": see notes`, skipT.reason)
|
|
assert.Assert(t, cmp.Len(skipT.logs, 0))
|
|
}
|
|
|
|
func TestIfConditionMultiline(t *testing.T) {
|
|
skipT := &fakeSkipT{}
|
|
apiVersion := "v1.4"
|
|
If(
|
|
skipT,
|
|
apiVersion < "v1.6")
|
|
|
|
assert.Equal(t, `apiVersion < "v1.6"`, skipT.reason)
|
|
assert.Assert(t, cmp.Len(skipT.logs, 0))
|
|
}
|
|
|
|
func TestIfConditionMultilineWithMessage(t *testing.T) {
|
|
skipT := &fakeSkipT{}
|
|
apiVersion := "v1.4"
|
|
If(
|
|
skipT,
|
|
apiVersion < "v1.6",
|
|
"see notes")
|
|
|
|
assert.Equal(t, `apiVersion < "v1.6": see notes`, skipT.reason)
|
|
assert.Assert(t, cmp.Len(skipT.logs, 0))
|
|
}
|
|
|
|
func TestIfConditionNoSkip(t *testing.T) {
|
|
skipT := &fakeSkipT{}
|
|
If(skipT, false)
|
|
|
|
assert.Equal(t, "", skipT.reason)
|
|
assert.Assert(t, cmp.Len(skipT.logs, 0))
|
|
}
|
|
|
|
func SkipBecauseISaidSo() bool {
|
|
return true
|
|
}
|
|
|
|
func TestIf(t *testing.T) {
|
|
skipT := &fakeSkipT{}
|
|
If(skipT, SkipBecauseISaidSo)
|
|
|
|
assert.Equal(t, "SkipBecauseISaidSo", skipT.reason)
|
|
}
|
|
|
|
func TestIfWithMessage(t *testing.T) {
|
|
skipT := &fakeSkipT{}
|
|
If(skipT, SkipBecauseISaidSo, "see notes")
|
|
|
|
assert.Equal(t, "SkipBecauseISaidSo: see notes", skipT.reason)
|
|
}
|
|
|
|
func TestIf_InvalidCondition(t *testing.T) {
|
|
skipT := &fakeSkipT{}
|
|
assert.Assert(t, cmp.Panics(func() {
|
|
If(skipT, "just a string")
|
|
}))
|
|
}
|
|
|
|
func TestIfWithSkipResultFunc(t *testing.T) {
|
|
t.Run("no extra message", func(t *testing.T) {
|
|
skipT := &fakeSkipT{}
|
|
If(skipT, alwaysSkipWithMessage)
|
|
|
|
assert.Equal(t, "alwaysSkipWithMessage: skip because I said so!", skipT.reason)
|
|
})
|
|
t.Run("with extra message", func(t *testing.T) {
|
|
skipT := &fakeSkipT{}
|
|
If(skipT, alwaysSkipWithMessage, "also %v", 4)
|
|
|
|
assert.Equal(t, "alwaysSkipWithMessage: skip because I said so!: also 4", skipT.reason)
|
|
})
|
|
}
|
|
|
|
func alwaysSkipWithMessage() Result {
|
|
return skipResult{}
|
|
}
|
|
|
|
type skipResult struct{}
|
|
|
|
func (s skipResult) Skip() bool {
|
|
return true
|
|
}
|
|
|
|
func (s skipResult) Message() string {
|
|
return "skip because I said so!"
|
|
}
|