#!/usr/bin/env bash # Интерактивные тесты pkica.bash-completion: реальный bash + readline в tmux, # нажатие TAB и проверка содержимого строки ввода. # Запуск (из WSL/Linux, нужен tmux): bash tests/test_interactive.sh root=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd) command -v tmux >/dev/null || { echo "tmux not found"; exit 1; } sess=pkica-compl-$$ tmp=$(mktemp -d) trap 'tmux kill-session -t "$sess" 2>/dev/null; rm -rf "$tmp"' EXIT mkdir "$tmp/outdir" touch "$tmp/request.req" cat >"$tmp/rc" <\n' "$input" else fail=$((fail + 1)) printf 'FAIL %s\n expected: [%s]\n got: [%s]\n' "$input" "$expected" "$got" fi tmux send-keys -t "$sess" C-u tmux send-keys -t "$sess" C-l sleep 0.2 } check "pkica ce" "pkica cert-registry " check "pkica ca sig" "pkica ca signing-key " check "pkica ca signing-key cha" "pkica ca signing-key change-usage " check "pkica ca authority show --fo" "pkica ca authority show --format " check "pkica ca authority show --format Y" "pkica ca authority show --format Yaml " check "pkica ca authority show --format=J" "pkica ca authority show --format=Json " check "pkica ca new-root-cert -v Y" "pkica ca new-root-cert -v Years:" check "pkica ca template add -d Su" "pkica ca template add -d SubCa " check "pkica ca issue-cert -f " "pkica ca issue-cert -f " check "pkica ca issue-cert -f req" "pkica ca issue-cert -f request.req " check "pkica ca crl get -o " "pkica ca crl get -o outdir/" check "./pkica ra fo" "./pkica ra folder " # Пустое слово: при TAB TAB в списке должны быть и файлы, и каталоги. tmux send-keys -t "$sess" C-u "pkica ca issue-cert -f " Tab Tab sleep 0.5 screen=$(tmux capture-pane -p -t "$sess") if [[ $screen == *request.req* && $screen == *outdir/* ]]; then pass=$((pass + 1)) echo "PASS pkica ca issue-cert -f lists files" else fail=$((fail + 1)) printf 'FAIL pkica ca issue-cert -f lists files\n%s\n' "$screen" fi echo echo "passed: $pass, failed: $fail" ((fail == 0))