diff --git a/t/Dockerfile b/t/Dockerfile new file mode 100644 index 0000000..e0131ea --- /dev/null +++ b/t/Dockerfile @@ -0,0 +1,47 @@ +# TODO - switch to sipwise internal one +FROM debian:jessie + +# Important! Update this no-op ENV variable when this Dockerfile +# is updated with the current date. It will force refresh of all +# of the base images and things like `apt-get update` won't be using +# old cached versions when the Dockerfile is built. +ENV REFRESHED_AT 2015-11-13 + +# mirrors behind httpredir randomly throw `Error reading from server. Remote end closed connection` +# and we want to be independent from any external services anyway +# TODO - the release-trunk-jessie is too dynamic yet, though required for some build/test dependencies +RUN apt-get update && apt-get -y install apt-transport-https wget +RUN echo "# generated by Dockerfile from data-hal at $(date)\n\ +deb https://debian.sipwise.com/debian jessie main non-free\n\ +deb https://debian.sipwise.com/debian jessie-updates main non-free\n\ +deb https://debian-security.sipwise.com/debian-security jessie-security main contrib non-free\n\ +deb https://deb.sipwise.com/autobuild/ release-trunk-jessie main\n" > /etc/apt/sources.list +RUN wget -O /etc/apt/trusted.gpg.d/sipwise.gpg https://deb.sipwise.com/spce/sipwise.gpg + +RUN apt-get update +RUN apt-get install --assume-yes perl libstrictures-perl libboolean-perl libclone-perl \ + libtest-roo-perl libtype-tiny-perl liburi-perl libhttp-message-perl libjson-perl \ + liblog-any-perl libmime-types-perl libdata-hal-perl libfile-slurp-perl libtest-fatal-perl \ + liblog-any-adapter-callback-perl liblog-any-adapter-filehandle-perl libtap-formatter-junit-perl + +RUN echo 'prove -I /code/lib -v --color -l --formatter TAP::Formatter::JUnit' >>/root/.bash_history +RUN echo 'prove -I /code/lib --color -l' >>/root/.bash_history +RUN echo './t/testrunner' >>/root/.bash_history + +WORKDIR /code/ + +################################################################################ +# Instructions for usage +# ---------------------- +# When you want to build the base image from scratch (jump to the next section if you don't want to build yourself!): +# % docker build --tag="data-hal-jessie" . +# % docker run --rm -i -t -v $(pwd)/..:/code:rw data-hal-jessie:latest bash +# +# Use the existing docker image: +# % docker pull docker1.mgm.sipwise.com/data-hal-jessie +# % docker run --rm -i -t -v $(pwd)/..:/code:rw docker1.mgm.sipwise.com/data-hal-jessie:latest bash +# +# Inside docker (the command is in history, just press UP button): +# ./t/testrunner +# +################################################################################ diff --git a/t/testrunner b/t/testrunner new file mode 100755 index 0000000..25c9442 --- /dev/null +++ b/t/testrunner @@ -0,0 +1,33 @@ +#!/bin/bash +# This script is used for running the tests with proper arguments +# from within Jenkins + +set -e +set -u + +RC=0 + +if [ -d /results ] ; then + # Running from Jenkins (RW) + RESULTS="/results" + + cd "/code" + prove --formatter TAP::Formatter::JUnit -l -I/code/lib | \ + tee -a "${RESULTS}/results.xml" || RC=$? +else + # Running locally in Docker + RESULTS="./results" + mkdir -p "${RESULTS}" + + prove -v --color -l -I/code/lib | tee -a "${RESULTS}/results.pretty" || RC=$? +fi + +echo "Finished test execution, test execution returned with exit code ${RC}." +for file in "${RESULTS}/results.pretty" "${RESULTS}/results.xml" ; do + if [ -f "$file" ] ; then + echo "Test results available at ${file}" + fi +done + +exit "${RC}" +