48 lines
1.3 KiB
Go
48 lines
1.3 KiB
Go
package hooks
|
|
|
|
import "testing"
|
|
|
|
func ptr[T any](v T) *T { return &v }
|
|
|
|
func TestHookConfigValidate(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
h HookConfig
|
|
wantErr bool
|
|
}{
|
|
{"valid command", HookConfig{Type: "command", Command: "echo hi"}, false},
|
|
{"empty type defaults ok", HookConfig{Command: "echo hi"}, false},
|
|
{"empty command", HookConfig{Type: "command", Command: ""}, true},
|
|
{"whitespace command", HookConfig{Type: "command", Command: " "}, true},
|
|
{"wrong type", HookConfig{Type: "wasm", Command: "echo hi"}, true},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
err := tt.h.Validate()
|
|
if (err != nil) != tt.wantErr {
|
|
t.Fatalf("Validate() err = %v, wantErr = %v", err, tt.wantErr)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestHookConfigTimeoutSeconds(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
h HookConfig
|
|
want int
|
|
}{
|
|
{"nil timeout uses default", HookConfig{}, DefaultTimeoutSeconds},
|
|
{"positive override", HookConfig{Timeout: ptr(10)}, 10},
|
|
{"zero override ignored", HookConfig{Timeout: ptr(0)}, DefaultTimeoutSeconds},
|
|
{"negative override ignored", HookConfig{Timeout: ptr(-5)}, DefaultTimeoutSeconds},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := tt.h.TimeoutSeconds(); got != tt.want {
|
|
t.Fatalf("TimeoutSeconds() = %d, want %d", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|