mirror of
https://github.com/bitnami/minideb.git
synced 2026-06-04 10:13:55 +08:00
3916090dd0
It's an essential package designed for exactly this. It's pretty small, so not a huge cost to putting it back in. The problem is pervasive enough, and it's unlikely that users will know how to fix it, that it's worth us solving it in the base image.
53 lines
2.0 KiB
Bash
Executable File
53 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -eu
|
|
|
|
IMAGE_ID=$1
|
|
|
|
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 60 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'
|