#!/usr/bin/env bash # Smoke-test the interactive console REPL end-to-end: prompt format, # stateful cd / home / return / `infinito` jump, relative-then-absolute # command resolve, and executable-leaf-runs-instead-of-cd. Runs `python # -m cli.console` with a scripted stdin and asserts the prompt sequence # the REPL produced. set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # shellcheck source=scripts/tests/workspace/utils/common.sh source "${SCRIPT_DIR}/../utils/common.sh" cd "${REPO_ROOT}" log_file="$(mktemp -t infinito-console-smoke.XXXXXX)" trap 'rm -f "${log_file}"' EXIT printf '%s\n' \ 'ls' \ 'administration' \ 'ls' \ 'infinito meta' \ '..' \ '/administration/deploy' \ '../..' \ 'infinito administration' \ '../meta' \ '/' \ 'exit' | "${PYTHON}" -m cli.console \ >"${log_file}" 2>&1 || true # nocheck: shell-or-true -- grandfathered: worked in practice; TODO: sharpen to catch only the exact tolerated error assert_log_contains() { local needle="${1}" if ! grep -qF -- "${needle}" "${log_file}"; then echo "[FAIL] console output missing: ${needle}" >&2 echo "--- captured console output ---" >&2 cat "${log_file}" >&2 exit 1 fi echo "[OK] console output contains: ${needle}" } assert_log_contains "infinito> " assert_log_contains "infinito administration> " assert_log_contains "infinito meta> " assert_log_contains "infinito administration deploy> " assert_log_contains "🗂️" assert_log_contains "⚙️" assert_log_contains "administration" assert_log_contains "deploy" echo "Console smoke test passed."