debian-forge-composer/test/cases/cross-distro.sh
2021-09-14 10:43:09 +01:00

91 lines
2.5 KiB
Bash
Executable file

#!/usr/bin/bash
#
# Test the available distributions. Only allow releases for the current distro.
#
APISOCKET=/run/weldr/api.socket
source /etc/os-release
# Build a grep pattern that results in an empty string when the expected distros are installed
case $ID in
fedora)
PATTERN="\[|\]|fedora-"
;;
rhel)
MAJOR=$(echo "$VERSION_ID" | sed -E 's/\..*//')
case $MAJOR in
8)
# RHEL 8 only supports building RHEL 8
PATTERN="\[|\]|rhel-$MAJOR"
;;
*)
# RHEL 9 and later support building all releases
PATTERN="\[|\]|rhel-*"
;;
esac
;;
centos)
MAJOR=$(echo "$VERSION_ID" | sed -E 's/\..*//')
case $MAJOR in
8)
# CentOS 8 only supports building CentosOS 8
PATTERN="\[|\]|centos-$MAJOR"
;;
*)
# CentOS 9 and later support building all releases
PATTERN="\[|\]|centos-*"
;;
esac
;;
*)
echo "Unknown distribution id: $ID 😢"
exit 1
;;
esac
# Provision the software under test.
/usr/libexec/osbuild-composer-test/provision.sh
echo "====> Finished Provisioning system"
echo "====> Starting $(basename "$0")"
# Remove repo overrides installed by provision.sh, these will show up in the
# list and cause it to fail and are not needed since this test doesn't build
# anything.
sudo rm -f /etc/osbuild-composer/repositories/*
sudo systemctl try-restart osbuild-composer
echo "Repository directories:"
ls -lR /etc/osbuild-composer/repositories/
ls -lR /usr/share/osbuild-composer/repositories/
echo "Repositories installed by the rpm:"
rpm -qil osbuild-composer-core
# composer-cli in RHEL 8 doesn't support distro command, so use curl for this test
if [ ! -e $APISOCKET ]; then
echo "osbuild-composer.socket has not been started. 😢"
exit 1
fi
if ! sudo curl -s --unix-socket $APISOCKET http:///localhost/api/status > /dev/null; then
echo "osbuild-composer server not available. 😢"
exit 1
fi
if ! DISTROS=$(sudo curl -s --unix-socket $APISOCKET http:///localhost/api/v1/distros/list); then
echo "osbuild-composer server error getting distros list. 😢"
exit 1
fi
REMAINDER=$(echo "$DISTROS" | jq -r '.distros' | grep -v -E "$PATTERN")
if [ -n "$REMAINDER" ]; then
echo "🔥 Unexpected distros installed:"
echo "$REMAINDER"
exit 1
else
echo "🎉 All tests passed."
exit 0
fi