home: hub: mkinitfs

ref: 060a3bfee6e66d05743013c846cefa15c888dfed
dir: /tests/initramfs-init.test/

View raw version
#!/usr/bin/env atf-sh

. $(atf_get_srcdir)/test_env.sh

init_tests \
	initramfs_init_cmdline_root \
	initramfs_init_blacklist \
	initramfs_init_tmpfs_root \
	initramfs_init_tmpfs_root_modloop_sign \
	initramfs_init_tmpfs_root_net_apkovl

fake_cmdline() {
	mkdir -p proc
	echo "$@" > proc/cmdline
}

fake_bin() {
	mkdir -p bin
	cat > bin/"$1"
	chmod +x bin/"$1"
}

fake_sysroot_init() {
	mkdir -p sysroot/sbin
	touch sysroot/sbin/init
	chmod +x sysroot/sbin/init
}

fake_switch_root() {
	fake_bin switch_root <<-EOF
		#!/bin/sh
		echo "switch_root OK"
	EOF
}

initramfs_init_cmdline_root_body() {
	fake_cmdline "root=/dev/vda1"
	fake_switch_root

	atf_check -o match:"Alpine Init" \
		-o match:"nlplug-findfs" \
		-o match:"mount.*-o ro.*/dev/vda1.*/sysroot" \
		-o match:"switch_root OK" \
		initramfs-init
}

initramfs_init_blacklist_body() {
	fake_cmdline "root=/dev/vda1 blacklist=dummy,evbug"
	fake_switch_root
	atf_check -o match:"switch_root OK" \
		initramfs-init

	atf_check -o match:"blacklist dummy" \
		-o match:"blacklist evbug" \
		cat etc/modprobe.d/*
}

initramfs_init_tmpfs_root_body() {
	fake_cmdline ""
	fake_switch_root
	fake_sysroot_init
	atf_check \
		-o match:"nlplug-findfs" \
		-o match:"mount.*tmpfs .*/sysroot" \
		-o match:"switch_root OK" \
		initramfs-init
}

initramfs_init_tmpfs_root_modloop_sign_body() {
	fake_cmdline ""
	fake_switch_root
	fake_sysroot_init
	mkdir -p var/cache/misc
	touch var/cache/misc/modloop.SIGN.RSA.ncopa-4d1b7620.rsa.pub
	atf_check \
		-o match:"switch_root OK" \
		initramfs-init
	atf_check \
		test -f sysroot/var/cache/misc/modloop.SIGN.RSA.ncopa-4d1b7620.rsa.pub
}

initramfs_init_tmpfs_root_net_apkovl_body() {
	fake_cmdline "apkovl=https://example.com/{UUID}/foo.apkovl.tar.gz"
	fake_switch_root
	fake_sysroot_init

	mkdir -p sys/class/dmi/id
	echo "c7c29fe0-cf90-4024-8ba3-208387fc7ac6" > sys/class/dmi/id/product_uuid

	atf_check \
		-o match:"wget .* https://example.com/c7c29fe0-cf90-4024-8ba3-208387fc7ac6/foo.apkovl.tar.gz" \
		initramfs-init
}