git » chasquid » commit 9ef4816

test: Add Dockerfile

author Alberto Bertogli
2018-03-26 00:13:39 UTC
committer Alberto Bertogli
2018-03-27 07:37:11 UTC
parent 1b28734e446e3c03014e51a52d455b366289db89

test: Add Dockerfile

This patch adds a Docker configuration file, to build an image that can
run the integration and stress tests.

It might be used for configuring automated testing infrastructure in
subsequent patches.

test/Dockerfile +42 -0

diff --git a/test/Dockerfile b/test/Dockerfile
new file mode 100644
index 0000000..8f61212
--- /dev/null
+++ b/test/Dockerfile
@@ -0,0 +1,42 @@
+# 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
+COPY . .
+
+# Make debconf/frontend non-interactive, to avoid distracting output about the
+# lack of $TERM.
+ENV DEBIAN_FRONTEND noninteractive
+
+# Install the basics for the integration tests.
+RUN apt-get update -q
+RUN apt-get install -y -q python3 msmtp
+
+# Packages for the (optional) dovecot integration test.
+RUN apt-get install -y -q gettext-base dovecot-imapd
+
+# Packages for the (optional) exim integration test.
+RUN apt-get install -y -q exim4-daemon-light
+RUN cd test/t-02-exim && mkdir -p .exim4 && ln -s /usr/sbin/exim4 .exim4/
+
+RUN go get -d ./...
+RUN go install ./...
+
+# 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
+RUN chown -R chasquid:chasquid .
+USER chasquid
+
+# Tests expect the $USER variable set.
+ENV USER chasquid