#!/usr/bin/env atf-sh

. $(atf_get_srcdir)/test_env.sh
init_tests \
	setup_timezone_usage \
	setup_timezone_copy \
	setup_timezone_install \
	setup_timezone_z_compat \
	setup_timezone_none \
	setup_timezone_interactive \
	setup_timezone_SIGINT

setup_timezone_usage_body() {
	test_usage setup-timezone
}

setup_timezone_copy_body() {
	init_env
	mkdir -p usr/share/zoneinfo/Europe
	touch usr/share/zoneinfo/Europe/Oslo
	atf_check -s exit:0 \
		-o match:"apk add .*tzdata" \
		-o match:"apk del" \
		-e empty \
		setup-timezone Europe/Oslo
}

setup_timezone_install_body() {
	init_env
	mkdir etc
	mkdir -p usr/share/zoneinfo/Europe
	touch usr/share/zoneinfo/Europe/Oslo
	atf_check -s exit:0 \
		-o match:"apk add .*tzdata" \
		-o not-match:"apk add.*--virtual" \
		-o not-match:"apk del" \
		-e empty \
		setup-timezone -i Europe/Oslo
}

setup_timezone_z_compat_body() {
	init_env
	mkdir -p usr/share/zoneinfo/Europe
	touch usr/share/zoneinfo/Europe/Oslo
	atf_check -s exit:0 \
		-o match:"apk add .*tzdata" \
		-o match:"apk del" \
		-e empty \
		setup-timezone -z Europe/Oslo
}

setup_timezone_none_body() {
	init_env
	atf_check -s exit:0 \
		-o empty \
		-e empty \
		setup-timezone none
}

setup_timezone_interactive_body() {
	init_env
	mkdir -p usr/share/zoneinfo/Europe
	touch usr/share/zoneinfo/Europe/Oslo
	( echo "Europe"
	  echo "?"
	  echo "Oslo"
	) > answers
	atf_check -s exit:0 \
		-o match:"apk add .*tzdata" \
		-o match:"apk del" \
		-e empty \
		setup-timezone < answers
}

setup_timezone_SIGINT_body() {
	init_env
	if timeout --version 2>/dev/null | grep -q GNU; then
		preserve_status="--preserve-status"
	fi
	atf_check -s exit:1 \
		-o match:"apk add .*tzdata" \
		-o match:"apk del" \
		-e empty \
		timeout $preserve_status -s TERM 0.5 setup-timezone
}
