1334af5e4SDag-Erling Smørgrav# 2334af5e4SDag-Erling Smørgrav# Copyright (c) 2024 Klara, Inc. 3334af5e4SDag-Erling Smørgrav# 4334af5e4SDag-Erling Smørgrav# SPDX-License-Identifier: BSD-2-Clause 5334af5e4SDag-Erling Smørgrav# 6334af5e4SDag-Erling Smørgrav 7334af5e4SDag-Erling Smørgravmagic_words="Squeamish $$ Ossifrage" 8334af5e4SDag-Erling Smørgrav 9334af5e4SDag-Erling Smørgravatf_test_case basic 10334af5e4SDag-Erling Smørgravbasic_head() 11334af5e4SDag-Erling Smørgrav{ 12334af5e4SDag-Erling Smørgrav atf_set "descr" "Basic test case" 13334af5e4SDag-Erling Smørgrav} 14334af5e4SDag-Erling Smørgravbasic_body() 15334af5e4SDag-Erling Smørgrav{ 16334af5e4SDag-Erling Smørgrav atf_check -o match:"^magic_words=${magic_words}\$" \ 17334af5e4SDag-Erling Smørgrav env magic_words="${magic_words}" 18334af5e4SDag-Erling Smørgrav export MAGIC_WORDS="${magic_words}" 19334af5e4SDag-Erling Smørgrav atf_check -o match:"^MAGIC_WORDS=${magic_words}\$" \ 20334af5e4SDag-Erling Smørgrav env 21334af5e4SDag-Erling Smørgrav unset MAGIC_WORDS 22334af5e4SDag-Erling Smørgrav} 23334af5e4SDag-Erling Smørgrav 24334af5e4SDag-Erling Smørgravatf_test_case unset 25334af5e4SDag-Erling Smørgravunset_head() 26334af5e4SDag-Erling Smørgrav{ 27334af5e4SDag-Erling Smørgrav atf_set "descr" "Unset a variable" 28334af5e4SDag-Erling Smørgrav} 29334af5e4SDag-Erling Smørgravunset_body() 30334af5e4SDag-Erling Smørgrav{ 31334af5e4SDag-Erling Smørgrav export MAGIC_WORDS="${magic_words}" 32334af5e4SDag-Erling Smørgrav atf_check -o not-match:"^MAGIC_WORDS=" \ 33334af5e4SDag-Erling Smørgrav env -u MAGIC_WORDS 34334af5e4SDag-Erling Smørgrav unset MAGIC_WORDS 35334af5e4SDag-Erling Smørgrav} 36334af5e4SDag-Erling Smørgrav 37334af5e4SDag-Erling Smørgravatf_test_case empty 38334af5e4SDag-Erling Smørgravempty_head() 39334af5e4SDag-Erling Smørgrav{ 40334af5e4SDag-Erling Smørgrav atf_set "descr" "Empty environment" 41334af5e4SDag-Erling Smørgrav} 42334af5e4SDag-Erling Smørgravempty_body() 43334af5e4SDag-Erling Smørgrav{ 44334af5e4SDag-Erling Smørgrav atf_check env -i 45334af5e4SDag-Erling Smørgrav} 46334af5e4SDag-Erling Smørgrav 47334af5e4SDag-Erling Smørgravatf_test_case true 48334af5e4SDag-Erling Smørgravtrue_head() 49334af5e4SDag-Erling Smørgrav{ 50334af5e4SDag-Erling Smørgrav atf_set "descr" "Run true" 51334af5e4SDag-Erling Smørgrav} 52334af5e4SDag-Erling Smørgravtrue_body() 53334af5e4SDag-Erling Smørgrav{ 54334af5e4SDag-Erling Smørgrav atf_check env true 55334af5e4SDag-Erling Smørgrav} 56334af5e4SDag-Erling Smørgrav 57334af5e4SDag-Erling Smørgravatf_test_case false 58334af5e4SDag-Erling Smørgravfalse_head() 59334af5e4SDag-Erling Smørgrav{ 60334af5e4SDag-Erling Smørgrav atf_set "descr" "Run false" 61334af5e4SDag-Erling Smørgrav} 62334af5e4SDag-Erling Smørgravfalse_body() 63334af5e4SDag-Erling Smørgrav{ 64334af5e4SDag-Erling Smørgrav atf_check -s exit:1 env false 65334af5e4SDag-Erling Smørgrav} 66334af5e4SDag-Erling Smørgrav 67334af5e4SDag-Erling Smørgravatf_test_case false 68334af5e4SDag-Erling Smørgravfalse_head() 69334af5e4SDag-Erling Smørgrav{ 70334af5e4SDag-Erling Smørgrav atf_set "descr" "Run false" 71334af5e4SDag-Erling Smørgrav} 72334af5e4SDag-Erling Smørgravfalse_body() 73334af5e4SDag-Erling Smørgrav{ 74334af5e4SDag-Erling Smørgrav atf_check -s exit:1 env false 75334af5e4SDag-Erling Smørgrav} 76334af5e4SDag-Erling Smørgrav 77334af5e4SDag-Erling Smørgravatf_test_case altpath 78334af5e4SDag-Erling Smørgravaltpath_head() 79334af5e4SDag-Erling Smørgrav{ 80334af5e4SDag-Erling Smørgrav atf_set "descr" "Use alternate path" 81334af5e4SDag-Erling Smørgrav} 82334af5e4SDag-Erling Smørgravaltpath_body() 83334af5e4SDag-Erling Smørgrav{ 84334af5e4SDag-Erling Smørgrav echo "echo ${magic_words}" >magic_words 85334af5e4SDag-Erling Smørgrav chmod 0755 magic_words 866f6166e4SDag-Erling Smørgrav atf_check -s exit:125 -e match:"must specify command" \ 876f6166e4SDag-Erling Smørgrav env -P "${PWD}" 88334af5e4SDag-Erling Smørgrav atf_check -s exit:127 -e match:"No such file" \ 89334af5e4SDag-Erling Smørgrav env magic_words 90334af5e4SDag-Erling Smørgrav atf_check -o inline:"${magic_words}\n" \ 91334af5e4SDag-Erling Smørgrav env -P "${PWD}" magic_words 92334af5e4SDag-Erling Smørgrav} 93334af5e4SDag-Erling Smørgrav 94a0dfb066SDag-Erling Smørgravatf_test_case equal 95a0dfb066SDag-Erling Smørgravequal_head() 96a0dfb066SDag-Erling Smørgrav{ 97a0dfb066SDag-Erling Smørgrav atf_set "descr" "Command name contains equal sign" 98a0dfb066SDag-Erling Smørgrav} 99a0dfb066SDag-Erling Smørgravequal_body() 100a0dfb066SDag-Erling Smørgrav{ 101a0dfb066SDag-Erling Smørgrav echo "echo ${magic_words}" >"magic=words" 102a0dfb066SDag-Erling Smørgrav chmod 0755 "magic=words" 103a0dfb066SDag-Erling Smørgrav atf_check -o match:"^${PWD}/magic=words$" \ 104a0dfb066SDag-Erling Smørgrav env "${PWD}/magic=words" 1056f6166e4SDag-Erling Smørgrav atf_check -s exit:125 -e match:"must specify command" \ 106a0dfb066SDag-Erling Smørgrav env -P "${PATH}:${PWD}" "magic=words" 107a0dfb066SDag-Erling Smørgrav atf_check -o inline:"${magic_words}\n" \ 108a0dfb066SDag-Erling Smørgrav env command "${PWD}/magic=words" 109a0dfb066SDag-Erling Smørgrav atf_check -o inline:"${magic_words}\n" \ 110a0dfb066SDag-Erling Smørgrav env PATH="${PATH}:${PWD}" command "magic=words" 111a0dfb066SDag-Erling Smørgrav} 112a0dfb066SDag-Erling Smørgrav 1136f6166e4SDag-Erling Smørgravatf_test_case chdir 1146f6166e4SDag-Erling Smørgravchdir_head() 1156f6166e4SDag-Erling Smørgrav{ 1166f6166e4SDag-Erling Smørgrav atf_set "descr" "Change working directory" 1176f6166e4SDag-Erling Smørgrav} 1186f6166e4SDag-Erling Smørgravchdir_body() 1196f6166e4SDag-Erling Smørgrav{ 1206f6166e4SDag-Erling Smørgrav local subdir="dir.$$" 1216f6166e4SDag-Erling Smørgrav atf_check -o inline:"${PWD}\n" \ 1226f6166e4SDag-Erling Smørgrav env pwd 1236f6166e4SDag-Erling Smørgrav atf_check -s exit:125 -e match:"must specify command" \ 1246f6166e4SDag-Erling Smørgrav env -C "${subdir}" 1256f6166e4SDag-Erling Smørgrav atf_check -s exit:125 \ 1266f6166e4SDag-Erling Smørgrav -e match:"cannot change directory to '${subdir}':" \ 1276f6166e4SDag-Erling Smørgrav env -C "${subdir}" pwd 1286f6166e4SDag-Erling Smørgrav atf_check mkdir "${subdir}" 1296f6166e4SDag-Erling Smørgrav atf_check -o inline:"${PWD}/${subdir}\n" \ 1306f6166e4SDag-Erling Smørgrav env -C "${subdir}" pwd 1316f6166e4SDag-Erling Smørgrav} 1326f6166e4SDag-Erling Smørgrav 133c2d93a80SDag-Erling Smørgravatf_test_case stdout 134c2d93a80SDag-Erling Smørgravstdout_head() 135c2d93a80SDag-Erling Smørgrav{ 136c2d93a80SDag-Erling Smørgrav atf_set descr "Failure to write to stdout" 137c2d93a80SDag-Erling Smørgrav} 138c2d93a80SDag-Erling Smørgravstdout_body() 139c2d93a80SDag-Erling Smørgrav{ 140c2d93a80SDag-Erling Smørgrav ( 141c2d93a80SDag-Erling Smørgrav trap "" PIPE 142*b697835cSDag-Erling Smørgrav sleep 1 143c2d93a80SDag-Erling Smørgrav env 2>stderr 144c2d93a80SDag-Erling Smørgrav echo $? >result 145c2d93a80SDag-Erling Smørgrav ) | true 146c2d93a80SDag-Erling Smørgrav atf_check -o inline:"1\n" cat result 147c2d93a80SDag-Erling Smørgrav atf_check -o match:"stdout" cat stderr 148c2d93a80SDag-Erling Smørgrav} 149c2d93a80SDag-Erling Smørgrav 150334af5e4SDag-Erling Smørgravatf_init_test_cases() 151334af5e4SDag-Erling Smørgrav{ 152334af5e4SDag-Erling Smørgrav atf_add_test_case basic 153334af5e4SDag-Erling Smørgrav atf_add_test_case unset 154334af5e4SDag-Erling Smørgrav atf_add_test_case empty 155334af5e4SDag-Erling Smørgrav atf_add_test_case true 156334af5e4SDag-Erling Smørgrav atf_add_test_case false 157334af5e4SDag-Erling Smørgrav atf_add_test_case altpath 158a0dfb066SDag-Erling Smørgrav atf_add_test_case equal 1596f6166e4SDag-Erling Smørgrav atf_add_test_case chdir 160c2d93a80SDag-Erling Smørgrav atf_add_test_case stdout 161334af5e4SDag-Erling Smørgrav} 162