official-images/test/tests/override-cmd/run.sh

30 lines
1.0 KiB
Bash
Executable File

#!/usr/bin/env bash
set -Eeuo pipefail
image="$1"
# test that we can override the CMD with echo
# https://github.com/docker-library/official-images/blob/d28cb89e79417cac50c2a8ae163a9b3b79167f79/README.md#consistency
hello="world-$RANDOM-$RANDOM"
cmd=( echo "Hello $hello" )
case "$image" in
*windowsservercore* | *nanoserver*)
cmd=( cmd /Q /S /C "${cmd[*]}" )
;;
esac
# test first with --entrypoint to verify that we even have echo (tests for single-binary images FROM scratch, essentially)
if ! testOutput="$(docker run --rm --entrypoint "${cmd[0]}" "$image" "${cmd[@]:1}" 2>/dev/null)"; then
echo >&2 'image does not appear to contain "echo" -- assuming single-binary image'
exit
fi
testOutput="$(tr -d '\r' <<<"$testOutput")" # Windows gives us \r\n ... :D
[ "$testOutput" = "Hello $hello" ]
# now test with normal command to verify the default entrypoint is OK
output="$(docker run --rm "$image" "${cmd[@]}")"
output="$(tr -d '\r' <<<"$output")" # Windows gives us \r\n ... :D
[ "$output" = "Hello $hello" ]