mirror of
https://github.com/bitnami/minideb.git
synced 2026-06-04 10:13:55 +08:00
74 lines
2.6 KiB
Bash
Executable File
74 lines
2.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -eu
|
|
|
|
IMAGE_ID=$1
|
|
DIST=$2
|
|
|
|
function desc() {
|
|
echo "================================"
|
|
echo -n "TEST: "
|
|
echo "$@"
|
|
echo "================================"
|
|
}
|
|
|
|
function test() {
|
|
test_extra_args '' "$@"
|
|
}
|
|
|
|
function test_extra_args() {
|
|
local extra_args=$1
|
|
shift
|
|
docker run --rm $extra_args -e DEBIAN_FRONTEND=noninteractive "$IMAGE_ID" "$@"
|
|
echo ""
|
|
echo TEST: OK
|
|
echo ""
|
|
}
|
|
|
|
desc "Checking that apt is installed"
|
|
test dpkg -l apt
|
|
|
|
desc "Checking that a package can be installed with apt"
|
|
test bash -c 'apt-get update && apt-get -y install less && less --help >/dev/null'
|
|
|
|
desc "Checking that a package can be installed with install_packages and that it removes cache dirs"
|
|
test bash -c 'install_packages less && less --help >/dev/null && [ ! -e /var/cache/apt/archives ] && [ ! -e /var/lib/apt/lists ]'
|
|
|
|
desc "Checking that the debootstrap dir wasn't left in the image"
|
|
test bash -c '[ ! -e /debootstrap ]'
|
|
|
|
desc "Check that all base packages are correctly installed, including dependencies"
|
|
# Ask apt to install all packages that are already installed, has the effect of checking the
|
|
# dependencies are correctly available
|
|
test bash -c 'apt-get update && (dpkg-query -W -f \${Package} | while read pkg; do apt-get install $pkg; done)'
|
|
|
|
desc "Check that install_packages doesn't loop forever on failures"
|
|
# This won't install and will fail. The key is that the retry loop will stop after a few iterations.
|
|
# We check that we didn't install the package afterwards, just in case a package gets added with that name.
|
|
# We wrap the whole thing in a timeout so that it doesn't loop forever. It's not ideal to have a timeout as there may be spurious failures if the network is slow.
|
|
test bash -c 'timeout 360 bash -c "(install_packages thispackagebetternotexist || true) && ! dpkg -l thispackagebetternotexist"'
|
|
|
|
# See https://github.com/bitnami/minideb/issues/17
|
|
desc "Checking that the terminfo is valid when running with -t (#17)"
|
|
echo "" | test_extra_args '-t' bash -c 'install_packages procps && top -d1 -n1 -b'
|
|
|
|
MYSQL_PACKAGE=default-mysql-server
|
|
if [[ "$DIST" == "jessie"* ]]; then
|
|
MYSQL_PACKAGE=mysql-server
|
|
fi
|
|
|
|
# See https://github.com/bitnami/minideb/issues/16
|
|
desc "Check that we can install mysql-server (#16)"
|
|
test install_packages $MYSQL_PACKAGE
|
|
|
|
function shadow_check() {
|
|
local path=$1
|
|
test bash -c "(! cut -d: -f3 < $path | grep -v 17885 >/dev/null) || (cat $path && false)"
|
|
}
|
|
|
|
desc "Check that all users have a fixed day as the last password change date in /etc/shadow"
|
|
shadow_check /etc/shadow
|
|
|
|
desc "Check that all users have a fixed day as the last password change date in /etc/shadow-"
|
|
shadow_check /etc/shadow-
|