#!/bin/bash function printHelp() { >&2 echo "\ USAGE: $0 -p PKG_FILE [-D | -R] Tests installing and then uninstalling the provided package files. At least one of -D or -R must be provided to indicate Debian or RPM packages. " } if [ $# -eq 0 ]; then printHelp exit 1 fi PKG="" IS_DEB="" IS_RPM="" while getopts hp:DR arg; do case "$arg" in h) printHelp; exit 1;; p) PKG="$OPTARG";; D) IS_DEB="1";; R) IS_RPM="1";; esac done if [ -z "$PKG" ] ; then printHelp exit 1 fi if [ "${IS_DEB}${IS_RPM}" -ne "1" ]; then printHelp exit 1 fi set -e SRCDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" function dockerTest() { local pkgSrc="$1" local pkgDst="$2" local typeArg="$3" docker run --rm \ --mount "type=bind,src=$SRCDIR/_install_uninstall.bash,dst=/usr/bin/install_uninstall.bash,ro=1" \ --mount "type=bind,src=${pkgSrc},dst=${pkgDst},ro=1" \ "$BASE_IMAGE" install_uninstall.bash "$typeArg" } if [ -n "$IS_DEB" ]; then # Latest is the most recent LTS, and Rolling is the most recent release. for BASE_IMAGE in ubuntu:latest ubuntu:rolling ; do if [ -n "$PKG" ]; then dockerTest "$PKG" /data.deb -D fi done fi if [ -n "$IS_RPM" ]; then # Latest is the most recent LTS, and Rolling is the most recent release. for BASE_IMAGE in centos:6 centos:7 ; do if [ -n "$PKG" ]; then dockerTest "$PKG" /data.rpm -R fi done fi