From 0f53f14399788ac73b3e15b80bfcde4999e2f9e8 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Mon, 27 Mar 2023 17:30:19 +0200 Subject: [PATCH] tests: add initial tests for init-main --- lib/tiny-cloud/init-main | 7 +++--- tests/init-main.test | 53 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 3 deletions(-) create mode 100755 tests/init-main.test diff --git a/lib/tiny-cloud/init-main b/lib/tiny-cloud/init-main index 31c4f79..2094141 100644 --- a/lib/tiny-cloud/init-main +++ b/lib/tiny-cloud/init-main @@ -14,9 +14,10 @@ set_hostname() { local fqdn=$(imds @hostname) local host="${fqdn%%\.*}" - echo "$host" > /etc/hostname - hostname -F /etc/hostname - echo -e "127.0.1.1\t$fqdn $host" >> /etc/hosts + mkdir -p "$ROOT"/etc + echo "$host" > "$ROOT"/etc/hostname + $MOCK hostname -F "$ROOT"/etc/hostname + echo -e "127.0.1.1\t$fqdn $host" >> "$ROOT"/etc/hosts } set_ssh_keys() { diff --git a/tests/init-main.test b/tests/init-main.test new file mode 100755 index 0000000..d89e13f --- /dev/null +++ b/tests/init-main.test @@ -0,0 +1,53 @@ +#!/usr/bin/env atf-sh + +. $(atf_get_srcdir)/test_env.sh + +export PREFIX="$srcdir" +export MOCK=echo +lib="$srcdir"/lib/tiny-cloud/init-main + +init_tests \ + set_hostname + + +set_nocloud_meta() { + local metadata="$(cat)" + fake_bin mount <<-EOF + #!/bin/sh + # find last arg which is the mount dir + while ! [ -d "\$1" ]; do + shift + done + printf "%s" "$metadata" \ + > "\$1"/meta-data + EOF + + fake_bin umount <<-EOF + #!/bin/sh + while ! [ -d "\$1" ]; do + shift + done + rm -f "\$1"/meta-data + EOF + mkdir -p mnt +} + +set_hostname_body() { + set_nocloud_meta <<-EOF + hostname: myhostname + EOF + + CLOUD="nocloud" atf_check \ + -o match:"hostname.*-F $PWD/etc/hostname" \ + sh -c ". \"$lib\"; set_hostname" + atf_check -o match:"^myhostname$" cat etc/hostname + + rm etc/hostname + CLOUD="nocloud" atf_check \ + -o not-match:"hostname.*-F $PWD/etc/hostname" \ + sh -c "SKIP_INIT_ACTIONS=set_hostname ; . \"$lib\"; set_hostname" + if test -f etc/hostname; then + atf_fail "etc/hostname should not exist" + fi +} +