File size: 1,396 Bytes
e089492 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | package shellconfig
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestHookRemoveByName(t *testing.T) {
t.Parallel()
result := loadScript(t, `hook add PreToolUse --command "echo fmt" --name fmt
hook add PreToolUse --command "echo lint" --name lint
hook remove PreToolUse --name fmt`)
arr := result["hooks"].(map[string]any)["PreToolUse"].([]any)
require.Len(t, arr, 1)
require.Equal(t, "lint", arr[0].(map[string]any)["name"])
}
func TestHookRemoveByNameAlias(t *testing.T) {
t.Parallel()
result := loadScript(t, `hook add PreToolUse --command "echo fmt" --name fmt
hook add PreToolUse --command "echo lint" --name lint
hook rm PreToolUse --name lint`)
arr := result["hooks"].(map[string]any)["PreToolUse"].([]any)
require.Len(t, arr, 1)
require.Equal(t, "fmt", arr[0].(map[string]any)["name"])
}
func TestHookClearEvent(t *testing.T) {
t.Parallel()
result := loadScript(t, `hook add PreToolUse --command "echo a" --name a
hook add PreToolUse --command "echo b" --name b
hook remove PreToolUse`)
hooks := result["hooks"].(map[string]any)
require.NotContains(t, hooks, "PreToolUse")
}
func TestHookAddRequiresCommand(t *testing.T) {
t.Parallel()
path := t.TempDir() + "/crushrc"
_, err := LoadShellConfig(t.Context(), path, []byte(`hook add PreToolUse --name x`))
require.Error(t, err)
require.Contains(t, err.Error(), "--command is required")
}
|