Files
chasquid/test/util/docker_entrypoint.sh
Alberto Bertogli 948cee1ce1 Improve bash quoting, and other similar best practices
This patch updates the shell scripts with some of the common best
practices, which should make them more resilient to unusual failures and
unexpected environments (in particular, directories with spaces).

Most of these were identified by shellcheck.
2022-11-13 11:09:19 +00:00

52 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
#
# Script that is used as a Docker entrypoint.
#
# It starts minidns with a zone resolving "localhost", and overrides
# /etc/resolv.conf to use it. Then launches docker CMD.
#
# This is used for more hermetic Docker test environments.
set -e
. "$(dirname "$0")/../util/lib.sh"
init
# Go to the root of the repository.
cd ../..
# Undo the EXIT trap, so minidns continues to run in the background.
trap - EXIT
set -v
# The DNS server resolves only "localhost"; tests will rely on this, as we
# $HOSTALIASES to point our test hostnames to localhost, so it needs to
# resolve.
echo "
localhost A 127.0.0.1
localhost AAAA ::1
" > /tmp/zones
start-stop-daemon --start --background \
--exec /tmp/minidns \
-- --zones=/tmp/zones
echo "nameserver 127.0.0.1" > /etc/resolv.conf
echo "nameserver ::1" >> /etc/resolv.conf
# Wait until the minidns resolver comes up.
wait_until_ready 53
# Disable the Go proxy, since now there is no external network access.
# Modules should be already be made available in the environment.
export GOPROXY=off
# Launch arguments, which come from docker CMD, as "chasquid" user.
# Running tests as root makes some integration tests more difficult, as for
# example Exim has hard-coded protections against running as root.
sudo -u "chasquid" -g "chasquid" \
--set-home \
--preserve-env PATH="$PATH" \
-- "$@"