#!/bin/sh # # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # # This file is part of dobuild. # Copyright (c) 2019 Contributors as noted in the AUTHORS file. # # SPDX-License-Identifier: MPL-2.0 set -e enabled() { { [ "$1" -ne 0 ] || [ "$1" = 'true' ]; } 2>/dev/null } physical_pwd() { pwd -P 2>/dev/null || pwd } try_canonicalize() { readlink -f "$@" 2>/dev/null || realpath "$@" } canonicalize() { if ! try_canonicalize "$1" 2>/dev/null; then echo "$(cd "$(dirname "$1")" && physical_pwd)/$(basename "$1")" fi } scriptdir() { dirname "$(canonicalize "${BASH_SOURCE:-$1}")" } if [ $# -eq 0 ]; then set -- 'bats' 'tests/' fi DOBUILDDIR="${DOBUILDDIR:-"$(scriptdir "$0")"}" PATH="${DOBUILDDIR}/bin:$PATH" ENABLE_BUILD="${ENABLE_BUILD:-0}" PROJECTDIR="${DOBUILD_COMPOSEPROJECTDIR:-"$PWD"}" DOBUILD_HOSTCONTAINER="${DOBUILD_HOSTCONTAINER:-"$(get_container_id.sh)"}" || true COMPOSEENV_PROJECTPATH="$(canonicalize "${COMPOSEENV_PROJECTPATH:-$PROJECTDIR}")" export DOBUILDDIR export COMPOSEENV_VOLUMESFROM="${COMPOSEENV_VOLUMESFROM:-$DOBUILD_HOSTCONTAINER}" export COMPOSEENV_PROJECTPATH if [ -n "$COMPOSEENV_VOLUMESFROM" ]; then DIND_VOLUME_METHOD='dind-volumes_from.yml' else DIND_VOLUME_METHOD='dind-bind_mount.yml' fi set -- -f docker-compose.yml -f "tests/runners/$DIND_VOLUME_METHOD" run --rm check "$@" if enabled "${ENABLE_BUILD}"; then docker_compose build 0<&- || exit $? fi exec docker_compose "$@"