Files
couchos/tests/test_setup_modes.sh
jackmhny 04ef2a0d74
Some checks failed
ci / verify (push) Has been cancelled
feat: build CouchOS Melee appliance
2026-08-03 02:52:28 +02:00

56 lines
1.4 KiB
Bash

#!/usr/bin/env bash
set -Eeuo pipefail
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
TMP_DIR="$(mktemp -d)"
trap 'rm -rf "${TMP_DIR}"' EXIT
BIN_DIR="${TMP_DIR}/bin"
LOG_FILE="${TMP_DIR}/calls.log"
mkdir -p "${BIN_DIR}"
cat >"${BIN_DIR}/id" <<'EOF'
#!/usr/bin/env bash
set -Eeuo pipefail
if [[ "${1:-}" == "-u" && "${2:-}" == "couch" ]]; then
exit 1
fi
exec /usr/bin/id "$@"
EOF
cat >"${BIN_DIR}/useradd" <<EOF
#!/usr/bin/env bash
set -Eeuo pipefail
printf 'useradd %s\n' "\$*" >>"${LOG_FILE}"
EOF
chmod 0755 "${BIN_DIR}/id" "${BIN_DIR}/useradd"
output="$(
PATH="${BIN_DIR}:${PATH}" \
bash -c '
set -Eeuo pipefail
source "'"${REPO_ROOT}"'/setup.sh"
MODE="dry-run"
COUCH_UID=""
ensure_couch_user
ensure_runtime_config
'
)"
grep -Fq '[dry-run] useradd --create-home --home-dir /home/couch --shell /bin/bash --user-group couch' <<<"${output}"
grep -Fq '/run/user/<missing-couch-uid>' <<<"${output}"
check_output_file="${TMP_DIR}/check.out"
set +e
PATH="${BIN_DIR}:${PATH}" bash "${REPO_ROOT}/setup.sh" --phase couch --check >"${check_output_file}" 2>&1
status=$?
set -e
if [[ "${status}" -eq 0 ]]; then
printf 'expected setup --check to fail on missing couch user\n' >&2
exit 1
fi
grep -Fq '[check] FAIL couch user missing' "${check_output_file}"
grep -Fq '[check] FAIL /home/couch/.config/couchd/runtime.json missing' "${check_output_file}"