mirror of
https://blitiri.com.ar/repos/chasquid
synced 2025-12-23 15:37:01 +00:00
The integration tests depend on having a DNS server that resolves "localhost", which is unfortunate but currently unavoidable given glibc's limitations ($HOSTALIASES only works on DNS-level aliases, and does not do lookups in /etc/hosts). Even under docker, this makes the tests depend on the DNS server, and whether it resolves localhost or not. In order to make the docker tests more hermetic and isolated from the environment, this patch introduces a docker entrypoint that, within the container, will launch minidns and override /etc/resolv.conf to use it. This guarantees that the tests will be able to resolve localhost, and also avoid accidental reliance on external DNS zones.
59 lines
1.7 KiB
Docker
59 lines
1.7 KiB
Docker
# Docker file for creating a docker container that can run the tests.
|
|
#
|
|
# Create the image:
|
|
# docker build -t chasquid-test -f test/Dockerfile .
|
|
#
|
|
# Run the tests:
|
|
# docker run --rm chasquid-test make test
|
|
#
|
|
# Get a shell inside the image (for debugging):
|
|
# docker run -it --entrypoint=/bin/bash chasquid-test
|
|
|
|
FROM golang:latest
|
|
|
|
WORKDIR /go/src/blitiri.com.ar/go/chasquid
|
|
|
|
# Make debconf/frontend non-interactive, to avoid distracting output about the
|
|
# lack of $TERM.
|
|
ENV DEBIAN_FRONTEND noninteractive
|
|
|
|
RUN apt-get update -q
|
|
|
|
# Install the required packages for the integration tests.
|
|
RUN apt-get install -y -q python3 msmtp
|
|
|
|
# Install the optional packages for the integration tests.
|
|
RUN apt-get install -y -q \
|
|
gettext-base dovecot-imapd \
|
|
exim4-daemon-light
|
|
|
|
# Install sudo, needed for the docker entrypoint.
|
|
RUN apt-get install -y -q sudo
|
|
|
|
# Prepare exim.
|
|
RUN mkdir -p test/t-02-exim/.exim4 \
|
|
&& ln -s /usr/sbin/exim4 test/t-02-exim/.exim4
|
|
|
|
# Install binaries for the (optional) DKIM integration test.
|
|
RUN go get github.com/driusan/dkim/... \
|
|
&& go install github.com/driusan/dkim/cmd/dkimsign \
|
|
&& go install github.com/driusan/dkim/cmd/dkimverify \
|
|
&& go install github.com/driusan/dkim/cmd/dkimkeygen
|
|
|
|
# Copy into the container. Everything below this line will not be cached.
|
|
COPY . .
|
|
|
|
# Install chasquid and its dependencies.
|
|
RUN go get -d -v ./... && go install -v ./...
|
|
|
|
# Custom entry point, which uses our own DNS server.
|
|
ENTRYPOINT ["./test/util/docker_entrypoint.sh"]
|
|
|
|
# Don't run the tests as root: it makes some integration tests more difficult,
|
|
# as for example Exim has hard-coded protections against running as root.
|
|
RUN useradd -m chasquid && chown -R chasquid:chasquid .
|
|
#USER chasquid
|
|
|
|
# Tests expect the $USER variable set.
|
|
#ENV USER chasquid
|