#! /usr/libexec/atf-sh
#-
# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright 2026 Simon J Gerraty
#

atf_test_case safe_set_reject
safe_set_reject_head()
{
	atf_set "descr" "Verify that safe_set rejects shell meta chars"
}

safe_set_reject_body()
{
	__name="$(atf_get ident)"
	__input=$(mktemp -t "${__name}.input")

	cat <<'EOF' > "$__input"
: ignore=this
# ignore this too
# avoid # in the middle of a quoted value like:
# oops="this # will cause synatx error"
quoted="this and that"
simple=ok          # trailing comments ignored
  also=ok          # leading white-space ignored
	 also_wik=ok
host=`hostname`'   # backtics - delete line
os=$(uname -s)     # $() - delete line
oops=one;hostname' # replace ; with _ so: one_hostname
regex="prefix[abc-]*" # []* replaced with _
EOF

	__output=$(safe_set < "$__input" | tr '"\012' '\047;')
	atf_check_equal "$__output" "quoted='this and that';simple=ok;also=ok;also_wik=ok;oops=one_hostname_;regex='prefix_abc-__';"
}


atf_test_case safe_set_xtras
safe_set_xtras_head()
{
	atf_set "descr" "Verify that safe_set handles extra allowed chars"
}

safe_set_xtras_body()
{
	__name="$(atf_get ident)"
	__input=$(mktemp -t "${__name}.input")

	cat <<'EOF' > "$__input"
: ignore=this
# ignore this too
regex="prefix[abc-]*"
EOF

	__output=$(safe_set "[]*" < "$__input" | tr '"\012' '\047;')
	atf_check_equal "$__output" "regex='prefix[abc-]*';"
}

atf_init_test_cases()
{
	SAFE_EVAL=${SAFE_EVAL:-/libexec/safe_eval.sh}
	. $SAFE_EVAL
	atf_add_test_case safe_set_reject
	atf_add_test_case safe_set_xtras
}
