#!/bin/bash # Checks the prain front door against a fake prain checkout and a fake rc-service. # Run: bash scripts/test_prain.sh set -u p=$(cd "$(dirname "$0")" && pwd)/prain t=$(mktemp -d) trap 'rm -rf "$t"' EXIT mkdir -p "$t/root/scripts" "$t/root/.venv/bin" "$t/bin" cat > "$t/root/scripts/env.sh" < "$t/root/.venv/bin/prain" <<'EOF' #!/bin/sh if [ "$1" = --help ]; then printf 'usage: prain [-h] {check,web} ...\n\npositional arguments:\n {check,web}\n' printf ' check validate\n' exit 0 fi echo "prain $* env=$FROM_ENV_SH cwd=$PWD" EOF printf '#!/bin/sh\necho "$*"\n' > "$t/bin/rc-service" chmod +x "$t/root/.venv/bin/prain" "$t/bin/rc-service" cat > "$t/prain.conf" </dev/null; echo $?)" check wait-without-url 0 "$("$p" wait a; echo $?)" check wait-times-out 1 "$("$p" wait b 2>/dev/null; echo $?)" check up-in-order "--user prain.a start --user prain.b start" "$("$p" up)" check down-in-reverse "--user prain.b stop --user prain.a stop" "$("$p" down)" check status-one "--user prain.b status" "$("$p" status b)" check deps-ok-when-running 0 "$("$p" deps b; echo $?)" check deps-fail-without-starting-them "prain: x needs b, which is not running (no answer from http://127.0.0.1:9/never). Start it first: prain up b 1" "$("$p" deps x 2>&1; echo $?)" check help-merges-stack-commands "usage: prain [-h] {up,down,restart,status,logs,check,web} ... positional arguments: {up,down,restart,status,logs,check,web} up [NAME...] start services (all: a b), each waits until ready down [NAME...] stop services, in reverse order restart [NAME...] restart services status [NAME...] show whether services run logs [NAME...] follow service logs ($HOME/.local/state/prain/NAME.log) check validate" "$("$p" --help)" exit $fail