xref: /freebsd/usr.bin/env/tests/env_test.sh (revision b697835ce614de2fa30ba066983d7e71c48f34ce)
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