#!/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" <>"${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/' <<<"${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}"