#!/usr/bin/env bash set -euo pipefail script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" tmp_dir="$(mktemp -d)" trap 'rm -rf "$tmp_dir"' EXIT cat > "$tmp_dir/docker" <<'SH' #!/usr/bin/env bash case "$1" in info) [ "${DOCKER_STUB_STATE:-}" != unavailable ] ;; container) [ "${DOCKER_STUB_STATE:-}" != absent ] ;; inspect) printf '%s\n' "${DOCKER_STUB_MOUNT:-}" ;; *) exit 2 ;; esac SH chmod +x "$tmp_dir/docker" export PATH="$tmp_dir:$PATH" DOCKER_STUB_STATE=absent "$script_dir/check-redis-persistence.sh" DOCKER_STUB_MOUNT="bind|$(cd "$script_dir/../data" && pwd -P)/redis" "$script_dir/check-redis-persistence.sh" for state in unavailable no_mount wrong_mount; do case "$state" in unavailable) export DOCKER_STUB_STATE=unavailable DOCKER_STUB_MOUNT='' ;; no_mount) export DOCKER_STUB_STATE=present DOCKER_STUB_MOUNT='' ;; wrong_mount) export DOCKER_STUB_STATE=present DOCKER_STUB_MOUNT='bind|/other/redis' ;; esac if "$script_dir/check-redis-persistence.sh" > /dev/null 2>&1; then echo "unsafe Redis state accepted: $state" >&2 exit 1 fi done echo 'Redis persistence guard tests passed'