1
0
mirror of https://gitlab.alpinelinux.org/alpine/cloud/tiny-cloud.git synced 2026-06-21 00:07:16 +03:00
tiny-cloud/tests/tiny-cloud.test
2026-06-07 16:01:36 +00:00

115 lines
2.7 KiB
Bash
Executable File

#!/usr/bin/env atf-sh
# vim:set filetype=sh:
# shellcheck shell=sh
. $(atf_get_srcdir)/test_env.sh
export PREFIX="$srcdir"
export MOCK=echo
PROVIDERS="alpine aws azure digitalocean gcp incus hetzner nocloud oci scaleway"
init_tests \
tiny_cloud_help \
tiny_cloud_autodetect \
tiny_cloud_autodetect_unknown \
tiny_cloud_disabled \
no_metadata_boot \
no_userdata_early \
no_userdata_main \
no_userdata_final
tiny_cloud_help_body() {
for provider in $PROVIDERS; do
CLOUD="$provider" atf_check -s not-exit:0 \
-e match:"Usage" \
tiny-cloud --invalid
CLOUD="$provider" atf_check -s exit:0 \
-o match:"Usage" \
tiny-cloud --help
done
}
tiny_cloud_autodetect_body() {
mkdir -p sys/class/dmi/id
cat > sys/class/dmi/id/modalias <<-EOT
dmi:bvnScaleway:bvrScaleway:bd10/22/2024:br1.0:svnScaleway:pnScaleway:pvr:rvnKVM:rnScaleway:rvr:cvnScaleway:ct1:cvr:sku:
EOT
atf_check -s exit:0 \
-o match:"^scaleway$" \
tiny-cloud autodetect
}
tiny_cloud_autodetect_unknown_body() {
mkdir -p etc proc var/lib/cloud
echo "CLOUD=auto" > etc/tiny-cloud.conf
echo scaleway > var/lib/cloud/.autodetect
echo "quiet ds=scaleway console=ttyS0" > proc/cmdline
atf_check -s exit:1 \
-o match:"^unknown$" \
tiny-cloud autodetect
}
tiny_cloud_disabled_body() {
mkdir -p etc
touch etc/tiny-cloud.disabled
for provider in $PROVIDERS; do
CLOUD="$provider" atf_check -s exit:0 \
-e match:"tiny-cloud disabled" \
tiny-cloud early
done
}
no_metadata_boot_body() {
for provider in $PROVIDERS; do
CLOUD="$provider" atf_check \
-e not-match:"unknown" \
-e not-match:"not found" \
-e not-match:"o such file" \
-o match:"rc-update add.*sshd" \
-e not-match:"mount:" \
tiny-cloud boot
done
}
no_userdata_early_body() {
for provider in $PROVIDERS; do
CLOUD="$provider" atf_check \
-e not-match:"unknown" \
-e match:"save_userdata.*done" \
-e not-match:"mount:" \
tiny-cloud early
done
}
no_userdata_main_body() {
for provider in $PROVIDERS; do
# we should not set empty hostname
# we should not create .ssh dir for non-existing user
CLOUD="$provider" atf_check \
-e not-match:"mount:" \
-e not-match:"failed" \
-e not-match:"unknown" \
-o not-match:"hostname.*-F" \
-o not-match:"chown.*/\.ssh" \
tiny-cloud main
for i in etc/hostname .ssh; do
if [ -e "$i" ]; then
atf_fail "$i should not have been created"
fi
done
done
}
no_userdata_final_body() {
for provider in $PROVIDERS; do
CLOUD="$provider" atf_check \
-e not-match:"unknown" \
-e match:"bootstrap_complete: done" \
tiny-cloud final
CLOUD="$provider" atf_check \
-e match:"bootstrap marked incomplete" \
tiny-cloud --bootstrap incomplete
done
}