xref: /freebsd/usr.bin/env/tests/env_test.sh (revision 6f6166e49c78f6460732c02bbbba6fcc218221cf)
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
86*6f6166e4SDag-Erling Smørgrav	atf_check -s exit:125 -e match:"must specify command" \
87*6f6166e4SDag-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"
105*6f6166e4SDag-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
113*6f6166e4SDag-Erling Smørgravatf_test_case chdir
114*6f6166e4SDag-Erling Smørgravchdir_head()
115*6f6166e4SDag-Erling Smørgrav{
116*6f6166e4SDag-Erling Smørgrav	atf_set "descr" "Change working directory"
117*6f6166e4SDag-Erling Smørgrav}
118*6f6166e4SDag-Erling Smørgravchdir_body()
119*6f6166e4SDag-Erling Smørgrav{
120*6f6166e4SDag-Erling Smørgrav	local subdir="dir.$$"
121*6f6166e4SDag-Erling Smørgrav	atf_check -o inline:"${PWD}\n" \
122*6f6166e4SDag-Erling Smørgrav		  env pwd
123*6f6166e4SDag-Erling Smørgrav	atf_check -s exit:125 -e match:"must specify command" \
124*6f6166e4SDag-Erling Smørgrav		  env -C "${subdir}"
125*6f6166e4SDag-Erling Smørgrav	atf_check -s exit:125 \
126*6f6166e4SDag-Erling Smørgrav		  -e match:"cannot change directory to '${subdir}':" \
127*6f6166e4SDag-Erling Smørgrav		  env -C "${subdir}" pwd
128*6f6166e4SDag-Erling Smørgrav	atf_check mkdir "${subdir}"
129*6f6166e4SDag-Erling Smørgrav	atf_check -o inline:"${PWD}/${subdir}\n" \
130*6f6166e4SDag-Erling Smørgrav		  env -C "${subdir}" pwd
131*6f6166e4SDag-Erling Smørgrav}
132*6f6166e4SDag-Erling Smørgrav
133334af5e4SDag-Erling Smørgravatf_init_test_cases()
134334af5e4SDag-Erling Smørgrav{
135334af5e4SDag-Erling Smørgrav	atf_add_test_case basic
136334af5e4SDag-Erling Smørgrav	atf_add_test_case unset
137334af5e4SDag-Erling Smørgrav	atf_add_test_case empty
138334af5e4SDag-Erling Smørgrav	atf_add_test_case true
139334af5e4SDag-Erling Smørgrav	atf_add_test_case false
140334af5e4SDag-Erling Smørgrav	atf_add_test_case altpath
141a0dfb066SDag-Erling Smørgrav	atf_add_test_case equal
142*6f6166e4SDag-Erling Smørgrav	atf_add_test_case chdir
143334af5e4SDag-Erling Smørgrav}
144