diff --git a/Makefile b/Makefile index 21b0004..c60c9e0 100644 --- a/Makefile +++ b/Makefile @@ -87,12 +87,12 @@ test: update-readme .PHONY: _test-integration _test-integration: - ./tests/test.sh $(IMAGE) $(ARCH) + ./tests/start-ci.sh $(IMAGE) $(NAME) $(VERSION) $(DOCKER_TAG) $(ARCH) .PHONY: update-readme update-readme: cat "./README.md" \ - | perl -0 -pe "s/.*/\n$$(./tests/get-modules.sh $(IMAGE) $(ARCH))\n/s" \ + | perl -0 -pe "s/.*/\n$$(./tests/get-modules.sh $(IMAGE) $(NAME) $(VERSION) $(DOCKER_TAG) $(ARCH))\n/s" \ > "./README.md.tmp" yes | mv -f "./README.md.tmp" "./README.md" git diff --quiet || { echo "Build Changes"; git diff; git status; false; } diff --git a/tests/01-version.sh b/tests/01-version.sh new file mode 100755 index 0000000..24d2944 --- /dev/null +++ b/tests/01-version.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +set -eu +set -o pipefail + +IMAGE="${1}" +#NAME="${2}" +VERSION="${3}" +TAG="${4}" +ARCH="${5}" + + +echo +echo "\$ docker run --rm --platform ${ARCH} --entrypoint=php ${IMAGE}:${TAG} -v | grep -E '^PHP ${VERSION}'" +docker run --rm --platform "${ARCH}" --entrypoint=php "${IMAGE}:${TAG}" -v | grep -E "^PHP ${VERSION}" +echo + +echo +echo "\$ docker run --rm --platform ${ARCH} --entrypoint=php-fpm ${IMAGE}:${TAG} -v | grep -E '^PHP ${VERSION}'" +docker run --rm --platform "${ARCH}" --entrypoint=php-fpm "${IMAGE}:${TAG}" -v | grep -E "^PHP ${VERSION}" +echo diff --git a/tests/test.sh b/tests/02-server-index.php.sh similarity index 97% rename from tests/test.sh rename to tests/02-server-index.php.sh index 5557491..5db1dfc 100755 --- a/tests/test.sh +++ b/tests/02-server-index.php.sh @@ -2,8 +2,13 @@ set -eu set -o pipefail -CONT_PHP="${1}" -ARCH="${2}" +IMAGE="${1}" +#NAME="${2}" +#VERSION="${3}" +TAG="${4}" +ARCH="${5}" + + ### ### Variables @@ -72,7 +77,7 @@ chmod 0644 "${DOC_ROOT_HOST}/error.php" ### ### Start containers ### -PHP_DID="$( docker run -d --platform "${ARCH}" --name "${NAME_PHP}" -v "${DOC_ROOT_HOST}:${DOC_ROOT_CONT}" "${CONT_PHP}" )" +PHP_DID="$( docker run -d --platform "${ARCH}" --name "${NAME_PHP}" -v "${DOC_ROOT_HOST}:${DOC_ROOT_CONT}" "${IMAGE}:${TAG}" )" sleep 4 WEB_DID="$( docker run -d --platform "${ARCH}" --name "${NAME_WEB}" -v "${DOC_ROOT_HOST}:${DOC_ROOT_CONT}" -v "${CONFIG_HOST}:${CONFIG_CONT}" -p "${WWW_PORT}:80" --link "${NAME_PHP}" "${CONT_WEB}" )" sleep 4 diff --git a/tests/get-modules.sh b/tests/get-modules.sh index 996bf06..641444b 100755 --- a/tests/get-modules.sh +++ b/tests/get-modules.sh @@ -4,10 +4,14 @@ set -e set -u set -o pipefail -IMAGE="${1:-devilbox/php-fpm-5.2}" -ARCH="${2:-linux/amd64}" -MODULES="$( docker run --rm -t --platform "${ARCH}" --entrypoint=php "${IMAGE}" -m \ +IMAGE="${1}" +#NAME="${2}" +#VERSION="${3}" +TAG="${4}" +ARCH="${5}" + +MODULES="$( docker run --rm -t --platform "${ARCH}" --entrypoint=php "${IMAGE}:${TAG}" -m \ | grep -vE '(^\[)|(^\s*$)' \ | sort -u -f )" diff --git a/tests/start-ci.sh b/tests/start-ci.sh new file mode 100755 index 0000000..1777030 --- /dev/null +++ b/tests/start-ci.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +set -e +set -u +set -o pipefail + +### +### Variables +### + +IFS=$'\n' + +# Current directory +CWD="$( dirname "${0}" )" +IMAGE="${1}" +NAME="${2}" +VERSION="${3}" +TAG="${4}" +ARCH="${5}" + +declare -a TESTS=() + + + + +### +### Run tests +### + +# Get all [0-9]+.sh test files +FILES="$( find "${CWD}" -regex "${CWD}/[0-9].+\.sh" | sort -u )" +for f in ${FILES}; do + TESTS+=("${f}") +done + +# Start a single test +if [ "${#}" -eq "3" ]; then + sh -c "${TESTS[${2}]} ${IMAGE} ${NAME} ${VERSION} ${TAG} ${ARCH}" + +# Run all tests +else + for i in "${TESTS[@]}"; do + echo "################################################################################" + echo "# [${CWD}/${i}] ${IMAGE}:${TAG} ${NAME}-${VERSION} (${ARCH})" + echo "################################################################################" + sh -c "${i} ${IMAGE} ${NAME} ${VERSION} ${TAG} ${ARCH}" + done +fi